江本赤
(安徽國防科技職業(yè)學院,安徽 六安 237011)
B樣條是于1946年首次由Schoenberg提出的[1]。B樣條曲線具有局部控制能力強的優(yōu)點,可在不改變曲線階數的情況下增加控制點[2]。在CAD/CAM中,B樣條常用來表達幾何形狀。在工程力學中,B樣條還用作機件的應力和位移分析[3-4]。而在分析B樣條曲線形狀時,通常需要求出其曲率[5-6]。不同于簡單曲線的曲率計算,B樣條曲線的曲率求解則復雜得多,目前常見的方法是先求出其導曲線,而對B樣條的求導非常復雜,極容易出錯。
鑒于上述情況,本文提出一種簡易的曲率計算方法。具體做法是先對原B樣條曲線進行相對簡單的降階處理,然后直接利用曲率計算公式即可。該算法可避免對B樣條曲線的求導運算,對于減低運算量具有積極意義。
一條p次B樣條曲線定義為
(1)
式中:Pi是控制頂點,Ni,p(u)是p次基函數,它定義在節(jié)點矢量U上,并在區(qū)間[ui,ui+p+1)上非零,其數值按照式(2)和(3)求取。
(2)
(3)
節(jié)點矢量U中a和b的重復度都為p+1,除非特別聲明,通常取a=0,b=1。
根據文獻[3]中的表述,對p次B樣條曲線的定義公式進行形式化求導,可得一階導曲線,其公式為:
(4)
現(xiàn)將式(1)記為C1(u),并改寫成:
(5)
可見式(5)的形式與B樣條曲線的定義公式完全一致??梢灾苯訉1(u)看作降階處理后的(p-1)次B樣條曲線,其對應的曲線參數分別為控制頂點Qi、節(jié)點矢量U1。其中,控制頂點Qi的坐標值可以對照式(4)和(5)求出,即Qi=p(Pi+1-Pi)/(ui+p+1-ui+1);節(jié)點矢量U1可以通過去掉原節(jié)點矢量U中的第一個和最后一個節(jié)點得到(即將端點的重復度降低1次)。如此就完成了對原B樣條曲線的一次降階處理。若需二階導數,則亦無需對原公式進行復雜的二次求導,只需在此基礎上進行第二次降階處理,即以C1(u)為原函數,再次利用式(5)即可得到曲線C2(u)。
參數ui處所對應的曲率值為Ki,其數值按照式(6)求取。
(6)
對于二維平面曲線,C1(u)和C2(u)對應的坐標點分別為(x′,y′)和(x″,y″),將所得的坐標值代入式(7)即可。
(7)
為了驗證上述算法,下面分別以一條二次和一條三次B樣條曲線為例,求解其曲率分布曲線。先來考察二次曲線,其參數為U=[0,0,0,0.025,0.1, 0.2, 0.4, 0.5, 0.6, 0.8, 0.9, 0.975, 1, 1, 1];P=[0,1;0,0;6,0;4,2;1,11;5,16;11,16;15,11;12,2;10,0;16,0;16,1];p=2。它描述的是一個“Ω”形曲線,如圖1所示。利用上述算法求出的曲率分布見圖2。
再來考察三次曲線,其參數為U=[0,0,0,0,0.1,0.2,0.3,0.4,0.5,0.6,0.8, 0.9, 1, 1, 1, 1];控制頂點坐標值為P=[0,1;1,3;2,5;3,4.2;4,3.4;5,2.5;6,2;7,3;8,5;9,6;10,4;12,1];p=3。它描述的是一個“M”形曲線,如圖3所示。利用上述算法求出的曲率分布見圖4。
由上面兩個舉例可以看出,所求出的曲率分布曲線符合實際情況,驗證了所提算法的正確性和可行性。
本文從B樣條定義公式出發(fā),在分析其求導公式形式的基礎上,總結出了低次B樣條曲線的參數簡易求法,完成了對原B樣條曲線的降階處理,進而實現(xiàn)了相對的曲率求解算法。該算法避免了對B樣條曲線進行復雜的多次求導運算,具有一定的工程意義。
[1]Schoenberg I J.Contributions to the problem of approximation of equidistant data by analytic functions[J].Quart, Appl.Maths 4, 1946, 4(45-99):112-114.
[2]康蘭,趙文.基于散亂數據點的B樣條曲線反求方法[J].機械設計與制造,2009,(9):221-223.
[3]施法中.計算機輔助設計與非均勻有理B樣條[M].北京:高等教育出版社,2011.
[4]郭風華,楊興強.調整節(jié)點矢量對B樣條曲線的影響[J].計算機工程與科學, 2005, 27(11): 109-111.
[5]Jena M K, Shunmugaraj P,Das P C.A subdivision algorithm for trigonometric spline curves[J].Computer Aided Geometric Design, 2002(19):71-88.
[6]秦開懷,孫家廣,范剛.三次NURBS曲線的插值方法[J].計算機輔助設計與圖形學學報,1993,5(3):179-183.