三次插值样条曲线在灵活性和计算速度之间进行了合理的折中。与更高次样条相比,三次插值样条只需较少的计算和存储,且较稳定。与二次插值样条相比,三次插值样条在模拟任意形状时显得更灵活。
三次插值样条曲线由分段的三次多项式来描述。设其参变量为t,则分段三次插值样条曲线表达式的一般形式为:
P(t) = B1 + B2t + B3t2 + B4t3 (0≤t≤tm) (4-13)
其中,P(ti) = [x(ti) y(ti) z(ti)]可以看作三次插值样条曲线上某一点的位置向量,ti是该点的参变量,x(ti)、y(ti)、z(ti)可以看作是该点的坐标值。
式(4-13)中的B1、B2、B3、B4为四个待定系数。必须确定这四个系数,这需要设定四个独立条件。
三次自然样条曲线
Hermite样条曲线
Cardinal样条曲线
三次自然样条曲线
三次自然样条曲线是最早用于图形应用的三次插值样条曲线。
三次自然样条曲线具有C2连续性。
n+1个型值点(P0、P1、P2……Pn)插值产生n段曲线,每段曲线有4个系数,共有4n个多项式系数需要确定。
4n个多项式系数的确定:
① 对于每个内型值点(P1、P2……Pn-1,共n-1个)有4个边界条件:在该型值点两侧的两个相邻曲线段在该点处具有相同的一阶和二阶导数,并且两个曲线段都要通过该点。——4(n-1)个方程
② 曲线起点为第一个型值点P0,曲线终点为最后一个型值点Pn。——2个方程
③ 在P0 和 Pn两点处设二阶导数为0。——2个方程
三次自然样条曲线能够做到曲线通过所有型值点。
缺点:
① 必须解方程组。
② 整条曲线受所有型值点控制,如果型值点中有任何一个改动,则整条曲线都受影响。因此,不允许“局部控制”。
③ 在实际应用中很少采用三次自然样条曲线。
Hermite样条曲线
与三次自然样条曲线不同,Hermite样条曲线可以局部调整,因为每个曲线段仅依赖于端点约束。
整条曲线通过所有的型值点,对于每个曲线段来说,它通过两个相邻的型值点。
已知:设曲线段的起点和终点分别为P0和P1,并且曲线段在两端点处的切矢量分别为P'0和P'1。参变量t是在两个端点取值0和1之间变化。
P0 = B1 + B2t + B3t2 + B4t3 = B1 (当t=0)
P1 = B1 + B2t + B3t2 + B4t3 = B1 + B2+ B3 + B4 (当t=1)
P'0 = B2 + 2B3t + 3B4t2 = B2 (当t=0) (4-14)
P'1 = B2 + 2B3t + 3B4t2 = B2 + 2B3 + 3B4 (当t=1)
式(4-14)写成矩阵形式:
求解上述方程组中的B1、B2、B3、B4,可得Hermite样条曲线的矩阵表达式:
将式(4-16)展开,得到第k段Hermite样条曲线的表达式:
P(t) = Pk(2t3-3t2+1) + Pk+1(-2t3+3t2) + Pk'(t3-2t2+t) + Pk+1'(t3-t2) (4-17)
Hermite样条曲线能局部修改,对某些数字化应用有用。但对计算机图形学中的大部分问题而言,除了型值点坐标外,更好的做法是不需要输入曲线斜率值或其它几何信息就能生成样条曲线。因此,出现了Cardinal样条,它不需要输入控制点上的曲线导数值,而是采用控制点的坐标位置来计算导数。
Cardinal样条曲线
Cardinal样条曲线也是分段三次插值曲线,并且每个曲线段端点处均指定切线,但不一定要给出端点处的切线值。
一个Cardinal样条曲线段由四个连续控制点给出。中间两个控制点是曲线段的端点,另外两个控制点用来计算端点斜率。
设P(t)是两个控制点Pk和Pk+1间的参数三次函数式,则从Pk-1到Pk+2间的4个控制点用于建立Cardinal样条曲线段的边界条件:
P0 = Pk
P1 = Pk+1
P'0 = 1/2(1- ts)(Pk+1- Pk-1) (4-18)
P'1 = 1/2(1- ts)(Pk+2- Pk)
控制点Pk和Pk+1处的斜率分别与弦Pk-1Pk+1和PkPk+2成正比。
参数ts:称为张力参数,它控制Cardinal样条曲线与输入控制点之间的松紧程度。
张力参数 ts 在Cardinal曲线形状中的作用:
以将边界条件式(4-18)转换成矩阵形式:
其中,s = (1-ts)/2。
将矩阵形式(4-19)展开,得Cardinal样条曲线多项式形式:
P(t) = Pk-1(-st3 + 2st2 - st) + Pk[(2-s)t3 + (s-3)t2 + 1] +
Pk+1[(s-2)t3 + (3-2s)t2 + st] + Pk+2(st3 - st2) (4-20)