江本赤
(安徽國(guó)防科技職業(yè)學(xué)院,安徽 六安 237011)
B樣條是于1946年首次由Schoenberg提出的[1]。B樣條曲線具有局部控制能力強(qiáng)的優(yōu)點(diǎn),可在不改變曲線階數(shù)的情況下增加控制點(diǎn)[2]。在CAD/CAM中,B樣條常用來(lái)表達(dá)幾何形狀。在工程力學(xué)中,B樣條還用作機(jī)件的應(yīng)力和位移分析[3-4]。而在分析B樣條曲線形狀時(shí),通常需要求出其曲率[5-6]。不同于簡(jiǎn)單曲線的曲率計(jì)算,B樣條曲線的曲率求解則復(fù)雜得多,目前常見(jiàn)的方法是先求出其導(dǎo)曲線,而對(duì)B樣條的求導(dǎo)非常復(fù)雜,極容易出錯(cuò)。
鑒于上述情況,本文提出一種簡(jiǎn)易的曲率計(jì)算方法。具體做法是先對(duì)原B樣條曲線進(jìn)行相對(duì)簡(jiǎn)單的降階處理,然后直接利用曲率計(jì)算公式即可。該算法可避免對(duì)B樣條曲線的求導(dǎo)運(yùn)算,對(duì)于減低運(yùn)算量具有積極意義。
一條p次B樣條曲線定義為
(1)
式中:Pi是控制頂點(diǎn),Ni,p(u)是p次基函數(shù),它定義在節(jié)點(diǎn)矢量U上,并在區(qū)間[ui,ui+p+1)上非零,其數(shù)值按照式(2)和(3)求取。
(2)
(3)
節(jié)點(diǎn)矢量U中a和b的重復(fù)度都為p+1,除非特別聲明,通常取a=0,b=1。
根據(jù)文獻(xiàn)[3]中的表述,對(duì)p次B樣條曲線的定義公式進(jìn)行形式化求導(dǎo),可得一階導(dǎo)曲線,其公式為:
(4)
現(xiàn)將式(1)記為C1(u),并改寫(xiě)成:
(5)
可見(jiàn)式(5)的形式與B樣條曲線的定義公式完全一致??梢灾苯訉1(u)看作降階處理后的(p-1)次B樣條曲線,其對(duì)應(yīng)的曲線參數(shù)分別為控制頂點(diǎn)Qi、節(jié)點(diǎn)矢量U1。其中,控制頂點(diǎn)Qi的坐標(biāo)值可以對(duì)照式(4)和(5)求出,即Qi=p(Pi+1-Pi)/(ui+p+1-ui+1);節(jié)點(diǎn)矢量U1可以通過(guò)去掉原節(jié)點(diǎn)矢量U中的第一個(gè)和最后一個(gè)節(jié)點(diǎn)得到(即將端點(diǎn)的重復(fù)度降低1次)。如此就完成了對(duì)原B樣條曲線的一次降階處理。若需二階導(dǎo)數(shù),則亦無(wú)需對(duì)原公式進(jìn)行復(fù)雜的二次求導(dǎo),只需在此基礎(chǔ)上進(jìn)行第二次降階處理,即以C1(u)為原函數(shù),再次利用式(5)即可得到曲線C2(u)。
參數(shù)ui處所對(duì)應(yīng)的曲率值為Ki,其數(shù)值按照式(6)求取。
(6)
對(duì)于二維平面曲線,C1(u)和C2(u)對(duì)應(yīng)的坐標(biāo)點(diǎn)分別為(x′,y′)和(x″,y″),將所得的坐標(biāo)值代入式(7)即可。
(7)
為了驗(yàn)證上述算法,下面分別以一條二次和一條三次B樣條曲線為例,求解其曲率分布曲線。先來(lái)考察二次曲線,其參數(shù)為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。它描述的是一個(gè)“Ω”形曲線,如圖1所示。利用上述算法求出的曲率分布見(jiàn)圖2。
再來(lái)考察三次曲線,其參數(shù)為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];控制頂點(diǎn)坐標(biāo)值為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。它描述的是一個(gè)“M”形曲線,如圖3所示。利用上述算法求出的曲率分布見(jiàn)圖4。
由上面兩個(gè)舉例可以看出,所求出的曲率分布曲線符合實(shí)際情況,驗(yàn)證了所提算法的正確性和可行性。
本文從B樣條定義公式出發(fā),在分析其求導(dǎo)公式形式的基礎(chǔ)上,總結(jié)出了低次B樣條曲線的參數(shù)簡(jiǎn)易求法,完成了對(duì)原B樣條曲線的降階處理,進(jìn)而實(shí)現(xiàn)了相對(duì)的曲率求解算法。該算法避免了對(duì)B樣條曲線進(jìn)行復(fù)雜的多次求導(dǎo)運(yùn)算,具有一定的工程意義。
[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]康蘭,趙文.基于散亂數(shù)據(jù)點(diǎn)的B樣條曲線反求方法[J].機(jī)械設(shè)計(jì)與制造,2009,(9):221-223.
[3]施法中.計(jì)算機(jī)輔助設(shè)計(jì)與非均勻有理B樣條[M].北京:高等教育出版社,2011.
[4]郭風(fēng)華,楊興強(qiáng).調(diào)整節(jié)點(diǎn)矢量對(duì)B樣條曲線的影響[J].計(jì)算機(jī)工程與科學(xué), 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]秦開(kāi)懷,孫家廣,范剛.三次NURBS曲線的插值方法[J].計(jì)算機(jī)輔助設(shè)計(jì)與圖形學(xué)學(xué)報(bào),1993,5(3):179-183.