Graphics 绘制没有交点或蝴蝶结的bezier斑点
我正在尝试做一些看起来很简单的事情(画一个像变形虫一样的活生生的块状形状——类似于下面的第二张图片),但我逐渐意识到这更复杂 下面的第一张图片显示了我使用此功能的位置:Graphics 绘制没有交点或蝴蝶结的bezier斑点,graphics,processing,bezier,Graphics,Processing,Bezier,我正在尝试做一些看起来很简单的事情(画一个像变形虫一样的活生生的块状形状——类似于下面的第二张图片),但我逐渐意识到这更复杂 下面的第一张图片显示了我使用此功能的位置: 6个点(简单类的实例),可在特定约束条件下自行随机移动(主要是与屏幕上定义点的最大距离) 绿点是由“我的点”实例定义的区域的动态计算中心 我只是按照点实例(a、b、c等)的数组顺序绘制向量 我对矢量图形了解不多(因此这是一个学习练习),但我明白我需要在我的点上强加一个更连贯的顺序和一套规则 它们不能穿过其他点之间的假想线(
- 6个点(简单类的实例),可在特定约束条件下自行随机移动(主要是与屏幕上定义点的最大距离)
- 绿点是由“我的点”实例定义的区域的动态计算中心
- 我只是按照点实例(a、b、c等)的数组顺序绘制向量
- 它们不能穿过其他点之间的假想线(b在下面穿过c-d)
- 他们需要和他们的近邻联系在一起
这些不是贝塞尔曲线,或者您没有向我们显示所有的控制点。你应该让控制点循环以避免丑陋的a-f直线。在每次迭代中,找到所有点的质心/平均值,然后计算从质心到每个点的径向,并按该方向对数组排序。这是一种方法,至少…@YvesDaoust-你说得对-我使用的是Processing的curve/curveVertex方法,它显然是Catmull-Rom的一个实现。之所以这样做,是因为它比beziers更简单。如果我解决了上面描述的问题,我将切换到beziers——这条直线很难看!“内疚感”不在凯特穆尔的名单上。你的问题相当令人不安。一个开始的方法可以考虑由控制点到它们的质心的线的平分线所形成的“星”,并确保每个控制点保持在它自己的扇区内。这不会完全避免曲线交叉,但会确保六边形不会折叠。