產(chǎn)品建模中NURBS曲線的連續(xù)性研究_第1頁
產(chǎn)品建模中NURBS曲線的連續(xù)性研究_第2頁
產(chǎn)品建模中NURBS曲線的連續(xù)性研究_第3頁
產(chǎn)品建模中NURBS曲線的連續(xù)性研究_第4頁
產(chǎn)品建模中NURBS曲線的連續(xù)性研究_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、產(chǎn)品建模中NURBS曲線的連續(xù)性研究摘要:優(yōu)秀的產(chǎn)品數(shù)據(jù)模型能夠大大地提高設(shè)計(jì)生產(chǎn)各個環(huán)節(jié)的工作效率,本文以Rhino為例,探討了建立NURBS數(shù)據(jù)模型中最基礎(chǔ)而最重要的工作調(diào)整曲線的連續(xù)性,提出了調(diào)整曲線從G0連續(xù)到G3以上連續(xù)性的幾種方法。關(guān)鍵詞:NURBS,曲線連續(xù),產(chǎn)品建模一、 曲線的幾何連續(xù)性 連續(xù)性在計(jì)算機(jī)輔助設(shè)計(jì)領(lǐng)域是一個非常重要的概念,大多數(shù)情況下因?yàn)闊o法用一條曲線(曲面)來完整地描述產(chǎn)品,需要多條曲線(曲面)拼接才能實(shí)現(xiàn),那么無論從產(chǎn)品的外觀設(shè)計(jì)需要、力學(xué)結(jié)構(gòu)需要、加工需要等方面,都要求各個拼接曲線(曲面)之間保持良好的光滑和統(tǒng)一性,這種統(tǒng)一性表現(xiàn)在數(shù)學(xué)上就要用曲線(曲面)的

2、連續(xù)性來保證。在建立數(shù)據(jù)模型的時候,曲面都是在曲線的基礎(chǔ)上建立起來的,曲線的質(zhì)量直接決定了曲面的質(zhì)量,因此本文以Rhino為例著重探討建模中NURBS曲線的連續(xù)性問題。 在數(shù)學(xué)上,常用參數(shù)連續(xù)的概念C0、C1、C2來描述兩端曲線曲面之間的連續(xù)性關(guān)系,“如果曲線在連接處具有直到n階連續(xù)導(dǎo)矢,即n次連續(xù)可微,這類光滑度稱之為或n階參數(shù)連續(xù)性” 1,也就是說如果兩段曲線在連接點(diǎn)具有對參數(shù)u的相同的n階導(dǎo)數(shù),那么就稱它們?yōu)樵谶B接點(diǎn)n階參數(shù)連續(xù)。例如連續(xù)是指兩段曲線在連接點(diǎn)處2階導(dǎo)數(shù)相等,這對于兩段拼接曲線的參數(shù)提出了嚴(yán)格的要求。在工程應(yīng)用上,人們發(fā)現(xiàn)數(shù)學(xué)上嚴(yán)格的參數(shù)連續(xù)性并不能保證兩段曲線曲面的光滑,

3、因此采用了相對寬松的幾何連續(xù)性 (Geometric Continuity)概念,幾何連續(xù)性延續(xù)了參數(shù)連續(xù)的部分要求,但主要著眼于工程產(chǎn)品的表面視覺特征。 G0連續(xù)(位置連續(xù)):兩條曲線的端點(diǎn)位于同一位置,即第一條曲線的末端點(diǎn)與第二條曲線的首端點(diǎn)重合,位置連續(xù)是兩條曲線擺脫不連續(xù)狀態(tài)的最低條件。G1連續(xù)(相切連續(xù)):兩條曲線符合G0連續(xù),而且在端點(diǎn)重合的地方切線方向相同。 G2連續(xù)(曲率連續(xù)):兩條曲線滿足G1連續(xù)條件,而且在端點(diǎn)重合的地方曲率半徑相同。G3連續(xù):如果兩條曲線在連接點(diǎn)對各自弧長的3階導(dǎo)數(shù)相等,則兩條曲線在連接點(diǎn)具有3階連續(xù)性,它的幾何意義是兩條曲線的曲率變化率相等。G4連續(xù):可

