仅由一段多项式或有理多项式曲线段组成的曲线往往还不能满足实际应用的要求,它们如下缺点:
- 当需要满足的约束条件很多时,需要使用高次曲线。例如,为了使Bezier曲线通过 n n n个数据点,需要采用 n − 1 n-1 n−1次的曲线。但是,高次曲线用计算机处理时效率较低并且数值稳定性差。
- 为了精确地拟合一些复杂的形状,需要采用高次曲线。
- 单独一段曲线(曲面)不适合交互形状设计。尽管可以通过修改控制顶点(和权因子)来改变(有理)Bezier曲线(曲面)的形状,但是,这种控制不具有局部性。
以上问题可以通过采用由分段多项式或分段有理多项式表示的曲线(曲面)来解决。假设曲线 C ( u ) C(u) C(u)由 m ( = 3 ) m(=3) m(=3)段 n n n次多项式组成,其定义域为 u ∈ [ 0 , 1 ] u\in[0,1] u∈[0,1]。参数 u 0 = 0 < u 1 < u 2 < u 3 = 1 u_0=0<u_1<u_2<u_3=1 u0=0<u1<u2<u3=1称为断点(breakpoints),它们对应于三段多项式曲线的端点。记第 i i i段多项式曲线为 C i ( u ) , i = 1 , 2 , … , m C_i(u),i=1,2,\dots,m Ci(u),i=1,2,…,m。在构造曲线时,相邻曲线段应该满足一定的连续性(每个断点处的连续性可以不同)。令 C i ( j ) C_i^{(j)} Ci(j)表示 C i ( u ) C_i(u) Ci(u)的 j j j阶导矢,如果 C i ( j ) ( u i ) = C i + 1 ( j ) ( u i ) C_i^{(j)}(u_i)=C_{i+1}^{(j)}(u_i) Ci(j)(ui)=Ci+1(j)(ui)对所有 0 ⩽ j ⩽ k 0\leqslant j \leqslant k 0⩽j⩽k成立,则称曲线 C ( u ) C(u) C(u)在 u i u_i ui处是 C k C^k Ck连续的。
可以用任何一种多项式曲线的表示形式来表示 C i ( u ) C_i(u) Ci(u)。假设次数为3,每段4个控制点,一共12个控制点, P i j P_i^j Pij表示第 j j j段多项式曲线的第 i i i个控制点。断点集合为 U = { u 0 , u 1 , u 2 , u 3 } U=\{u_0,u_1,u_2,u_3\} U={ u0,u1,u2,u3}均保持不变,令12个控制点 P i j P_i^j Pij任意变化,则得到一个由 U U U上的所有分段三次多项式曲线组成的向量空间 V V V。 V V V的维数是12, V V V中的曲线在 u 1 u_1 u1或 u 2 u_2 u2处可能不连续。现在规定 P 3 1 = P 0 2 P_3^1=P_0^2 P31=<