陳建蘭
(杭州電子科技大學理學院,浙江杭州310018)
B樣條、Bézier、C-Bézier、NURBS、圓弧等是計算機圖形學領(lǐng)域中常用的樣條曲線,廣泛用于自由型曲線曲面設(shè)計。其中C-Bézier樣條曲線具有形狀簡單、使用靈活等特點,在數(shù)控加工中,因為刀具路徑通常是由線段和圓弧組成的,所以大多數(shù)情況下需要將曲線轉(zhuǎn)換成為由圓弧與直線段組成的圓弧樣條進行表示,而后進行加工。為了提高效率,通常采用圓弧樣條。在當前研究中,用圓弧樣條對曲線進行逼近,主要分為單圓弧和雙圓弧兩種方法。就連接點處的連續(xù)性而言,單圓弧算法比雙圓弧算法的優(yōu)點是可以減少所使用的圓弧段數(shù),缺點是一旦初始頂點處的切線方向確定,整條圓弧樣條就完全唯一確定下來,因而缺乏靈活性。此外,單圓弧穩(wěn)定性不好,改動初始點或初始切向,整條曲線都要跟著變動,而雙圓弧方法則不存在這些缺點。給定兩個端點以及端點處對應的單位向量,可以用雙圓弧進行逼近[1-3]。本文采用雙圓弧對C-Bézier樣條曲線進行(分段)逼近,該方法的優(yōu)點主要是計算相對簡單且誤差小。
3次C-Bézier曲線以sint,cost,t,1為基,代替?zhèn)鹘y(tǒng)的3次Bézier曲線的標準基 t3,t2,t,1,C-Bézier曲線包含一個控制參數(shù)α,0<α≤π,該參數(shù)控制曲線的形狀,當α趨近于0時,C-Bézier曲線的極限為Bézier曲線[4]。
(1)基函數(shù)的正性與權(quán)性:Zj(t)>0,(j=0,1,2,3);Z0(t)+Z1(t)+Z2(t)+Z3(t)≡1。(2)端點屬性:1)端點位置Bα(0)=q0,Bα(α)=q3;2)端點切矢量)端點曲率向量;式中(3)幾何不變性:幾何性質(zhì)不隨坐標變化而變化的性質(zhì),曲線的形狀獨立于坐標的選擇。(4)保凸性:如果控制多邊形是凸的多邊形,則C-Bézier曲線也是凸的。
雙圓弧[1]的定義為:給定不同的兩個點P1和P2,以及在點P1處的單位向量和在點P2處的單位向量,設(shè)圓弧C1和C2滿足下列條件:
(1)C1以P1為起點,且在起點處的單位切向量為;(2)C2以P2為終點,且在終點處的單位切向量為;(3)C1的終點C是C2的起點;(4)C1和C2在C點處具有共同的單位切向量。則由圓弧C1和C2共同組成的曲線段稱為雙圓弧,點C稱為雙圓弧的連接點(公切點)。
用雙圓弧逼近C-Bézier樣條曲線的方法為:用于逼近的雙圓弧的兩個端點及其單位向量相對應C-Bézier樣條曲線段的兩個端點及其單位向量,并且雙圓弧在連接點處光滑相切。
從雙圓弧的定義可知確定雙圓弧需要6個條件,而雙圓弧逼近方法中包含只有5個條件,所以還需要一個約束條件,才能確定雙圓弧的連接點。因雙圓弧的連接點的軌跡是一個圓[4],在這個軌跡圓上選擇一個連接點的方法有無限多種,所以選擇合適的連接點將直接影響到逼近光順性和逼近效果。一般在進行3次樣條雙圓弧逼近時,把雙圓弧的連接點的軌跡圓與樣條的交點作為雙圓弧的連接點(因交點一定存在),該方法的優(yōu)點是計算簡單,而且逼近誤差小。
因3次C-Bézier曲線帶著參數(shù)α,軌跡圓與C-Bézier曲線的交點不一定存在。本文采用軌跡圓與C-Bézier曲線的距離最近的點作為連接點,此法計算較為簡單,逼近誤差較小,光順性好。
雙圓弧逼近3次C-Bézier曲線的算法描述如下:
輸入一條3次C-Bézier曲線,它有4個控制點q0,q1,q2,q3,參數(shù)α0(0<α0<π),記 q0處的單位切向
輸出逼近C-Bézier曲線的雙圓弧。
步驟 1 求 C-Bézier曲線 Bα(t)=Z0(t)q0+Z1(t)q1+Z2(t)q2+Z3(t)q3;
步驟2 求公切點C;
設(shè)公切L線交q0q1的連線于Q1,交q2q3的連線于Q2,記|q0Q1|=a(設(shè)a為參數(shù)0≤a≤|q0q1|),|q3Q2|=b,則Q1=q0+a?e→1,Q2=q3-b?e→2,且由|Q1Q2|=a+b 解出 b(b 含參數(shù) a,用數(shù)學軟件 Matlab 解b),得公切點
計算公切點C到C-Bézier曲線的距離dα=|C-Bα(t)|,并求出有最小距離的C(即設(shè)為連接點);
步驟 3 設(shè)雙圓弧 C1和 C2的圓心為 O1和 O2,半徑為 R1和 R2,則由雙圓弧的定義得可解得O1和O2,并得半徑 R1=|O1q0|,R2=|O2q3|;
步驟4 雙圓弧C1和C2逼近C-Bézier曲線時,多用法向誤差e=max(||O1-Bα(t)|-R1|,||O2-Bα(t)|-R2|);
步驟5 若誤差e大于給定值,則對C-Bézier曲線分段重新處理,即返回步驟2。
給定一條3次C-Bézier曲線,其控制頂點為q0=(0,0),q1=(0.3,0.5),q2=(0.7,0.5),q3=(1,0),形狀控制參數(shù)α=1;用雙圓弧逼近此3次C-Bézier曲線,給定誤差e≤0.01。經(jīng)Matlab編程,不用分段,計算得公切C點中的a=0.583,b=0.290;公切點坐標為C=(0.332,0.332),雙圓弧的圓心坐標為O1=(0.724,-0.434),O2=(0.619,-0.229),雙圓弧的半徑R1=0.844,R2=0.445;逼近的最大誤差e=0.009。從實例的計算中可以看出,在一定的誤差要求下,可以用雙圓弧逼近C-Bézier曲線。
本文用雙圓弧對C-Bézier曲線進行逼近,結(jié)果表明在允許誤差內(nèi)雙圓弧是局部存在的。此法可推廣到其它曲線的逼近,在數(shù)控加工及工程圖紙的繪制中有一定的實際和應用價值。
[1] 王國兵,侯增選.三次均勻B樣條曲線的雙圓弧逼近方法[J].計算機應用研究,2008,25(4):1 087-1 089.
[2] 汪國平,孫家廣.平面NURBS曲線及其 offset的雙圓弧的逼近[J].軟件學報,2000,11(10):1 368-1 374.
[3] 盧建彪,雍俊海.二次 Bézier曲線的雙圓弧樣條插值二分算法[J].計算機應用研究,2006,23(8):172-173.
[4] 樊建華,鄔義杰,林興.C-Bézier曲線分割算法及G1拼接條件[J].計算機輔助設(shè)計與圖形學學報,2002,14(5):421-424.
[5] 王國謹,汪國昭,鄭建民.計算機輔助幾何設(shè)計[M].北京:高等教育出版社,施普林格出版社,2001:1-16,70-80.
[6] Zhang JW.C-curves:An extension of cubic curves[J].Computer-Aided Geometric Design,1996,13(3):199-217.