有理贝塞尔曲线(Rational B′ezier Curves)
1、定义
有理贝塞尔曲线(Rational B′ezier Curves)
控制点为 b0,⋯,bn 的n阶有理贝塞尔曲线定义为:
令 bi=(xi,yi,zi) ,定义齐次控制点 b^i 为:
旋转贝塞尔曲线的齐次形式可表示为:
用基本形式表示为:
其中:
2、性质
凸包性质
假设, ωi>0,i∈[0,1] ,
那么,贝塞尔曲线上的点在其控制点定义的凸包内仿射变换不变性
T(∑ni=0ωibiBi,n(t)∑ni=0ωiTBi,n(t))=∑ni=0ωibiBi,n(t)∑ni=0ωiBi,n(t),T为仿射变换变差缩减性质
假设, ωi>0,quadi∈[0,1] ,
对平面贝塞尔曲线 B(t) 和给定的直线,贝塞尔曲线与直线的交点个数不大于其控制多边形和直线的交点的个数。端点插值性质:
B(0)=bo,B(1)=bn端点切线定理:
B′(0)=n(ω1−ω0),B′(1)=n(ωn−ωn−1)投影变换不变性
T(sumni=0b^iBi,n(t))=sumni=0T(b^i)Bi,n(t),T为仿射变换
3、定理
假设: ωk−−>ωk+δωk , 则每一个点 b=B(t) 变化为点 bω=(1−α)b+αbω ,
其中, α=δωkBk,n(t)∑ni=0ωiBi,n(t)+δωkBk,n(t)
4、de Casteljau 算法
计算方法是普通由贝塞尔曲线扩展而来,有两种途径实现算法。
1、假设
其中, bi=(xi,yi),b^i=(ωixi,ωiyi,ωi) , 或者 bi=(xi,yi,zi),b^i=(ωixi,ωiyi,ωizi,ωi) ,对于平面曲线,和贝塞尔曲线 的算法一样,把 ωi 看做附加坐标。
2、第一种方法简单快捷,但很容易出错。避免错误的方法是,在每次迭代结束时,把齐次控制点转换到笛卡尔坐标系下。显得算法如下:
其中:
i=0,⋯,n−j,j=1,⋯,n
有理算法,计算了 B(t) 及其分支在时刻 t 时的点。
5、投影
令
(其中: bi=(xi,yi,zi ) 可以表示为:
( 其中: b^i={(ωixi,ωixi,ωixi,ωi),(xi,yi,zi,0),ifωi≠0ifωi=0 )
可以得到:
其中, c^i=b^iM