第五章+曲線曲面全.ppt_第1頁
第五章+曲線曲面全.ppt_第2頁
第五章+曲線曲面全.ppt_第3頁
第五章+曲線曲面全.ppt_第4頁
第五章+曲線曲面全.ppt_第5頁
已閱讀5頁,還剩102頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第六章 曲線與曲面,曲線曲面的表示是計算機圖形學的重要研究內(nèi)容之一。 現(xiàn)代產(chǎn)品設(shè)計中,對于諸如飛機、汽車、船舶等具有復雜曲面外形的產(chǎn)品,需要使用數(shù)學工具來描述其幾何形狀,以滿足產(chǎn)品在流體動力性能和造型方面的要求,這促進了曲線與曲面的研究。,曲線和曲面功能是目前大多數(shù)商用CAD系統(tǒng)(尤其是中、高端系統(tǒng))的重要組成部分,是應用CAD技術(shù)進行產(chǎn)品造型設(shè)計的重要手段之一。 對工程技術(shù)人員來說,了解和掌握有關(guān)曲線與曲面的基本知識,是熟練運用相關(guān)工具的基礎(chǔ)和前提。,自由曲線曲面的發(fā)展過程,目標:美觀,且物理性能最佳,1963年,美國波音飛機公司,F(xiàn)erguson雙三次曲面片,19641967年,美國MIT

2、,Coons雙三次曲面片,1971年,法國雷諾汽車公司,Bezier曲線曲面,1974年,美國通用汽車公司,Cordon和Riesenfeld, Forrest, B樣條曲線曲面,1975年,美國Syracuse大學,Versprille有理B樣條,80年代,Piegl和Tiller, NURBS方法,6.1 曲線和曲面基礎(chǔ),在我們遇到的各種各樣的曲線大概不外乎兩類:一類是我們已經(jīng)比較熟悉的,如圓、橢圓、雙曲線、正弦余弦、概率分布、擺線螺線等等。這類曲線均可以用一個曲線方程式來表示,稱此類曲線為規(guī)則曲線。比如圓的方程可以寫成 x2y2 = R2等,另有一類曲線,我們尚不能確切給出描述整個曲線的

3、方程,它們往往是由一些從實際中測量得到的一系列離散數(shù)據(jù)點用曲線擬合方法來逼近的,稱為不規(guī)則曲線。這些曲線一般采用分段的多項式參數(shù)方程來表示,由此形成一條光滑連續(xù)的曲線稱為樣條曲線或簡稱樣條。,1.非參數(shù)表示 顯式表示 對于一條曲線,如果一個坐標變量能夠顯式地表示為另一個變量的函數(shù),就得到了該曲線的顯式表示。平面曲線顯式表示的一般形式是 一條直線方程 在顯式表示中,每一個x值只對應一個y值,所以用顯式方程不能表示封閉或多值曲線,例如不能用顯式方程表示一個圓。,6.1.1 曲線的表示,隱式表示 平面曲線隱式表示的般形式為: 例如,二次隱式方程的般形式可寫成 (9.1) 該隱式方程可以表示拋物線、雙

4、曲線和橢圓等。 三維空間曲線的隱式表示式為交面式: 曲線的非參數(shù)表示存在的問題是: 與坐標系相關(guān); 會出現(xiàn)斜率為無窮大的情況(如垂線); 非平面曲線難用常系數(shù)的非參數(shù)化函數(shù)表示,例如式(9.2);,(9.2),2參數(shù)表示 曲線的參數(shù)表示是指將曲線上各點的坐標變量顯式地表示成參數(shù)的函數(shù)形式。若取參數(shù)為 ,則曲線的參數(shù)表示為 (9.3) 其中 , 和 分別是 的顯式函數(shù) 通常將參數(shù)區(qū)間規(guī)范化為0,1。參數(shù)方程中的參數(shù)可以代表任何量,如時間、角度等。 最簡單的參數(shù)曲線是直線。連接 和 兩點的直線段的參數(shù)方程可寫為,取角度為參數(shù)時,x和y的關(guān)系如圖9.1(a)所示;取t為參數(shù)時,x和y的關(guān)系如圖9.1

