You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

实现连接凸包的Bubblesets风格曲线:数学方法技术问询

实现Bubblesets风格凸包连接路径的核心思路

1. 定位连接锚点与切线方向

  • 在两个经Catmull-Rom平滑后的凸包曲线上,找到彼此距离最近的一对点P1(凸包A上)和P2(凸包B上)。可通过采样曲线上的密集点对,计算欧氏距离筛选出最小距离点对。
  • 提取P1、P2在各自凸包曲线上的切线方向:Catmull-Rom样条的切线可通过相邻控制点差值计算,或对平滑曲线求一阶导数得到。需将切线方向调整为凸包外侧(指向两个凸包之间的区域,避免连接曲线向内延伸)。

2. 构建连接曲线的核心结构

Bubblesets的连接路径本质是「两段偏移曲线 + 一段过渡圆弧」的组合:

  • 偏移曲线生成:从P1出发,沿着凸包A的法线方向(切线逆时针转90度,根据外侧方向调整)移动固定距离(设为w/2,w是连接路径的宽度),生成一段与凸包A平滑衔接的偏移曲线;同理从P2出发生成凸包B的偏移曲线。
  • 过渡圆弧衔接:用一段半径为w/2的圆弧连接两条偏移曲线的端点Q1和Q2。确保圆弧与两条偏移曲线平滑相切:
    1. 圆弧圆心O需满足:OQ1 = OQ2 = w/2;
    2. OQ1的方向与Q1处偏移曲线的切线垂直,OQ2的方向与Q2处偏移曲线的切线垂直。
      解这组几何约束即可确定圆心位置,进而绘制圆弧。

3. 关键数学细节

  • 偏移曲线计算:对Catmull-Rom平滑后的凸包曲线,取曲线上每个采样点,沿着该点的法线方向(外侧)移动w/2,将这些偏移点用Catmull-Rom或贝塞尔曲线重新拟合,得到平滑的偏移曲线。
  • 切线与法线转换:若切线方向向量为(dx, dy),则外侧法线向量为(-dy, dx)(逆时针转90度)或(dy, -dx)(顺时针转90度),需根据凸包的朝向选择正确的方向。

4. 边界情况优化

  • 若两个凸包存在重叠,需将锚点调整到重叠区域的边缘,避免连接曲线穿过凸包内部。
  • 可通过调整w(连接宽度)、过渡圆弧的半径(或改用三次贝塞尔曲线调整曲率),优化连接路径的视觉效果。

内容的提问来源于stack exchange,提问作者pele

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 10:55:02