4、以理解為兩條曲線在連接點(diǎn)曲率變化率的變化率相等,更高階的連續(xù)性可以計(jì)算,但很難有直觀的幾何意義。 在產(chǎn)品設(shè)計(jì)實(shí)踐中,應(yīng)用比較普遍地是G0、G1和G2連續(xù),對曲面要求比較高的產(chǎn)品如汽車外殼、飛機(jī)外殼等則要求更高的曲線曲面間的連續(xù)性。 二、 調(diào)整兩條曲線連續(xù)性 在Rhino中所建的Nurbs曲線可以是單條曲線,也可以是多條曲線拼接而成,相應(yīng)地曲線連續(xù)性問題就分為單條曲線連續(xù)性和多條曲線間連續(xù)性兩種情況。單條曲線分為單跨距曲線和多跨距曲線兩種,曲線內(nèi)是處處連續(xù)的,曲線內(nèi)不同跨距間連續(xù)性階數(shù)是曲線的階數(shù)減一,比如多跨距3階曲線,其跨距間可達(dá)到2階連續(xù);多跨距5階曲線,其跨距間可達(dá)到4階連續(xù),依次類推。

5、在現(xiàn)實(shí)設(shè)計(jì)和生產(chǎn)中,產(chǎn)品形狀千變?nèi)f化,很多時候用單條曲線很難表達(dá)產(chǎn)品形狀,轉(zhuǎn)而用多條曲線拼接來表達(dá)形態(tài)。所以目前在生產(chǎn)中遇到最多的就是如何拼接多條曲線,使之達(dá)到更好的連續(xù)性。下面我們以兩條曲線為例,討論如何使之連續(xù)。 在Rhino中,調(diào)整拼接曲線的連續(xù)性有自動和手動兩種方法。對于自動調(diào)整的方法,程序提供了調(diào)節(jié)曲線間連續(xù)性的工具(銜接曲線),可以進(jìn)行位置連續(xù)、切線連續(xù)、曲率連續(xù)等三種連續(xù)性操作。這個工具可以把一條曲線變形從而與另一條曲線形成特定的連續(xù)性關(guān)系,變形的曲線節(jié)點(diǎn)只改變了控制點(diǎn)的位置,若銜接成位置連續(xù),曲線2移動一個控制點(diǎn);若銜接成切線連續(xù),則曲線2要移動兩個控制點(diǎn)到新位置;若銜接成曲率

6、連續(xù),曲線2要移動3個控制點(diǎn)到新位置。 對于手動調(diào)整連續(xù)性的方法,則情況比較復(fù)雜,我們在這里簡單地討論下其方法。 (一)、手動調(diào)整拼接曲線到G1連續(xù):如圖1左圖所示,兩條3階曲線1和2首尾連接,是位置連續(xù)的關(guān)系,我們手動移動曲線2的第二個控制點(diǎn)b2,使之與曲線1端點(diǎn)的前兩個控制點(diǎn)a1、b1共線,則曲線1、2在連接點(diǎn)切線方向相同,達(dá)到G1連續(xù),如圖1右圖所示。b2的位置比較靈活,只要它滿足前述共線條件,曲線1、2始終達(dá)到G1連續(xù)。圖1 調(diào)整兩條曲線至G1連續(xù) 具體手動調(diào)整到G1連續(xù)的方法有很多種,可以以a1、a2的重合點(diǎn)為中心點(diǎn),畫出一段直線,然后分別移動控制點(diǎn)b1和b2,使它們都位于此直線上,

