【别的文章都说网上关于这个资料很多?为什么我在中文互联网上愣是没找到呢?不管了,以下是对http://algorithmist.net/docs/catmullrom.pdf的翻译】
有时候我们想要物体从一个点移动到另一个点,但并不希望它沿着直线移动过去,而是稍微弯曲一点,这时候catmull-rom样条就派上用场了。推导其实很简单。
比如,我们想要构造P0到P1之间的曲线P(t),P(t)是如下待求解的三次曲线
p-1和p2是控制点,满足如下方程,
是0到1之间的参数,用来控制曲线的尾部与控制点之间的平行程度。
由于
于是
设
由等式[2]可得到:
由等式[3]可得到:
[4a]和[4b]联合可得:
继续化简:
参数
也可以理解为曲线的“紧张程度”。通常取0.5。
最终解出方程
效果如下:
对于多条线段,那么对于第i控制点,方程在x坐标轴上如下:
效果如下: