假设我有n
个点,也假设这个点有一个顺序,并且这个点没有必要成为一个函数。我想知道如果点没有描述函数,如何插入它们?例如,这将是原始点:
我希望这个结果:
请注意,仅使用样条线不起作用,因为这些点不起作用,并且使用Bezier曲线也不起作用,因为它们不插入点(仅在它们附近通过)。我怎么能得到这个?有算法吗?
答案 0 :(得分:5)
有很多种样条线,例如Catmull-Rom splines适用于此。
Maxim Shemanarev提出了interpolation by Bezier curves简单而有趣的方法
答案 1 :(得分:1)
这个答案解决了问题本身的一些概念问题。我不打算将其作为一个完整的答案。
首先,在给定的情况下,总会有一个功能。在数学上,您将曲线描述为一个函数,从实数,大致代表“时间”到您的空间。这通常称为曲线的参数化表示。我们将函数编写为f(t) =( x(t), y(t) )
,其中x(t)
和y(t)
是各个参数函数。
问题是你所拥有的功能可能不是你想要的功能。为了获得答案的希望,这种类型的每个问题都必须明确说明哪种类型的函数可以作为答案。只是说“功能”没什么意义。问题是缺少可接受的功能类别的声明是可行的。尽管如此,还是提到了样条,所以让我们继续追求。给定一类样条曲线(双三次曲线是常见的),通常只能拟合样条曲线上的这么多点,而不是任意数字。所以你想要的是分段样条函数的类,即一系列样条函数。
一旦你有一个可容许的功能类,你还必须决定如何选择它们。您似乎已经声明的条件是您希望样条曲线通过给定的点。这是一个常见的情况,但不是唯一的情况。其他的是最小化曲率,最小化长度,最小化点到曲线的总距离等。拟合条件也是问题陈述的一部分。
总结一下,听起来你想要使用分段样条曲线来通过一系列点。现在看看其他答案,因为这是他们正在回答的问题。