7、從而可以使a1、b1、a2、b2這四點(diǎn)共線。也可以用工具沿著a1、b1繪出一條直線,然后把b2移動到這條直線上,也可以實(shí)現(xiàn)相同的目的。(二)、 手動調(diào)整拼接曲線到G2連續(xù):既然手動移動b2的位置可以很容易地使曲線2與曲線1達(dá)到切線連續(xù),那么依此類推,有沒有方法我們可以手動移動控制點(diǎn),使a2、b2、c2同a1、b1、c1保持特定的位置關(guān)系,從而使曲線2與曲線1達(dá)到曲率連續(xù)呢? 我們下面來討論一下。 兩條曲線達(dá)到曲率連續(xù)的時候,它們連接點(diǎn)必須首先達(dá)到G0和G1連續(xù),在此基礎(chǔ)上兩條曲線方程在連接點(diǎn)的二階導(dǎo)數(shù)也相等。B樣條曲線的k階導(dǎo)數(shù)的一般方程為 Les Piegl & Wayne Till

8、er , The NURBS Book , Springer , 2nd. ed., 1997,p97:其中 (1)式中,表示曲線上第i個控制點(diǎn),是曲線階數(shù),k是導(dǎo)數(shù)階數(shù),是節(jié)點(diǎn)。這表明,B樣條曲線的導(dǎo)數(shù)與曲線控制點(diǎn)和節(jié)點(diǎn)結(jié)構(gòu)有特定的函數(shù)關(guān)系。這個公式比較復(fù)雜,我們只例舉特殊情況下的特例,看看它的幾何意義。如圖2一條3階單跨距曲線,我們利用公式(1)求它在端點(diǎn)的切向量和曲率向量。 圖2 一條3階單跨距曲線 圖3 兩條3階單跨距曲線曲線端點(diǎn)的切向量就是曲線方程在端點(diǎn)處的一階導(dǎo)數(shù),曲率向量就是曲線在端點(diǎn)的二階導(dǎo)數(shù),由已知條件可知,3階單跨距曲線的節(jié)點(diǎn)矢量為0,0,0,1,1,1,進(jìn)而可由式(1)計(jì)

9、算出曲線在首端點(diǎn)P0()點(diǎn)和末端點(diǎn)P3()點(diǎn)的一階導(dǎo)數(shù)(切向量)分別為: 二階導(dǎo)數(shù)(曲率向量)為: 由計(jì)算結(jié)果我們可以看出,曲線在起點(diǎn)的切向量與前兩個控制點(diǎn)有關(guān),曲率向量與前三個控制點(diǎn)有關(guān);曲線在末點(diǎn)的切向量與最后兩個控制點(diǎn)有關(guān),曲率向量與最后三個控制點(diǎn)有關(guān)。 如圖3所示兩條3階B樣條曲線,曲線1的4個控制點(diǎn)是、,曲線2的4個控制點(diǎn)是、,其中點(diǎn)和重合,兩條曲線達(dá)到位置連續(xù)關(guān)系。如果兩條曲線要達(dá)到G1連續(xù),則它們的連續(xù)性條件可以寫成 莫蓉.吳英.常智勇. 計(jì)算機(jī)輔助幾何造型技術(shù). 科學(xué)出版社.2004年2月第一版.第66頁參考文獻(xiàn)(1) 莫蓉.吳英.常智勇. 計(jì)算機(jī)輔助幾何造型技術(shù). M. 科學(xué)

10、出版社.2004年2月第一版.(2) Les Piegl & Wayne Tiller , The NURBS Book . M. Springer , 2nd. ed (3) 王國瑾.汪國昭.鄭建民.計(jì)算機(jī)輔助幾何設(shè)計(jì). M. 高等教育出版社.施普林格出版社2001年7月第一版(4) David F.Rogers. An Introduction to NURBS With Historical Perspective . M. MORGAN KAUFMANN PUBLISHERS.2001(5) 孫漠舟. 非流形表面轉(zhuǎn)化算法研究 . 中南大學(xué)碩士學(xué)位論文 . 2007年5月.(6)