5、(b)所示,其中和t為等距取值。,第一象限內(nèi)單位圓弧的表示形式,y,(a),y,(b),一條參數(shù)曲線的表示形式并不是惟一的,例如在第一象限內(nèi)的單位圓弧可表示成 其中,0t1,對曲線曲面,參數(shù)表示比非參數(shù)表示更優(yōu)越:,參數(shù)方程的形式不依賴于坐標系的選取,具有形狀不變性; 在參數(shù)表示中,變化率以切矢量表示,不會出現(xiàn)無窮大的情況; 對參數(shù)表示的曲線、曲面進行平移、比例、旋轉(zhuǎn)等幾何變換比較容易; 用參數(shù)表示的曲線曲面的交互能力強,參數(shù)的系數(shù)幾何意義明確,并提高了自由度,便于控制形狀。,1 參數(shù)曲線的切線、法線和曲率,當曲線上的點Q趨于M時,割線的極限位置稱為曲線在點M處的切線。若參數(shù)曲線上任一點的坐標

6、為p(t) = x(t),y(t),z(t),則該點的切線方程即為參數(shù)曲線在該點處的一階導函數(shù),即p(t) = x(t),y(t),z(t)。,法線就是垂直切線方向且通過該點的直線。,6.1.2 參數(shù)曲線和曲面的基本概念,曲線上兩點M和Q的切線的夾角與弧長MQ之比,當Q趨于M時的極限,即,稱為曲線在M點的曲率,如圖6.1所示。曲率也是切線的方向角對于弧長的轉(zhuǎn)動率,其值為,圖6.1 曲線的曲率,2 插值、逼近和擬合,給定空間一組有序的控制點(control point),得到一條光 滑的分段參數(shù)多項式曲線的方法。 1這條曲線順序經(jīng)過所有的控制點,則稱為對這些控制點進行 插值,得到的曲線稱為插值曲

7、線 2構(gòu)造一條在某種意義下最靠近控制點的曲線,這稱為對這些 控制點進行逼近,得到的曲線稱為逼近曲線,(a) 5個控制點的插值曲線 (b) 5個控制點的逼近曲線,而曲線的擬合則是這兩種設(shè)計方法的統(tǒng)稱,是指在曲線的設(shè)計過程中,用插值或逼近方法使生成的曲線達到某些設(shè)計要求,如在允許的范圍內(nèi)貼近原始的型值點或控制點序列,或曲線看上去很光滑等。,3參數(shù)連續(xù)性和幾何連續(xù)性,參數(shù)連續(xù)性 C0連續(xù) :簡單地將曲線連接起來 C1連續(xù) : 1 曲線連接 2 兩個曲線段在連接處的一階導數(shù)相等 C2連續(xù) : 1 將曲線連接起來 2 保證兩個曲線段在連接處的一階導數(shù)和二階導數(shù)都相等 C0 C1 C2分別稱為0階、1階和

8、2階的參數(shù)連續(xù)性,將兩個曲線段連接成一段光滑曲線的時候,我們關(guān)心 的是曲線段在連接處的連續(xù)性。,幾何連續(xù)性,G0連續(xù) 簡單地將曲線連接起來 G1連續(xù) 如果兩個曲線段在連接處為G0連續(xù),并且一階導數(shù)(切 向量)方向相同(長度可以不同) 。 G2連續(xù) 如果兩個曲線段在連接處為G0、G1連續(xù),并且二階導數(shù) 方向相同(長度可以不同) 達到Gn連續(xù)的條件依此類推。 G0 G1 G2分別稱為0階、1階和2階的幾何連續(xù)性,6.2 二次插值樣條曲線,6.2.1 二次插值樣條曲線的數(shù)學表達式,在擬合生成樣條曲線的眾多方法中,我們首先選擇較為簡單的二次樣條曲線即拋物樣條曲線的生成方法作為基本方法,來討論如何用插值

9、方法生成通過給定離散型值點的樣條曲線。實際上,二次Bezier曲線和二次B樣條曲線也是拋物樣條曲線,但它們采用的方法是逼近方法。,由于離散點的要求,我們首先要解決由給定點定義拋物線問題。設(shè)有不在同一直線上的三點:P1, P2, P3,現(xiàn)在要求通過該給定的三點定義一條拋物線。如圖5.2所示。,圖5.2 過三點的二次曲線,假如我們采用矢量表達式來表示參數(shù)化的二次曲線,那么可以把拋物線的表達式寫成如下的一般形式為:,P(t)= A1 + A2t + A3t2 (0 t1) (6-1),拋物線是一條二次曲線,所以表達式中參數(shù)t的最高次數(shù)為2,同時讓參數(shù)t在0l之間取值。,這就是說,只要確定了式(51)

10、中的三個系數(shù):A1,A2和A3,那么就確定了拋物線的表達式,隨之拋物線的曲線圖形也就可以確定。所以,我們的工作是要通過設(shè)定一些已知條件來求出這三個系數(shù)。,要確定這三個系數(shù)(目前尚為未知數(shù)),必須要有三個獨立的條件。我們可以給定這三個獨立條件為:,該拋物線過P1,P2,P3三個點,并且: 拋物線段以P1點為始點。即當參變量t = 0時,曲線過P1點;拋物線段以P3點為終點。即當參變量t = 1時,曲線過P3點;當參變量t = 0.5時,曲線過P2點.,在這三個設(shè)定的條件下,構(gòu)造的拋物線段如圖5.3所示。,P1,P2,P3,t=0,t=0.5,t=1,圖5.3 過3點定義的二次曲線,根據(jù)以上設(shè)定的

11、條件,可以列出三個方程: t = 0:P(0)= A1 = P1 t = 1:P(1)= A1A2十A3 = P3 (5-2) t = 0.5;P(0.5)= A10.5A20.25A3 = P2,所以,通過解聯(lián)立方程,得到的三個系數(shù)A1,A2,A3分別為: A1 = P1 A2 = 4P2P33P1 (5-3) A3 = 2P12P34P2,把求出的該三個系數(shù)的值,代入到拋物線的表達式,P(t)= A1 + A2t + A3t2 (0 t1) (6-1),P(t)= A1 + A2t + A3t2 = P1 +(4P2 P3 3P1)t + (2P12P3 4P2)t2 = (2t2 3t

12、+ 1)P1 +(4t 4t2)P2 + (2t2 t) P3 (5-4) (0t1),可把式(5-4)改寫成矩陣形式為:,以上推導求出的算式,即為我們所要求的過不在一直線上的三點:P1(x1,y1),P2(x2,y2)和P3(x3,y3)的拋物線方程。這時根據(jù)參變量t的取值,我們就可以一一計算出位于曲線上的數(shù)據(jù)點,然后順次連線繪出圖形。,6.1.3三次參數(shù)曲線的多項式表示,三次參數(shù)多項式曲線 的代數(shù)表示形式是 將上式改寫成矢量的形式 缺點 1 沒有明顯的幾何意義 2 與曲線的關(guān)系不明確,導致曲線的形狀控制困難,6.2 Hermite樣條曲線,Hermite樣條曲線是以法國數(shù)學家Charles

