如何找到点是否位于这些点之间
How to find whether the point lies between these points
我一直在尝试创建曲线并且我已经创建了它。但问题是,如果我添加一个点,它将被添加到数组 [last point -1] 中,但是如果我在第一个点和第二个点之间添加一个点,曲线将它作为最后一个点 -1,这是我的编码,我需要找到我应该添加的地方,曲线的索引
上面的图片是一个例子,这里我有一条包含三个点的曲线,这些点被编号以便您可以看到这些点是如何存储在数组中的,我将把紫色的点添加到数组中但我需要知道我应该粘贴哪个索引,请帮忙
1- 您创建的任何曲线都会有一些方程式。例如 X^2 + Y -3 = 0
2- 如果你的点在那条曲线上,它应该满足这个等式。
对于贝塞尔曲线上的每个点,您都可以在 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求解类似的方程并得到一致的解(自相交曲线可能有两个解)
-对于不精确的坐标,您可以构建从点到曲线的平方欧氏距离的表达式,并找到它的最小值(最近点)
我刚刚为每条曲线创建了新的单独精灵,并在调度点击事件时找到了点,感谢您的建议。
我一直在尝试创建曲线并且我已经创建了它。但问题是,如果我添加一个点,它将被添加到数组 [last point -1] 中,但是如果我在第一个点和第二个点之间添加一个点,曲线将它作为最后一个点 -1,这是我的编码,我需要找到我应该添加的地方,曲线的索引
上面的图片是一个例子,这里我有一条包含三个点的曲线,这些点被编号以便您可以看到这些点是如何存储在数组中的,我将把紫色的点添加到数组中但我需要知道我应该粘贴哪个索引,请帮忙
1- 您创建的任何曲线都会有一些方程式。例如 X^2 + Y -3 = 0
2- 如果你的点在那条曲线上,它应该满足这个等式。
对于贝塞尔曲线上的每个点,您都可以在 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求解类似的方程并得到一致的解(自相交曲线可能有两个解)
-对于不精确的坐标,您可以构建从点到曲线的平方欧氏距离的表达式,并找到它的最小值(最近点)
我刚刚为每条曲线创建了新的单独精灵,并在调度点击事件时找到了点,感谢您的建议。