有理贝塞尔曲线(Rational Bezier Curves)

有理贝塞尔曲线(Rational B′ezier Curves)

1、定义

有理贝塞尔曲线(Rational B′ezier Curves)

控制点为 b0,,bn 的n阶有理贝塞尔曲线定义为:

B(t)=ni=0ωibiBi,n(t)ni=0ωiBi,n(t),t[0.1]

bi=(xi,yi,zi) ,定义齐次控制点 b^i 为:

b^i={(ωixi,ωixi,ωixi,ωi),(xi,yi,zi,0),ifωi0ifωi=0

旋转贝塞尔曲线的齐次形式可表示为:

B(t)=i=onb^iBi,n(t)

用基本形式表示为:

B(t)=i=obiRi,n(t)

其中:

Ri,n(t)=ωiBi,n(t)nj=0ωjBj,n(t)Bi,n(t)nj=0Bj,n(t)ifωi0ifωi=0

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)=boB(1)=bn

  • 端点切线定理:

    B(0)=n(ω1ω0),B(1)=n(ωnωn1)

  • 投影变换不变性

    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、假设

B(t)=ni=0ωibiBi,n(t)ni=0ωiBi,n(t)
,
其中, bi=(xi,yi),b^i=(ωixi,ωiyi,ωi) , 或者 bi=(xi,yi,zi),b^i=(ωixi,ωiyi,ωizi,ωi) ,对于平面曲线,和贝塞尔曲线 的算法一样,把 ωi 看做附加坐标。

2、第一种方法简单快捷,但很容易出错。避免错误的方法是,在每次迭代结束时,把齐次控制点转换到笛卡尔坐标系下。显得算法如下:

bji=bj1i(1t)ωj1iωji+bj1i+1tωj1i+1ωjiωji=ωj1i(1t)+ωj1i+1t

其中:
i=0,,nj,j=1,,n

有理算法,计算了 B(t) 及其分支在时刻 t 时的点。

5、投影

M4×4 为投影矩阵,在齐次坐标系下,有理贝塞尔曲线

B(t)=ni=0ωibiBi,n(t)ni=0ωiBi,n(t)

(其中: bi=(xi,yi,zi ) 可以表示为:

B(t)=i=0nb^iBi,n(t)

( 其中: b^i={(ωixi,ωixi,ωixi,ωi),(xi,yi,zi,0),ifωi0ifωi=0 )

可以得到:

B(t)M=(i=0nb^iBi,n(t))M=i=0n(b^iM)Bi,n(t)=i=0nc^iBi,n(t)

其中, c^i=b^iM

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值