在样条曲线中查找控制点顺序

Find control point order in spline

我目前正在为我们的软件开发样条绘图工具,我们希望能够向样条添加新的控制点。我们使用 GDI+ GraphicsPath 从一组控制点绘制样条线。找出一个点是否在样条路径上很简单,但找出以何种顺序添加新点以便现有样条通过它是另一回事。

我们不知道曲线本身是如何计算的,目前只有现有的一组控制点,新的点,以及这个点是否在曲线路径上。

我能想到的唯一可能的解决方案是迭代测试该点是否在由曲线的前 2、3、4.. 点组成的曲线上,并从观察到的结果推断出它在哪些现有点之间属于。这似乎是一种相当蛮力的解决问题的方法,所以我想知道是否有人知道更好的方法?

谢谢

作为参考,这是我们所做的:

Gdi+ GraphicsPath 有一个功能,可以将路径扁平化为一系列点,形成直线段,这似乎保证包含原始控制点。

所以我们遍历一组扁平线段,针对它们命中测试新点,并跟踪我们所在的 'control segment'。命中时,我们找到了目标线段,然后可以在定义该段的 2 个之间添加新的控制点。

这是一个蛮力搜索,但是我没有找到任何其他解决方案不需要知道样条曲线是如何拟合到点上的,而且即使对于复杂的样条曲线似乎也能顺利运行。