13、 Hermite命名的,是一個分段三次多項式,定義: 給定4個矢量 ,稱滿足下列條件的三次多項式曲線P(t)為Hermite曲線,P0,P1,R0,R1,在這樣的前提下,對于每一個三次曲線段,就有了四個獨立條件,它們是:兩個端點的位置向量及曲線在兩端點處的切矢。于是,根據(jù)這四個條件,就可以求出分段表達式中的四個系數(shù)。,三次參數(shù)曲線表達式為,其導函數(shù)為,將Hermite曲線條件代入,上述公式可寫成如下矩陣形式:,=,=,=,可推出,三次參數(shù)曲線表達式為,寫成矩陣 形式即:,P(t)=T Mh Gh,Mh是Hermite矩陣。Gh是Hermite幾何矢量。,通常將T Mh稱為Hermite基函數(shù)(

14、或稱混合函數(shù),調(diào)和函數(shù)):,形狀控制,6.3 Cardinal樣條曲線,像Hermite樣條曲線一樣,Cardinal樣條曲線也是分段三次插值曲線,且每曲線段終點處均指定切線。與Hermite樣條的區(qū)別是,不一定要給出終點的切線值。在Cardinal樣條曲線中,一個控制點處斜率值可由兩個相鄰控制點坐標來計算。,一個Cardinal樣條曲線完全由四個連續(xù)控制點給出。中間兩個控制點是曲線段端點,另二個點用來計算終點斜率。如圖5.12所示,設(shè)P(t)是兩控制點Pk和Pk+1間的參數(shù)三次函數(shù)式,則從Pk-1到Pk+2間的四個控制點用于建立Cardinal樣條曲線段的邊界條件:,圖6.12 兩控制點Pk

15、和Pk+1間的參數(shù)三次函數(shù)式P(t),P(0) = Pk P(1) = Pk+1 P(0) =1/2(1-ts)(Pk+1- Pk-1) (6-18) P(1) = 1/2(1-ts)(Pk+2- Pk),則控制點Pk和Pk+1處的斜率分別與弦Pk-1Pk+1和PkPk+2成正比(圖5.13)。參數(shù)ts稱為張力(tension)參數(shù),因為ts控制Cardinal樣條曲線與輸入控制點間的松緊程度。,圖6.13 控制點Pk和Pk+1處的斜率分別與弦Pk-1Pk+1和Pk Pk+2成正比,圖6.14說明了張力ts取很小和很大值時Cardinal曲線的形狀。當ts=0時,這類曲線稱為Catmull-R

16、om樣條曲線或Overhauser樣條曲線。,ts0(較緊曲線) 圖6.14 張力參數(shù)ts在Cardinal曲線形狀中的作用,用類似Hermite樣條曲線中的方法,我們可以將邊界條件(6-18)轉(zhuǎn)換成矩陣形式:,這里s=(1-ts)/2。,將矩陣方程(6-19)展開成多項式形式,有: P(t)=Pk-1(-st3+2st2-st)+Pk(2-s)t3+(s-3)t2+1+ Pk+1(s-2)t3+(3-2s)t2+st+Pk+2(st3-st2) (6-20),以下是Cardinal樣條曲線的C程序:,void CardinalSpLine(POINT *pp, float tension)

17、int x,y,j,k=1000; double t,t1,t2,t3,a,b,c,d,s; t=1.0/k;s=(1.0-tension)/2.0; MoveTo(pp1); for(j=0;j=k;j+) t1=j*t; t2=t1*t1; t3=t2*t1; a=-s*t3+2*s*t2-s*t1; b=(2-s)*t3+(s-3)*t2+1; c=(s-2)*t3+(3-2*s)*t2+s*t1; d=s*t3-s*t2; x=int(a*pp0.x+b*pp1.x+c*pp2.x+d*pp3.x); y=int(a*pp0.y+b*pp1.y+c*pp2.y+d*pp3.y); Li

