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