11、 同濟(jì)大學(xué)應(yīng)用數(shù)學(xué)系.高等數(shù)學(xué). M. 高等教育出版社. 2003年8月第(7) 楊開富.NURBS造型理論及其在產(chǎn)品造型設(shè)計(jì)中的應(yīng)用. J. 包裝工程.2003年6月(8) 王仁宏.李崇君. 朱春鋼.計(jì)算幾何教程. M. 科學(xué)出版社. 2008年6月: (2)是一個正的常數(shù),等于兩條線段的長度比。 若要兩條曲線曲率連續(xù),它們在重合點(diǎn)的曲率向量應(yīng)該相等,結(jié)合切線連續(xù)的條件,G2連續(xù)的條件可以寫成= (3)此處就是切線連續(xù)的兩段線段長度比。 圖4 兩條3階單跨距曲線 圖5 兩條曲線曲率連續(xù)如圖4所示,使=1,也就是線段與長度相等,再使用(銜接曲線)使它們達(dá)到曲率連續(xù),則=可知線段平行于線段。 因

12、此,如果要手動調(diào)整控制點(diǎn)使兩條曲線達(dá)到曲率連續(xù),可以先使和共線并使之長度相等,然后過點(diǎn)畫直線平行于,再將曲線2的第三個控制點(diǎn)移動到這個直線上,則兩條曲線達(dá)到曲率連續(xù)。當(dāng)然這只是一個特例,我們再考慮更普遍的也就是線段與長度不相等的情況,使=0.5,如圖5所示,則有= (4) 上式的幾何意義為,在線段上取一點(diǎn),使=0.25,過畫一條直線平行于,則點(diǎn)位于這條直線上時,可以滿足式(4)的連續(xù)性條件,則兩條曲線達(dá)到曲率連續(xù)。 由此,我們可總結(jié)出手工銜接曲線至曲率連續(xù)的方法和適用條件:1、若采用手工調(diào)整控制點(diǎn)使上述兩條曲線達(dá)到曲率連續(xù),首先使、共線達(dá)到切線連續(xù),并確定二者長度比值,然后在(或延長線)上選一

13、點(diǎn)A,使=,再過A做平行線,然后結(jié)合捕捉工具將控制點(diǎn)移動到此平行線上,則可使兩條曲線達(dá)到曲率連續(xù)。2、由式(1)可知,曲線導(dǎo)數(shù)值與曲線控制點(diǎn)以及節(jié)點(diǎn)的結(jié)構(gòu)有函數(shù)關(guān)系,上述手工調(diào)整控制點(diǎn)的方法推導(dǎo),是建立在兩條曲線端點(diǎn)節(jié)點(diǎn)結(jié)構(gòu)相同的基礎(chǔ)上,如果兩條曲線端點(diǎn)節(jié)點(diǎn)結(jié)構(gòu)不同,會推導(dǎo)出不同的結(jié)果,則此方法不適用。在端點(diǎn)位置節(jié)點(diǎn)結(jié)構(gòu)相同的曲線包括:(1)兩條曲線都是單跨距曲線,階數(shù)相同,如兩條5階單跨距曲線;(2)兩條曲線都是多跨距曲線,階數(shù)相同,節(jié)點(diǎn)均勻;(3)兩條曲線階數(shù)相同,如果是非均勻節(jié)點(diǎn),節(jié)點(diǎn)矢量應(yīng)該是首尾對稱結(jié)構(gòu),例如結(jié)構(gòu)為的節(jié)點(diǎn)矢量滿足要求,觀察節(jié)點(diǎn)矢量中下標(biāo)標(biāo)出的節(jié)點(diǎn)間距,相對于中間的節(jié)點(diǎn)

