摘 要: 提出了均勻三次B-spline曲線反算的快速算法,。在Matlab中編程實(shí)現(xiàn),大大降低了程序的復(fù)雜性,,提高了運(yùn)算效率,,并使重構(gòu)所得曲線的兩個(gè)端點(diǎn)處曲率不為零,滿足了一階連續(xù),,并給出了應(yīng)用實(shí)例,。
關(guān)鍵詞: 逆向工程;B-spline,;反算算法,;Matlab
在計(jì)算機(jī)輔助幾何設(shè)計(jì)(CAGD)實(shí)踐中,常遇到設(shè)計(jì)者事先并不知道控制多邊形頂點(diǎn)的位置,,而只知道曲線上的某些型值點(diǎn)的情況,。從設(shè)計(jì)角度上來說,通??紤]的是曲線的大致形狀,,而非控制多邊形的大致形狀。為了構(gòu)造B-spline曲線,就需要由已知的型值點(diǎn)反算出控制多邊形的頂點(diǎn),。在實(shí)際工程應(yīng)用中,,B-spline 曲線的反算過程所涉及到的計(jì)算量很大,因此討論B-spline 曲線的快速反算算法有著很重要的意義[1],。
對于三次均勻B-spline曲線的反算,,朱心雄[2]給出了一種計(jì)算速度快且易于編程的反算控制頂點(diǎn)的迭代方法,可以得到在允許誤差范圍內(nèi)的C2連續(xù)曲線,。而參考文獻(xiàn)[3]通過A-1的研究對三對角矩陣提出了一種優(yōu)于追趕法和LU分解法的求解方法,。但是它們都是以兩端曲率為零作為邊界條件,可能出現(xiàn)人們所不希望看到的曲線在端點(diǎn)處不連續(xù)的現(xiàn)象,。針對B-spline 曲線的反算過程計(jì)算量大,,重構(gòu)曲線端點(diǎn)處曲率不連續(xù)的問題,本文提出了一個(gè)有效的解決辦法,,并在Matlab[4]中予以編程實(shí)現(xiàn),,大大降低了程序的復(fù)雜性,提高了運(yùn)算效率,,并使重構(gòu)所得曲線的兩個(gè)端點(diǎn)處曲率不為零,,至少滿足了一階連續(xù)。
式中總共有m+1個(gè)線性方程組,,但有n+1個(gè)控制頂點(diǎn)未知量,。因此,要想得到唯一解,,需要另外補(bǔ)充兩個(gè)方程,,這兩個(gè)方程一般由邊界條件給定。邊界的補(bǔ)充條件有多種形式,,如給定兩端點(diǎn)的切向量,、自由端點(diǎn)條件、虛節(jié)點(diǎn)條件和拋物線條件等,,實(shí)際應(yīng)用中根據(jù)具體情況選取適合的邊界補(bǔ)充條件,。有了補(bǔ)充方程,即可用迭代法或追趕法等求解所建立的線性方程組,。
2 快速反算算法
將定義在每一個(gè)節(jié)點(diǎn)區(qū)間上用整體參數(shù)u表示的B-spline基變換成用局部參數(shù)t∈[0,,1]表示,則三次均勻B-spline曲線段的矩陣表示為:
參考文獻(xiàn)
[1] 劉德平.逆向工程關(guān)鍵技術(shù)及其應(yīng)用研究[D].西安:西安電子科技大學(xué),,2008.
[2] 朱心雄.自由曲線曲面造型技術(shù)[M].北京:科學(xué)出版社,,1999.
[3] 吳光亞,王小華.反求三次B樣條曲線控制頂點(diǎn)的一種快速算法[J].杭州電子科技大學(xué)學(xué)報(bào),,2005,,25(3):64-66.
[4] 王學(xué)輝,,張明輝.Matlab 6.1最新應(yīng)用詳解[M].北京:中國水利水電出版社,2002.