参数n次曲线
p(t)=∑i=0naifi,n(t)0≤t≤1
其中,系数矢量ai(i=0,1,2,…,n)顺序首尾相接,a0到an连成的折线称为控制多边形(Bezier多边形)。
Bezier基函数
fi,n={ 1(i−1)i(−t)idi−1di−1[t(1−t)n−1−1],i=0 可以化成伯恩斯坦函数
=1!(2−1)!2!t1(1−t)2−1=2t(i−t) =1!(2−2)!2!t2(1−t)2−2=t2 所以
p(t)=i=0∑2PiBi,2(t)=(1−t)2P0+2t(1−t)P1+t2P2=(P2−2P1+P0)t2+2(P1−P0)t+P0 为抛物线,其矩阵形式为:
=[t2t1]⋅1−21−220100⋅P0P1P2 三次Bezier曲线
p(t)=∑i=0nPiBi,n(t)t∈[0,1]
当n=3时,有4个控制点p0、p1、p2和p3,Bezier多项式是三次多项式:
=i=0∑3PiBi,3(t)=P0B0,3(t)+P1B1,3(t)+P2B2,3(t)+P3B3,3(t) 其中,
=0!(3−0)!3!t0(1−t)3−0=(1−t)3 =1!(3−1)!3!t1(1−t)3−1=3t(i−t)2 =1!(3−2)!3!t2(1−t)3−2=3t2(i−t) =1!(3−3)!3!t3(1−t)3−3=t3 所以
p(t)=i=0∑3PiBi,3(t)=(1−t)3P0+3t(1−t)2P1+3t2(1−t)P1+t3P3=(P3−3P2+3P1−P+0)t3+3(P2−2P1+P0)t2+3(P1−P0)t+P0 其中,B0,3(t)、B1,3(t)、B2,3(t) 、B3,3(t)为三次Bezier曲线的基函数,均为三次曲线,任何三次Bezier曲线都是这四条曲线的线性组合。
Bezier曲线不能对曲线形状进行局部控制,如果改变任一控制点位置,整个曲线都会受到影响。
三次Bezier曲线的矩阵形式为:
p(t)=[t3t2t1]−13−313−630−33001000P0P1P2P3t∈[0,1]=T⋅Mbe⋅Gbe 其中,Mbe是三次Bezier曲线系数矩阵(常数),Gbe是4个控制点位置矢量。
1.3.1 Bernstein基函数的性质
=Cniti(1−t)n−1=i!(n−i)!n!ti(1−t)n−1(i=0,1,2,…,n) 1.正性(非负性)
{=0>0t=0,1t∈(0,1),i=1,2,…,n−1 2.权性
基函数有n+1项,其和正好为1,即
i=0∑nBi,n(t)≡1t∈(0,1) 3.端点性质
{10(i=0)otherwise {10(i=n)otherwise 4.对称性
Bi,n(t)=Bn−i,n(1−t) 将n次Bezier曲线控制多边形顶点位置不变、次序颠倒,则曲线保持不变,但是走向相反。
5.递推性
Bi,n(t)=(1−t)Bi,n−1(t)+tBi−1,n−1(t)(i=0,1,…,n) 即n次Bernstein基函数可由两个n-1次Bernstein基函数线性组合而成。
6.导函数
Bi,n′(t)=n[Bi−1,n−1(t)−Bi,n−1(t)](i=0,1,…,n) 7.最大值
在t=ni处取到最大值。
8.积分
∫01Bi,n(t)=n+11
9.降阶公式
Bi,n(u)=(1−u)Bi,n−1(u)+uBi−1,n−1(t) 即一个n次Bernstein基函数能表示成两个n-1次基函数的线性和。
1.3.2 Bezier曲线的性质
1.端点性质
顶点p0和pn分别位于实际曲线段的起点和终点上,把t=0和1代入可以得到p0和pn。
2.一阶导数
p′(t)=n∑i=1n(pi−pi−1)Bi−1,n−1(t)
当t=0时,p′(0)=n(p1−p0)
当t=1时,p′(1)=n(pn−pn−1)
3.几何不变性
4.变差缩减性
若Bezier曲线的特征多边形是一个平面图形, 则平面内任意直线与p(t)的交点个数不多于该直线与其特征多边形的交点个数。此性质表明Bezier曲线比特征多边形的折线更光顺。
1.4 Bezier曲线生成算法
p(t)=∑i=0nPiBi,n(t)t∈[0,1]
2.将p(t)=∑i=0nPiBi,n(t)表示成分量坐标形式:
1.4.2 递推算法(de Casteljau)
由n+1个控制点Pi(i=0,1,…,n)定义的n次Bezier曲线P0n可被定义为分别由前后n个控制点定义的两条n-1次Bezier曲线P0n−1和P1n−1的线性组合:
P0n=(1−t)P0n−1+tP1n−1t∈[0,1]
由此得到Bezier曲线的递推计算公式
利用递推公式,在给定参数下,求Bezier曲线上一点P(t)非常有效
1.5 Bezier曲线的拼接及升降阶
1.5.1 Bezier曲线的拼接
p(t)=∑i=0nPiBi,n(t)t∈[0,1]
=PiCni+Pn−1Cnj−1 化简得:
=n+1iPi−1+(1−n+1i)Pi(i=0,1,…,n+1) 升阶后的多边形更加靠近曲线,如果一直升阶下去,控制多边形收敛于这条曲线。
降阶:升阶的逆过程
假定Pi是由Pi∗升阶得到,则由升阶公式有:
Pi=nn−iPi∗+niPi−1∗
由该方程可以导出两个递推公式:
=n−inPi−iPi−1∗(i=0,1,…,n−1) =inPi−(n−i)Pi∗(i=0=n,n−1,…,1) 可利用以上两个式子进行降阶,但不精确。
Bezier曲线存在不足:
(1)一旦确定了特征多边形的顶点数,也就确定了曲线的阶次;
(2)Bezier曲线或曲面的拼接比较复杂
(3)Bezier曲线或曲面不能作局部修改
样条(spline):分段连续多项式
如何分段?
现有n+1个点,每两点之间构造一条多项式,n+1个点有n个小区间,
每个小区间构造一条三次多项式,变成了n段的三次多项式拼接在一起,段与段之间满足两次连续,这就是三次样条。
2.2 B样条的递推定义和性质
B样条曲线的数学表达式为:
u∈[uk−1,un+1] 其中,Pi(i=0,1,…,n)是控制多边形的顶点,Bi,k(u)称为k阶(k-1次)B样条基函数,k可以是2到控制点个数n+1之间的任意整数。
对于Bezier曲线来说,阶次和次数是一样的;但对于B样条,阶数是次数加1。
B样条基函数是一个称为节点矢量的非递减的参数u的序列所决定的k阶分段多项式,这个序列称为节点向量。
de Boor-Cox递推定义
约定:0/0=0
该递推公式表明:若确定第i个k阶B样条Bi,k(u),需要用到ui,ui+1,…,ui+k共k+1个节点,称区间[ui,ui+k]为Bi,k(u)的支撑区间。
2.3 B样条基函数定义区间及节点向量
2.3.1 k阶B样条对应节点向量数
对于Bi,k(k阶k-1次基函数)来说,涉及k个区间、k+1个节点。
2.3.2 B样条函数定义区间
u∈[uk−1,un+1] “阶数+顶点”=节点向量的个数
区间要合法,区间里必须要有足够的基函数与顶点匹配,B样条基函数严重依赖于节点向量的分布。
u∈[uk−1,un+1] 其中,Ui是节点值,U=(u0,u1,…,un+k)构成了k阶(k-1)次B样条函数的节点矢量,B样条曲线对应的节点向量区间: u∈[uk−1,un+1]
2.5 B样条基函数的主要性质
1.局部支撑性
对于每个区间(ui,ui+k),至多只有k个基函数在该区间内非零。
2.权性
∑i=0nBi,k(u)≡1u∈[uk−1,un+1]
3.连续性
Bi,k(u)在r重节点处的连续阶不低于k-1-r
4.分段参数多项式
Bi,k(u)在每个长度非零的区间[ui,ui+1)上都是次数不高于k-1的多项式。
1.局部性
k阶B样条曲线上的一点至多与k个控制顶点相关,与其它控制顶点均无关。移动曲线的第i个控制点Pi,至多影响到定义在区间上的那部分曲线的形状,对其余部分不产生影响。
2.变差缩减性
3.几何不变性
4.凸包性
B样条曲线落在Pi构成的凸包之中,其凸包区域小于或等于同一组控制顶点定义的Bezier曲线凸包区域。
1.均匀B样条曲线(uniform B-spline curve)
当节点沿参数轴均匀等距分布,即ui+1−ui=常数>0时,表示均匀B样条函数。
均匀B样条的基函数呈周期性。即给定n和k,所有的基函数形状相同,每个后续基函数时前面基函数在新位置上的重复:
=Bi+1,k(u+Δu)=Bi+2,k(u+2Δu) 其中,Δu是相邻节点值的间距。
2.准均匀B样条曲线(Quasi-uniform B-spline curve)
与均匀B样条曲线的差别在于两端节点具有重复度k,这样的节点矢量定义了准均匀的B样条基,解决了均匀B样条曲线没有保留Bezier曲线端点几何性质的问题。
3.分段Bezier曲线(Piecewise Bezier Curve)
节点矢量中两端节点具有重复度k,所有内节点重复度为k-1,这样的节点矢量定义了分段的Bernstein基。
用分段Bezier曲线表示B样条曲线后,各曲线段就具有了相对独立性,且可以采用Bezier曲线的简单有效算法,缺点是增加了定义曲线的数据、控制定点数及节点数。
4.非均匀B样条曲线(non-uniform B-spline curve)
当节点沿参数轴的分布不等距,即ui+1−ui=常数时,表示非均匀B样条函数。