我目前正在为我们的软件开发样条绘图工具,我们希望能够为样条添加新的控制点。我们使用GDI + GraphicsPath从一组控制点绘制样条线。找出一个点是否在样条曲线路径上是很简单的,但找出添加新点的顺序,以便现有样条曲线通过它是另一回事。
我们不知道如何计算曲线本身,目前只有现有的一组控制点,新点,以及这一点是否在曲线路径上。
我能想到的唯一可能的解决方案是迭代地测试该点是否在由曲线的前2,3,4 ..点组成的曲线上,并且从观察到的结果推断它在哪个现有点之间。这似乎是解决问题的一种相当蛮力的方式,所以我想知道是否有人知道任何更好的方法?
由于
答案 0 :(得分:1)
供参考,这就是我们所做的:
Gdi + GraphicsPath具有将路径平坦化为一系列形成直线段的点的功能,这似乎保证包含原始控制点。
因此,我们遍历一组扁平线段,测试针对它们的新点,并跟踪哪个控制段'当我们找到目标片段时,我们找到了我们的目标片段,并且可以在定义该片段的2之间添加新的控制点。
这是一次蛮力搜索,但是我没有找到任何其他解决方案,这些解决方案并不需要知道样条曲线如何适合这些点,并且即使对于复杂样条曲线也似乎运行平稳。