首页 > 代码库 > Catmull-Rom Spline

Catmull-Rom Spline

Catmull-Rom Spline

  Catmull-Rom算法保证2点:

    1、每点Pi的1阶层数等于Pi+1 - Pi-1。

    2、穿过所有Pi点。

  其中特点2是与贝塞尔曲线的最大区别。正因为这样的特性,使得Catmull-Rom算法适于用作轨迹线算法。

    点Pi处的切线记作:τ (pi+1 − pi−1)。此算法的转换矩阵如下:

  技术分享

  接下来看看此算法是如何推导出来的。

  首先,此算法工作需要四个点,P0(Pi-2)、P1(Pi-1)、P2(Pi)、P3(Pi+1)。特性1)、2)可用下图来描述。

  技术分享

  τ用于影响扭曲程度。

  技术分享

  

  作为一个立方插值函数,抽象原型如下,我们需要做的就是求出下式中的C0、C1、C2、C3。

  技术分享  1)

   根据下图的抽象,我们可以得出右图的四个等式:

  技术分享  技术分享

  将参数0、1代入1)式即可得:

  技术分享

 

  将C0、C1代入其它两式后,可得下式:

  技术分享

  最终可解得:

    技术分享

  所以最终结果就是:

    技术分享

参考:http://www.cs.cmu.edu/~462/projects/assn2/assn2/catmullRom.pdf

  

 

 

 

 

 

 

  

Catmull-Rom Spline