14、5前后對稱,這樣就保證了曲線在起始點(diǎn)和終點(diǎn)的節(jié)點(diǎn)結(jié)構(gòu)相同。3、在建模應(yīng)用中,應(yīng)用(銜接曲線)結(jié)合(調(diào)節(jié)曲線端點(diǎn)轉(zhuǎn)折)指令來調(diào)節(jié)曲線連續(xù)性和曲線形態(tài)比較高效,我們可以把計(jì)算工作交給計(jì)算機(jī)來完成。手工調(diào)曲率連續(xù)可應(yīng)用在一些特殊的情況下,譬如想把一條曲線的起始端和末尾端連接并調(diào)整成曲率連續(xù),從而把曲線調(diào)成曲率連續(xù)的環(huán)形,如圖6。圖6 把一條曲線調(diào)整首尾曲率連續(xù)三、更高階的連續(xù)性 如果曲面的質(zhì)量要求高于連續(xù),就需要創(chuàng)造更高階的曲線連續(xù)性,但是在Rhino中沒有提供G2以上的連續(xù)性工具,無法把兩條曲線匹配成G3或G4連續(xù)性,只能通過間接的方法來建立G2以上的曲線。最有效的辦法就是創(chuàng)建高階的單條曲線,這條

15、曲線可以有多個節(jié)點(diǎn)跨距,曲線形態(tài)越復(fù)雜,就增加越多的節(jié)點(diǎn)跨距來實(shí)現(xiàn),這種多跨距曲線的連續(xù)性是(階數(shù)-1),譬如多跨距的3階曲線,它在節(jié)點(diǎn)的連續(xù)性是G2連續(xù),這是NURBS曲線的基本性質(zhì)。 如圖7所示,3階B樣條曲線的基函數(shù)由跨4個跨距的4段不同的函數(shù)組合而成,函數(shù)表達(dá)式已在圖中示出,我們可以算出,這4個函數(shù)在節(jié)點(diǎn)的位置具有相同的2階導(dǎo)數(shù),也就是曲率連續(xù)的關(guān)系,這就決定了3階NURBS曲線各個分段曲線在節(jié)點(diǎn)是G2連續(xù)的關(guān)系。依此類推,如果我們要創(chuàng)建一條處處具有最低G3連續(xù)的曲線,那么可 圖7 3階B樣條基函數(shù) 圖8 4階和5階曲線的曲率圖以創(chuàng)建一條4階曲線,如果需要一條處處G4連續(xù)的曲線,那么就

16、需要創(chuàng)建5階曲線,如圖8所示4階和5階曲線曲率圖,4階分段曲線在節(jié)點(diǎn)不僅曲率相同,曲率變化率也相同,5階曲線的曲率圖形與4階曲線相比已看不出區(qū)別了,曲率圖最高只能檢測曲率的差異,更高階的連續(xù)性就需要更高階的連續(xù)性檢測工具才能看出不同。 如果現(xiàn)有兩條已經(jīng)建好的曲線,我們?nèi)绻氚堰@兩條曲線匹配成G3連續(xù)的關(guān)系,該如何操作呢?在Rhino中沒有現(xiàn)成的工具能夠?qū)崿F(xiàn)這個控能,但我們也可以通過間接的方法來實(shí)現(xiàn):我們先把這兩條3階曲線升為4階,再把它們調(diào)整成曲率連續(xù)并合并成一條曲線,然后再把曲線內(nèi)的重復(fù)節(jié)點(diǎn)刪除,那么這條曲線基本維持了原有的形狀,并且在曲線內(nèi)處處達(dá)到G3連續(xù)。依此類推,更高階的連續(xù)性也可以通

17、過同樣的方法來實(shí)現(xiàn)。具體方法如下: 曲線升階的基本算法是要計(jì)算升階后的曲線新控制點(diǎn)位置。Les Piegl & Wayne Tiller介紹了一種非常簡便的曲線升階的算法。如圖9所示一條3階曲線(圖中黑色虛線),為簡便起見,我們先討論單跨距曲線,它沒有內(nèi)節(jié)點(diǎn),有6個端節(jié)點(diǎn)和4個控制點(diǎn),節(jié)點(diǎn)矢量為0,0,0,1,1,1,把它升級到4階曲線以后(圖中紅色線條),它仍然是單跨距曲線,但是它必須增加到8個節(jié)點(diǎn),節(jié)點(diǎn)矢量變?yōu)?,0,0,0,1,1,1,1,控制點(diǎn)數(shù)必然增加到5個。知道了升階以后的節(jié)點(diǎn)矢量,剩下的就是要計(jì)算出升階后的各個新控制點(diǎn)位置,然后就可以繪出升階后的曲線。圖9 3階曲線升階到

