我一直试图创建一条曲线,我已经创建了它。但问题是,如果我添加一个点,它将被添加到数组[最后一个点-1],但如果我在第一个和第二个点之间添加一个点,曲线将它作为最后一个点-1,这是我的编码无论如何,我需要找到我要添加的位置,曲线的索引
上面的imnage就是一个例子,这里我有一个带有三个点的曲线,这个点是编号的,这样你就可以看到这些点是如何存储在数组中的,我将把紫色点添加到数组中但是我需要知道我应该粘贴哪个索引,请帮忙
答案 0 :(得分:0)
1-您创建的任何曲线都会有一些等式。例如,X ^ 2 + Y -3 = 0
2-如果你的点在那条曲线上它应该满足这个等式。
答案 1 :(得分:0)
对于位于贝塞尔曲线上的每个点,您可以在0..1范围内找到参数t。 因此,根据它的t值,在列表中插入新点。
关于发现:
- 如果曲线沿X坐标是单调的(类似于Y),只需求解t的三次方程式:
P0.X*(1-t)^3 + 3*P1.X*t*(1-t)^2 +3*P2.X*t^2*(1-t) +P3.X*t^3 = NewPoint.X
- 如果没有,你可以为X和Y求解相似的方程并得到一致的解(自相交曲线可能有两个解)
- 对于不精确的坐标,你可以建立从点到曲线的平方欧几里德距离的表达式并找到它的最小值(最近点)
答案 2 :(得分:0)
我刚为每条曲线创建了新的单独精灵,并在调度click事件时找到了这些点,感谢您的建议。