若已知n+1个数据点
p
i
(
i
=
0
,
1
,
.
.
.
,
n
)
\bm{p}_i(i=0,1,... ,n)
pi(i=0,1,...,n),构造一条通过这些数据点的参数化多项式曲线,那么曲线方程的待定系数矢量必然等于数据点的个数:
p
(
u
)
=
∑
i
=
0
n
a
i
u
i
i
=
0
,
1
,
.
.
.
,
n
\bm{p}(u)=\sum_{i=0}^{n} \bm{a_i}u^i \qquad i=0,1,...,n
p(u)=i=0∑naiuii=0,1,...,n
其中,系数矢量
a
i
\bm{a_i}
ai为待求的。
数据点越多,多项式曲线需要满足的插值条件就越多,其次数越高,曲线出现扭摆的可能性越大,某个数据点的微小变动就会引起曲线较大的变化。而多项式曲线的次数越低,描述的曲线形状就越简单。
为了克服以上问题,人们通常采用多段低次(三次)的多项式曲线来插值足够多的数据点,在每段三次多项式曲线连接点处满足一阶参数连续或二阶参数连续,即参数三次样条曲线。
对于给定n+1个数据点 p i ( i = 0 , 1 , . . . , n ) \bm{p}_i(i=0,1,... ,n) pi(i=0,1,...,n),欲构造插值于这些数据点的参数三次样条曲线,首先需要做的是数据点的参数化。即给每个数据点 p i \bm{p}_i pi赋予对应的参数值 u i u_i ui,使参数值形成一个严格递增的序列 0 = u 0 < u 1 < . . . < u n = 1 0=u_0<u_1<...<u_n=1 0=u0<u1<...<un=1。
把插值曲线看做质点顺序通过一些空间位置(即数据点)的运动轨迹,参数u看做时间,那么对数据点的参数化,就等于规定了质点依次到达这些空间位置的时间。
同一组数据点,即使采用同样的插值法,若数据点的参数化不同,将可能获得不同的插值曲线,数据点的参数化通常有如下方法:
-
均匀参数化
节点在参数轴上等距分布:
u i = i , i = 0 , 1 , . . . , n − 1 u_i=i, \ \ \ \ \ i=0,1,...,n-1 ui=i, i=0,1,...,n−1
然后进行归一化。 -
积累弦长参数化
{ u 0 = 0 u i = u i − 1 + ∣ Δ p i − 1 ∣ , i = 1 , 2 , . . . , n \left\{\begin{aligned}& u_0=0 \\ &u_i=u_{i-1}+|\Delta \bm{p}_{i-1}|, \ \ \ \ i =1,2,...,n \end{aligned}\right. {u0=0ui=ui−1+∣Δpi−1∣, i=1,2,...,n
其中, Δ p i = Δ p i + 1 − Δ p i \Delta \bm{p}_{i}=\Delta \bm{p}_{i+1}-\Delta \bm{p}_{i} Δpi=Δpi+1−Δpi为弦长矢量。这种参数化法反映了数据点按弦长的分布情况,一直被认为是最佳参数化法,多数情况下能获得满意的结果。 -
向心参数化
{ u 0 = 0 u i = u i − 1 + ∣ Δ p i − 1 ∣ 1 2 , i = 1 , 2 , . . . , n \left\{\begin{aligned}& u_0=0 \\ &u_i=u_{i-1}+|\Delta \bm{p}_{i-1}|^{\frac{1}{2}}, \ \ \ \ i =1,2,...,n \end{aligned}\right. {u0=0ui=ui−1+∣Δpi−1∣21, i=1,2,...,n
与积累弦长法不同的是,向心参数化法取的弦长的平方根的累积。 -
修正弦长参数化
{ u 0 = 0 u i = u i − 1 + k i ∣ Δ p i − 1 ∣ , i = 1 , 2 , . . . , n \left\{\begin{aligned}& u_0=0 \\ &u_i=u_{i-1}+k_i|\Delta \bm{p}_{i-1}|, \ \ \ \ i =1,2,...,n \end{aligned}\right. {u0=0ui=ui−1+ki∣Δpi−1∣, i=1,2,...,n
其中, k i k_i ki为修正系数,与相邻两段的弦长即夹角有关。这种参数化方法增大了花费在曲线段运动的“时间间隔”,使“切向速度”变慢下来,好比老司机行驶在弯道较急的公路上把车速放慢下来一样。
工程实践表明,积累弦长参数化法在大多数应用中是满足要求的。