18、neTo(x,y); ,void main() int gdriver=DETECT,gmode; POINT ps4;ps0.x=50;ps0.y=300; ps1.x=150;ps1.y=50; ps2.x=250;ps2.y=300;ps3.x=350;ps3.y=50; registerbgidriver(EGAVGA_driver); initgraph( ,6.4 Bzier曲線,Bzier曲線是一段n次多項式曲線,是構(gòu)造自由曲線曲面的重要和基本方法之一。,Bzier曲線的形狀是通過一組多邊折線(也稱為貝濟埃多邊形或特征多邊形)定義出來的。 折線的各頂點中,第一點和最后一點在曲線上

19、的,其余的頂點則用來定義曲線的導數(shù)、階次和形狀。第一條邊和最后一條邊表示出了曲線在起點處和終點處的切線方向,曲線的形狀趨向于多邊折線的形狀。改變多邊折線的頂點位置和曲線形狀的變化有著直觀的聯(lián)系。,圖6.5 n次Bzier曲線及控制多邊形,稱折線 為 的控制多邊形,稱 各點為 的控制頂點。控制多邊形 是對Bzier曲線 的大致勾畫, 是對控制多邊形的逼近。如圖6.5是n次Bzier曲線和它的控制多邊形。,Bernstein基函數(shù)具有如下形式:,注意:當k=0,t=0時,tk=1,k!=1。,在空間給定 個點 ,稱下列參數(shù)多項式曲線為n次Bzier曲線,6.4.1 Bezier曲線的定義,1一次B

20、ezier曲線(n=1),由于,2二次Bezier曲線(n=2),3三次Bezier曲線(n=3),6.4.2 Bzier曲線的性質(zhì),由Bernstein基函數(shù)的性質(zhì),可得到Bzier曲線的性質(zhì)如下: (1)端點的位置(Bezier曲線的起點、終點與其相應的特征多邊形的起點、終點重合。) (2)端點的切線 Bzier曲線 在起點 處與邊 相切,在終點 處與邊 相切,即,(3)仿射不變性,Bzier曲線具有仿射不變性,也就是說Bzier曲線的形狀和位置僅與它的控制頂點的位置有關(guān),而與仿射坐標系的選擇無關(guān)。仿射不變性的含義可解釋如下:,給定,個點,Bzier曲線。,設(shè) 是由這些點構(gòu)造的n次,把 經(jīng)

21、仿射變換后在新的坐標系,中的曲線記為 。,另一方面,設(shè) 個數(shù)據(jù)點經(jīng)仿射變,換后在新坐標系 中分別為,,由它們構(gòu)成,n次Bzier曲線記為 ,,仿射不變性的含義是,(4)凸包性 Bezier曲線位于其控制頂點的凸包之內(nèi),P0,P1,Pn,Pn-1,P(t),圖6.7 Bzier曲線的凸包性,(5)交互能力 控制多邊形 大致勾畫出了Bzier曲線 的形狀,因此可以通過改變控制多邊形的形狀來改變 的形狀,如圖6.8所示,將控制頂點 移到 處, 的形狀發(fā)生了變化。,另外,移動 的第j個控制頂點 ,將對 上參數(shù)為 的點 的影響最大,對遠離 的點的影響越來越小,這種性質(zhì)也稱為擬局部性。,6.4.3 Bez

22、ier曲線生成算法,double powi(double v,int k) / 計算vk double temp=1.0; if(k=0 | v=0)return 1; / 00=1 else for(int i=1;i=k;i+) temp=temp*v; return temp; ,long fac(int m) /計算m! int i; long temp=1; if(m=0)return 1; / 0!=1 else for(i=2;i=m;i+) temp=temp*i; return temp; ,void bezier(int px,int py,int n) int x,y,i

23、,j,k=100; double t,t1,u,v; double temp,temp1,temp2,bi; t=1.0/k; moveto(px0,py0); for(j=1;jk;j+) t1=j*t; u=t1;v=1u; x=0;y=0;,for(i=0;i=n;i+) temp=double(fac(n)/fac(i)/fac(ni); temp1=powi(u,i); temp2=powi(v,ni); bi=temp*temp1*temp2; x=x+bi*pxi; y=y+bi*pyi; LineTo(x,y); lineto(pxn,pyn); ,這n個點組成一個新的 邊形,

24、對該多邊形重復上述操作,得到一個 邊形的頂點 ,依次類推,連續(xù)作n次后,得到一個單點 ,該點就是式(9.19)Bzier曲線上參數(shù)為t的點 。,6.4.4 Bzier曲線的其他性質(zhì),1Bzier曲線的幾何作圖 給定了控制多邊形頂點 ,用作圖法可以畫出所對應的Bzier曲線,Bzier給出了一種幾何作圖法。 在控制多邊形上以 和 為端點的第i條邊上找一點 ,把該邊分成 的比例,則分點 為 , (9.27),P2,P4,P0,P3,P1,P3,1,P2,2,P2,1 P22,P1,3,P1,2,P0,1,P0,4,P0,3,P0,2,P11,圖9.10 Bzier曲線的幾何作圖,式中 ,l表示遞推

25、的步數(shù),i表示該點位于 相應多邊形的第 條邊上。上式說明,一條n次Bzier曲線可以表示成兩條 次Bzier曲線的線性組合。,讓t在0,1間變動,就得到(9.19)式所示 Bzier曲線,并且向量 是曲線在點 處的切向量,如圖9.10顯示了四次 Bzier曲線取 時的作圖過程。 該作圖過程,可以描述為一個代數(shù)遞推公式,0t1,6.5 Bezier曲面,1Bezier曲面 定義:,BENi,m(u)與BENj,n(v)是Bernstein基函數(shù):,3雙三次Bezier曲面(m=n=3),其中,5.6 B樣條曲線曲面,Bezier曲線的不足: 一 控制多邊形的頂點個數(shù)決定了Bezier曲線的階次

26、二 不能作局部修改,B樣條曲線的性質(zhì),四階(三次)B樣條曲線,當n=9,m=4時,開始的4個控制點P0、P1、P2、P3確定第一個曲線段Q3;最后的4個控制點P6、P7、P8、P9確定最后一個曲線段Q9;整條B樣條曲線是由7個曲線段Q3、Q4、Q9組成的分段參數(shù)多項式曲線。 當m=1時,整條B樣條曲線由n+1個離散的控制點P0、P1、Pn組成。 當m=2時,整條B樣條曲線由n個直線段組成。 當m=n+1時,整條B樣條曲線只包含一個曲線段Qn。,5.6.1 B樣條曲線的定義,通常,給定m+n+1個頂點Pi (i =0, l, 2, , m+n),可以定義m+1段n次的參數(shù)曲線為:,Pi,n(t)

27、 =,(0t1) (5-26),式中:Pi,n(t)為第i段n次B樣條曲線段(i=0,1,m),F(xiàn)k,n(t)為n次B樣條基函數(shù),也稱為B樣條分段混合函數(shù)。其形式為:,連接全部曲線段所組成的整條曲線稱為n次B樣條曲線。依次用線段連接Pi+k(k=0, 1, ,n)所組成的多邊折線稱為B樣條曲線在第i段的B特征多邊形。,n次B樣條曲線可達到n1階連續(xù)。,由式(526)可以看出,B樣條曲線是分段組成的。所以特征多邊形的頂點對曲線的控制靈活直觀。由于整條B樣條曲線能達到n1階的連續(xù),而在工程實際應用中,二階連續(xù)的曲線已能使工程問題的解決相當滿意,所以在實際應用中,三次B樣條曲線和二次B樣條曲線應用得

28、較為廣泛。高于三次的B樣條曲線,由于計算過于復雜,且也不一定適合于一般的工程應用,所以用得很少。,5.5.2 二次B樣條曲線,對于二次B樣條曲線,n=2,i=0, l, 2。所以式(5-27)可以寫成如下形式:,因此,二次B樣條曲線的分段表達式可以寫成如下的形式: Pi(t)= F0,2(t)Pi + F1,2(t)Pi+1十F2,2(t)Pi+2 (i= 0,1,2,m),(5-28),綜合起來,二次B樣條曲線還可以寫成更一般化的形式:,式中, Pk為分段曲線的B特征多邊形的頂點:P0,P1,P2。第i段曲線的Pk即為:Pi,Pi+1,Pi+2連續(xù)的三個頂點。,(5-29),對P(t)求導可

29、得:,(5-30),從式(528),我們可以總結(jié)出二次B樣條曲線在端點處的性質(zhì);,由以上的三對式子說明:二次B樣條曲線段的起點P(0)在B特征多邊形第一條邊的中點處,且其切向量B1B0即為第一條邊的走向;終點P(1)在B持征多邊形線第二條邊的中點處,且其切向量B2B1即為第二條邊的走向。而且, P( )正是P(0)B1P(1)的中線B1M 的中點,且在P( )處的 切線平行于 。因此, 分段二次B樣條曲線是一條 拋物線。見圖5.17所示。,圖5.17 二次B樣條曲線,可見,由n個頂點定義的二次B樣條曲線,實質(zhì)上是n2段拋物線(相鄰三點定義)的連接,并在連接處達到一階連續(xù)。,5.5.3 三次B樣

30、條曲線,對于三次B樣條曲線,n=3,k=0,1,2,3。所以式(5-27)可以分別寫成如下形式:,= (t3 + 3t2 3t + 1),= (3t3 6t2 + 4),= (3t3 + 3t2 + 3t + 1),= t3,所以,三次B樣條曲線的表達式可以寫成:,(5-31),關(guān)于式(5-31)的含義,可以參見對式(5-29)的說明,在此不再贅述。 下面,我們來討論一下三次B樣條曲線的端點性質(zhì)。 由式(5-31)可以進一步推導得:,P(t)= (1t)3 P0+ (3t3 6t2 + 4) P1+ (-3t3 + 3t2 +3t + 1) P2+ t3P3 P (t)= -3(1t)2 P0

31、+ (9t2 12t ) P1+ (-9t2 + 6t+3) P2+ 3t2P3 P”(t)= 6(1t) P0+ (18t 12 ) P1+ (-18t + 6) P2+ 6tP3, 以t的端點值代入,得:,從以上列出的端點結(jié)果我們可以看到,曲線段的起點P(0)位于P0P1P2底邊P0P2的中線P1Pm上,且距P1點的三分之一處。該點處的切矢P(0)平行于P0P1P2的底邊P0P2,且長度為其二分之一。,圖5.18 三次B樣條曲線段,3,如果在B特征多邊形上增加了一個頂點P4,那么P1P2P3P4又可定義一段新的三次B樣條曲線。因為新曲線段起點的有關(guān)數(shù)據(jù)和上一段曲線的終點的有關(guān)數(shù)據(jù)都只和P1

32、、P2、P3三點有關(guān),所以該二段曲線在連接處的位置矢量,一階切矢和二階切矢都應相等,即: P1(1) = P2(0) P1(1) = P2(0) 這就證明了,三次B樣條曲線可以達到二階連續(xù)。,5.5.6 三次B樣條曲線的算法源程序,以下是三次B樣條曲線的C源程序: void BSpLine(CPoint *pp, int n) / int x,y,i,j,k=1000; double t,t1,t2,t3,a,b,c,d; t=1.0/k; moveto(p0.x+4*p1.x+p2.x)/6,(p0.y+4*p1.y+p2.y)/6);,for(i=3;i=n;i+) for(j=0;jk;

33、j+) t1=j*t; t2=t1*t1; t3=t2*t1; a=(3*t2-t3-3*t1+1)/6; b=(3*t3-6*t2+4)/6; c=(3*t2-3*t3+3*t1+1)/6; d=t3/6; x=(int)(a*pi-3.x+b*pi-2.x+c*pi-1.x+d*pi.x); y=(int)(a*pi-3.y+b*pi-2.y+c*pi-1.y+d*pi.y); lineto(x,y); ,void main() int i,n=7,gdriver=DETECT,gmode; POINT ps8; ps0.x=10;ps0.y=300; ps1.x=50;ps1.y=300

34、; ps2.x=150;ps2.y=50; ps3.x=250;ps3.y=300; ps4.x=350;ps4.y=50; ps5.x=400;ps5.y=90; ps6.x=400;ps6.y=150; ps7.x=550;ps7.y=50; registerbgidriver(EGAVGA_driver); initgraph( ,B樣條曲線的性質(zhì),局部性 曲線段Qi只與m個控制點Pi-m+1、Pi-m+2、Pi有關(guān)。反過來,移動控制點Pi只影響m個曲線段Qi、Qi+1、Qi+m-1,對其余曲線段沒有影響。,B樣條曲線的性質(zhì): 在t取值范圍內(nèi),多項式曲線的次數(shù)為m-1,并且具有Cm-2連

35、續(xù)性. B樣條曲線基函數(shù)的次數(shù)與控制頂點個數(shù)無關(guān)。 幾何不變性.,k=(0,1,.,n)稱為m階(m-1次)B樣條基函數(shù),它是由非遞減序列 t0=t1=.=tn+m(稱為節(jié)點矢量)所決定的m階(m-1次)分段多項式。,6.6.1 B樣條曲線的定義,定義:,其中,Pk (k=0,1,.,n)是控制多邊形的頂點,B樣條基函數(shù),Bk,m(t)只在區(qū)間 tk,tk+m) 內(nèi)為非負值,在其它區(qū)間內(nèi)為0,B樣條曲線的性質(zhì),參數(shù)變化區(qū)間 B樣條曲線是分段參數(shù)多項式曲線,開始的m個控制點P0、P1、Pm-1確定其第一個曲線段,對應的基函數(shù)分別為B0,m(t)、B1,m(t)、Bm-1,m(t),B0,m(t)

36、在區(qū)間t0,tm)內(nèi)為非負值,B1,m(t)在區(qū)間t1,tm+1)內(nèi)為非負值,Bm-1,m(t)在區(qū)間tm-1,t2m-1)內(nèi)為非負值,它們的公共區(qū)間為tm-1,tm)。,即第一個曲線段由P0、P1、Pm-1控制,參數(shù)變化區(qū)間為tm-1,tm),該曲線段記為Qm-1; 第二個曲線段由P1、P2、Pm控制,參數(shù)變化區(qū)間為tm,tm+1),該曲線段記為Qm; 如此類推。 最后的m個控制點Pn-m+1、Pn-m+2、Pn控制一個曲線段,參數(shù)變化區(qū)間為tn,tn+1),該曲線段記為Qn; 由此可見,整條B樣條曲線是由n-m+2個曲線段Qm-1、Qm、Qn組成的分段參數(shù)多項式曲線,整條曲線的參數(shù)變化區(qū)間