18、4階假設(shè)原3階曲線控制點(diǎn)為、,升階到4階后控制點(diǎn)變?yōu)?、,按照Les Piegl & Wayne Tiller的算法,升階后各個新控制點(diǎn)為其中 式中是控制點(diǎn)序號,是曲線階數(shù),在此例中=3,我們可以算出各個新控制點(diǎn)為至此,升階后的節(jié)點(diǎn)矢量以及控制點(diǎn)都已算出,升階后曲線的數(shù)據(jù)結(jié)構(gòu)已經(jīng)非常明確了。在幾何外觀上,升階后的曲線與原曲線完全一樣,但在數(shù)據(jù)結(jié)構(gòu)上則不一樣。 剛才討論了單跨距曲線的升階,如果曲線是一條有內(nèi)節(jié)點(diǎn)、多跨距的曲線呢?Prautzsch、Cohen等對這種情況給出了簡便算法。如圖10所示,一條有內(nèi)節(jié)點(diǎn)a的3階曲線,首先在內(nèi)節(jié)點(diǎn)a處插入2次節(jié)點(diǎn),使a處變成全復(fù)節(jié)點(diǎn),這樣就把整條曲線

19、分成1和2兩段單跨距曲線,再分別對這兩段曲線應(yīng)用上述升階計(jì)算過程,計(jì)算出新的控制點(diǎn),然后再把剛才插入a處的節(jié)點(diǎn)刪掉2次,完成整條曲線的升階計(jì)算。圖10 多跨距3階曲線升階到4階 注意,升階后曲線的節(jié)點(diǎn)重復(fù)度會增加,相應(yīng)地控制點(diǎn)數(shù)量也會增加, 3階曲線升到4階后,端節(jié)點(diǎn)由3重節(jié)點(diǎn)增加到4重節(jié)點(diǎn),圖10所示的內(nèi)節(jié)點(diǎn)a也會變成復(fù)節(jié)點(diǎn)。計(jì)算過程中,原來a處是一個單節(jié)點(diǎn),在此處插入兩個節(jié)點(diǎn)把曲線分成兩個單跨距曲線后,a點(diǎn)增加到3個節(jié)點(diǎn),升階到4階后,a點(diǎn)又升成4個節(jié)點(diǎn),為保證曲線不變形,完成升階后再刪除插入的2個節(jié)點(diǎn),則a點(diǎn)還剩下2個節(jié)點(diǎn)。因此原先曲線節(jié)點(diǎn)矢量是0,0,0,1,2,2,2,升階以后節(jié)點(diǎn)矢量改變?yōu)?,0,0,0,1,1,2,2,2,2,節(jié)點(diǎn)數(shù)量增加到10個,因?yàn)椤肮?jié)點(diǎn)數(shù)=控制點(diǎn)數(shù)+階數(shù)-1”,所以升階以后控制點(diǎn)數(shù)量增加到7個。因此曲線升階后所有節(jié)點(diǎn)都會增加,增加的節(jié)點(diǎn)數(shù)等于增加的階數(shù),假如把10中的3階曲線升階到5階,增加了2階,那么a點(diǎn)的節(jié)點(diǎn)數(shù)將從1個增加到3個,a點(diǎn)將變成3重節(jié)點(diǎn)。 剛才討論的算法是保證升階后的曲線與原曲線完全一致,不會產(chǎn)生形變,如果我們不希望內(nèi)節(jié)點(diǎn)在升階后變成重節(jié)點(diǎn),當(dāng)然可以把重復(fù)的節(jié)點(diǎn)刪掉,但是曲線會產(chǎn)生形變而與原曲線不完全一致。 對于設(shè)計(jì)師來說,如果

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論