37、為tm-1,tn+1)。,節(jié)點矢量:節(jié)點矢量分為三種類型:均勻的,開放均勻的和非均勻的。 當節(jié)點沿參數(shù)軸均勻等距分布,即tk+1-tk=常數(shù)時,表示均勻B樣條函數(shù)。 當節(jié)點沿參數(shù)軸的分布不等距,即(tk+1-tk)常數(shù)時,表示非均勻B樣條函數(shù)。,1均勻周期性B樣條曲線,T=(-2,-1.5,-1,-0.5,0,0.5,1,1.5,2) T=(0,1,2,3,4,5,6,7) 均勻B樣條的基函數(shù)呈周期性: 每個后繼基函數(shù)僅僅是前面函數(shù)平移的結(jié)果.,均勻一次(二階)B樣條曲線,曲線段Qi的參數(shù)方程為 Qi(t)=Bi-1,2(t)Pi-1+Bi,2(t)Pi =B0,2(t-i+1)Pi-1+B0,2(t-i)Pi =(1-(t-i)Pi-1+(t-i)Pi,1in,iti+1 (1.7.15) 令t=t-i,那么曲線段Qi的參數(shù)方程為,均勻一次(二階)B樣條曲線,二階(一次)均勻B樣條曲線就是曲線的控制圖本身, 整條曲線為C0連續(xù)。,均勻二次(三階)B樣條曲線,取n=3,m=3,則n+m=6,不妨設(shè)節(jié)點矢量為:T=(0,1,2,

溫馨提示

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

最新文檔

評論

0/150

提交評論