第五章Bezier曲面與B樣條曲面_第1頁
第五章Bezier曲面與B樣條曲面_第2頁
第五章Bezier曲面與B樣條曲面_第3頁
第五章Bezier曲面與B樣條曲面_第4頁
第五章Bezier曲面與B樣條曲面_第5頁
已閱讀5頁,還剩70頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第5章

曲線與曲面的生成與計算4/23/2020西安工程大學數(shù)學系1曲面的參數(shù)表示Bezier、B樣條曲線的生成曲面的參數(shù)表示Bezier、B樣條曲面的生成·曲面和曲線一樣,是計算機圖形學中研究的重要內(nèi)容之一,它們在實際工作中有著廣泛的應用。在工程應用中,常用的自由曲面有很多,例如:Bezier曲面、B樣條曲面、

Coons曲面等。

在計算機出現(xiàn)之前以及在計算幾何沒有很好地發(fā)展之前,對于一些工程實際中應用的復雜自由曲面,如飛機、輪船、汽車等幾何外形的描述以及地形形狀的表示,傳統(tǒng)的處理辦法是用一組或幾組平行平面去截這個曲面,畫出幾組截交線來表示這個曲面。例如:船體就是用相互正交的三組平面截得的縱剖線、橫剖線和水平線表示的;4/23/2020西安工程大學數(shù)學系2曲線與曲面的生成與計算·又例如:地面則是用一組水平面截得一組等高線表示的,這實際上是把曲面問題轉(zhuǎn)化為曲線問題。這種處理辦法稱為曲線網(wǎng)格表示法,正是利用這些曲線網(wǎng)格來近似地表示自由曲面。如下所示:4/23/2020西安工程大學數(shù)學系3·因此,在產(chǎn)生一張曲面時,我們可以利用一系列的縱橫交錯且相互平行的樣條曲線來構(gòu)造曲面,如下圖所示。圖曲面的網(wǎng)格4/23/2020西安工程大學數(shù)學系4注:那么我們?nèi)绾未_定這張曲面上任意一點的位置呢?1.若這點恰好落在某一條網(wǎng)格線上,如右圖中的A點,則就可以根據(jù)這條網(wǎng)格線的函數(shù)表示來計算這一點的位置(坐標);2.若這點不在任何網(wǎng)格線上,如右圖中的B點,則無法計算該點的精確位置,只能用離該點最近的一條網(wǎng)格線上的點來近似表示?!τ诓辉诰W(wǎng)格上的點,若用離該點最近的一條網(wǎng)格線上的一點來近似表示,這會使得本來精度不很高的近似曲面在這一點的精度更低,所以用這種方法來產(chǎn)生曲面只能適合一部分精度不很高的場合。我們可以把平面里自由曲線生成方法加以推廣到曲面的生成問題上,借助于曲面的解析表達式來處理有關曲面問題。曲面的種類繁多,為了便于討論,將曲面分為兩類:

一類是規(guī)則曲面,如柱、錐、橢球、環(huán)、雙曲面、拋物面等,它可用參數(shù)方程解析地描述;

另一類是不規(guī)則曲面,如Coons曲面、Bezier曲面、B樣條曲面等,這是構(gòu)造某種曲面的方程問題。本節(jié)我們主要討論Bezier曲面、B樣條曲面的生成與計算。4/23/2020西安工程大學數(shù)學系5·

在計算機繪圖中常用參數(shù)形式表示曲面,自由曲面由曲面片拼接而成,而曲面片又是由曲線構(gòu)成,如下圖所示:5.3

曲面的參數(shù)表示圖曲面片4/23/2020西安工程大學數(shù)學系6·

三維空間任意曲面的圖形如左圖所示,曲面有兩族參數(shù)曲線,或稱為坐標曲線,通常簡稱

u線和v線。圖-參數(shù)曲面4/23/2020西安工程大學數(shù)學系75.3

曲面的參數(shù)表示·當時,代入式子得:上式則是曲面上另一條參數(shù)曲線·

時,代入式子得:上式是曲面上一條參數(shù)曲線,即一條v線。圖-參數(shù)曲面4/23/2020西安工程大學數(shù)學系8即參數(shù)u為定值的曲面上的線。,即一條u線。即參數(shù)v為定值的曲面上的線。5.3

曲面的參數(shù)表示的交點則是。·上述兩條參數(shù)曲線事實上,用圖-參數(shù)曲面和代入式子也得到曲面上同一點位置矢量,即:5.3

曲面的參數(shù)表示4/23/2020西安工程大學數(shù)學系9平面片·

例如:如下圖的平面片方程為:·

上式中矢量

為平面上一點的位置矢量,

和為常矢量,且

不平行于

,該平面片是由矢量

張成的四邊形。eg:當u=1/3,v=1/2時對應平面片中一點:r(1/3,1/2)=r0+a/3+b/24/23/2020西安工程大學數(shù)學系105.3

曲面的參數(shù)表示·

又如下圖所示,以固定方向長度為

的直線段作為母線沿給定一條空間曲線移動生成一個柱面,其方程為:上式中是沿母線方向的常矢量。直線段空間曲線柱面5.3

曲面的參數(shù)表示4/23/2020西安工程大學數(shù)學系115.4

Bezier、B樣條曲面的生成4/23/2020西安工程大學數(shù)學系12下面主要介紹工程上流行應用的Bezier曲面和B樣條曲面一、Bezier(貝塞爾)曲面如前所述,Bezier曲線是一條與控制多邊形頂點位置有嚴格關聯(lián)關系的曲線,Bezier曲線形狀趨向于特征多邊形的形狀,而且階數(shù)由控制多邊形頂點的個數(shù)決定。Bezier曲面是由Bezier曲線拓廣而來,它也是以

Bernstein函數(shù)作為基函數(shù),是由Bernstein基函數(shù)構(gòu)造空間點陣列的位置來控制的。Bezier曲線是由特征多邊形控制的;Bezier曲面則是由特

征網(wǎng)格頂點控制的。二者在表達式上也十分相似。5.4

Bezier、B樣條曲面的生成(1)

Bezier曲面的定義在三維空間中,給定(n+1)X(m+1)個空間點Pij(i=0,1,…,n;

j=0,1,…,m),稱nXm次參數(shù)曲面:為n×m次Bezier曲面。和為Bernstein基是

的控制頂點,函數(shù),具體表示為:5.4

Bezier、B樣條曲面的生成4/23/2020西安工程大學數(shù)學系13·如果用一系列直線段將相鄰的點和

一一連接起來組成一張空間網(wǎng)格

,稱這張網(wǎng)格為nXm次曲面特征網(wǎng)格。如下圖所示為3X3次曲面特征網(wǎng)格。類似于Bezier曲線情況,特征網(wǎng)格框定了Bezier曲面P(u,v)的大致形狀;Bezier曲面P(u,v)是對特征網(wǎng)格的逼近。注:實際應用Bezier曲面時,m和n不宜過大,一般為不大于4,否則特征網(wǎng)格對曲面的控制會減弱。圖Bezier曲面特征網(wǎng)格4/23/2020西安工程大學數(shù)學系145.4

Bezier、B樣條曲面的生成·

Bezier曲面的矩陣表示形式為:5.4

Bezier、B樣條曲面的生成4/23/2020西安工程大學數(shù)學系15(2)

Bezier曲面的性質(zhì)·

Bezier曲面有類似于Bezier曲線的性質(zhì)。·

性質(zhì)1:端點位置由于說明是曲面的四個端點,如左圖所示的3X

3次曲

面的4個端點。圖Bezier曲面端點的切平面和邊界4/23/2020西安工程大學數(shù)學系165.4

Bezier、B樣條曲面的生成·

性質(zhì)2:邊界線位置Bezier曲面的四條邊界線分別是以為控制多邊形的Bezier曲線。圖Bezier曲面端點的切平面和邊界即:Bezier曲面特征網(wǎng)格最外一圈頂點定義Bezier曲面的四條邊界4/23/2020西安工程大學數(shù)學系175.4

Bezier、B樣條曲面的生成圖

Bezier曲面端點的切平面和邊界·

性質(zhì)3:端點的切平面由計算可知,三角中打上斜線的三角形)所在的平面分別在點5.4

Bezier、B樣條曲面的生成4/23/2020西安工程大學數(shù)學系18·

性質(zhì)4:凸包性曲面P(u,v)位于其控制頂點Pij(i=0,1,2,…,n;j=0,1,2,的凸包內(nèi)。如下圖所示:圖Bezier曲面的凸包性5.4

Bezier、B樣條曲面的生成4/23/2020西安工程大學數(shù)學系19·

性質(zhì)5:幾何不變性曲面P(u,v)的形狀和位置與坐標系選擇無關,僅僅和點位置有關。(3)幾個低次Bezier曲面·

由Bezier曲面的定義我們可以推出一次、二次以及三次Bezier曲面的數(shù)學表達式工程上應用較多的是三次Bezier曲面。下面依次討論:5.4

Bezier、B樣條曲面的生成4/23/2020西安工程大學數(shù)學系20·

1)雙一次Bezier曲面

當n=m=1時,為雙一次Bezier曲面,給定

(n+1)X(m+1)=2X2=4個控制點:P00、P01、P10、P11,則5.4

Bezier、B樣條曲面的生成4/23/2020西安工程大學數(shù)學系21所以有:u=0·其圖形表示如左圖所示,可以證明它是一個雙曲拋物面(馬鞍面)上的一塊曲面片。u=1?當u=0和u=1時,代入上式得到的兩條邊界為直線段;

當v=0和v=1時,得到的兩條邊界也為直線段。所以雙一次Bezier曲面由四條直線段包圍而成。v=0圖

雙一次Bezier曲面v=15.4

Bezier、B樣條曲面的生成4/23/2020西安工程大學數(shù)學系22·

2)雙二次Bezier曲面

當n=m=2時,為雙二次Bezier曲面,給定

(n+1)X(m+1)=3X3=9個控制點:P00、P01、P02、P10、P11

、P12、P20、P21

、P22

,則5.4

Bezier、B樣條曲面的生成4/23/2020西安工程大學數(shù)學系23所以有:從而4/23/2020西安工程大學數(shù)學系245.4

Bezier、B樣條曲面的生成圖雙二次Bezier曲面·其圖形表示如左圖所示,可以知道:√

當u取定值時,是關于v的二次參數(shù)曲線;√

同樣,當v取定值時,是關于u的二次參數(shù)曲線;注:P00、P02、P20、P22

是曲面上的四個端點4/23/2020西安工程大學數(shù)學系255.4

Bezier、B樣條曲面的生成

當u=0和u=1時,代入上式得到的兩條邊界為拋物線段;

當v=0和v=1時,另外兩條邊界也為拋物線段。所以雙二次

Bezier曲面由4條拋物線段包

圍而成,如左圖所示。顯然,中間的一個頂點的變化對邊界曲線不產(chǎn)生影響,這意味著在周邊8點不變的情況下,適當調(diào)整點P11就可以控制曲面形狀(凹凸性)。5.4

Bezier、B樣條曲面的生成圖雙二次Bezier曲面4/23/2020西安工程大學數(shù)學系26·3)雙三次Bezier曲面當n=m=3時,為雙三次Bezier曲面,給(n+1)X(m+1)=4X4=16個控制點:Pij(i=0,1,2,3,j=0,1,2,3),則5.4

Bezier、B樣條曲面的生成4/23/2020西安工程大學數(shù)學系27所以有:從而5.4

Bezier、B樣條曲面的生成4/23/2020西安工程大學數(shù)學系285.4

Bezier、B樣條曲面的生成4/23/2020西安工程大學數(shù)學系295.4

Bezier、B樣條曲面的生成4/23/2020西安工程大學數(shù)學系30·雙三次Bezier曲面片的圖形如左圖所示。1.矩陣P表示雙三次Bezier曲面片特征多面體16個控制頂點的位置向量。顯然這16個控制點中只有4個頂點P00、P03、P30和P33位于Bezier曲面上。圖雙三次Bezier曲面4/23/2020西安工程大學數(shù)學系315.4

Bezier、B樣條曲面的生成2.P矩陣中周圍的12個控制點定義了4條三次

Bezier曲線,即邊界曲

線。其余的4個點P11、P21、P12和P22與邊界曲線無關,但影響曲面片的形狀,即適當調(diào)整這4個點就可以控制曲面形狀(凹凸性)。圖雙三次Bezier曲面5.4

Bezier、B樣條曲面的生成4/23/2020西安工程大學數(shù)學系32(4)繪制Bezier曲面及生成程序例:上機編程繪制一三次Bezier曲面,并輸出其運行結(jié)果。1.根據(jù)如下公式,編程繪制Bezier曲面。5.4

Bezier、B樣條曲面的生成4/23/2020西安工程大學數(shù)學系332.參考程序為:

#define

n

15main(){int

px,py,pz,i,j;int

x[n+1][n+1],y[n+1][n+1],x0[4][4],y0[4][4],z0[4float

a[4],c[4],u,v,delta;void

draw();

/*定義畫Bezier曲面的子函數(shù)*/void

input();

/*定義輸入16個控制頂點坐標的子函數(shù)input(x0,y0,z0);5.4

Bezier、B樣條曲面的生成4/23/2020西安工程大學數(shù)學系34delta=1.0/n;/*參數(shù)u、v對區(qū)間[0,1]的分割精度*/·

for(j=0;j<=n;j+=1){v=delta*j;c[0]=(1-v)*(1-v)*(1-v);

c[1]=3*v*(1-v)*(1-vc[2]=3*v*v*(1-v);

c[3]=v*v*v;for(i=0;i<=n;i+=1){u=delta*i;·

a[0]=(1-u)*(1-u)*(1-u); a[1]=3*u*(1-u)*(1·

a[2]=3*u*u*(1-u);

a[3]=u*u*u5.4

Bezier、B樣條曲面的生成4/23/2020西安工程大學數(shù)學系35·

for(j=0;j<=n;j+=1)·

{for(i=0;i<=n;i+=1)}printf("output

the

x[i][j]注::\n因"為)屏;幕顯示器是一二維平面區(qū)域。所以在二維平面里畫Bezier曲面三維立體圖,應將三維空間立體坐標按某種變換轉(zhuǎn)化為二維平面·

printf("x=%d\t",x[i][j])區(qū);域坐標。5.4

Bezier、B樣條曲面的生成px=mutipul(a,x0,c);

py=mutipul(a,y0,c);pz=mutipul(a,z0,c

);x[i][j]=(py*0.7071-px*0.7071+200)*2-300;y[i][j]=(py*0.4082-pz*0.8165+px*0.4082+200)*}4/23/2020西安工程大學數(shù)學系36·

printf("\n");/*根據(jù)點坐標X,Y畫三次Beziergetch();}printf("output

the

y[i][j]:注\n意"):;輸出三次Bfor(j=0;j<=n;j+=1)·

{for(i=0;i<=n;i+=1)·

printf("y=%d\t",y[i][j]);printf("\n");getch();}draw(x,y);/getch();closegraph();}4/23/2020西安工程大學數(shù)學系37ezier曲面上共(n+1)X(n+1)個點的XY坐標值5.4

Bezier、B樣條曲面的生成·

/*-------------1:計算曲面上點P(u,v)的值---*/int

mutipul(a,b,c)float

a[4],c[4];int

b[4][4];{

int

d[4],p,i,j,t;·

for(j=0;j<=3;j+=1){·

d[j]=0;·

for(i=0;i<=3;i+=1){t=a[i]*b[i][j];d[j]=d[j}·

p=0;·

for(i=0;i<=3;i+=1){t=d[i]*c[i];p=p+t;}return

p;

}例如:px=mutipul(a,x0,c);5.4

Bezier、B樣條曲面的生成4/23/2020西安工程大學數(shù)學系38/*-------------2:定義畫Bezier曲面的子函數(shù)------*/void

draw(x,y)int

x[n+1][n+1],y[n+1][n+1];{

int

i,j;int

gdriver=DETECT,gmode;initgraph(&gdriver,&gmode,"D:\\TC");setbkcolor(0);cleardevice();setcolor(15);printf(“Bezier

curved

surface\n\t");for(j=0;j<=n;j+=1){·

for(i=0;i<=n-1;i+=1)4/23/2020西安工程大學數(shù)學系395.4

Bezier、B樣條曲面的生成·

lineto(x[i+1][j],y[i+1][j]);}}·

for(i=0;i<=n;i+=1){·

for(j=0;j<=n-1;j+=1)·

{

moveto(x[i][j],y[i][j]);·

lineto(x[i][j+1],y[i][j+1]);}}}注:根據(jù)曲面上點的坐標,用畫直線的函數(shù)lineto連接曲面上相鄰的兩點,從而生成Bezier曲面。4/23/2020西安工程大學數(shù)學系405.4

Bezier、B樣條曲面的生成·

{

moveto(x[i][j],y[i][j]);*/void

input(x0,y0,z0)int

x0[4][4],y0[4][4],z0[4][4];{int

i,j;intx[16]={20,40,65,180,44,56,107,129,60,65,107141,15,34,75,105};inty[16]={45,190,247,140,65,185,186,115,30,198

230,135,80,220,285,170};intz[16]={40,40,40,40,30,30,30,30,20,20,20,20,0,0,0};4/23/2020西安工程大學數(shù)學系415.4

Bezier、B樣條曲面的生成·

/*------------3:定義輸入16個控制頂點坐標的函·

for(i=0;i<=3;i++)·

{

for(j=0;j<=3;j++)·

y0[i][j]=y[i+j];}·

for(i=0;i<=3;i++){

for(j=0;j<=3;j++)·

z0[i][j]=z[i+j];

}

}{for(j=0;j<=3;j++)注意:16個控制頂點Pij·

x0[i][j]=x[i+j];}·

for(i=0;i<=3;i++)4/23/2020西安工程大學數(shù)學系42(i,j=0,1,2,3)的三個分量坐標分別存放在x0,y0,z0三個二維數(shù)組中。5.4

Bezier、B樣條曲面的生成圖-

三次Bezier曲面4/23/2020西安工程大學數(shù)學系435.4

Bezier、B樣條曲面的生成3.運行結(jié)果:繪制一三次Bezier曲面如下圖所示。(5)Bezier曲面的拼接·

單個Bezier曲面可以通過以下兩步生成:(1)固定v,隨著u變化可得一簇Bezier曲線;(2)固定u,隨著v變化可得一簇Bezier曲線;圖參數(shù)曲面Bezier曲面是由Bezier曲線交織而成的曲面。4/23/2020西安工程大學數(shù)學系445.4

Bezier、B樣條曲面的生成·

然而一個復雜的曲面往往不能用單一的Bezier曲面來實現(xiàn),而要用幾塊Bezier曲面拼接起來。下面我們簡單討論兩張雙三次Bezier曲面的拼接。·

如右圖所示,圖

中給出了兩個相鄰的Bezier曲面

片,分別給命名為P(u,v)Q(u,v)。圖

兩個相鄰的Bezier曲面片5.4

Bezier、B樣條曲面的生成4/23/2020西安工程大學數(shù)學系45·

如果對

中所有的v,若有就可以得到跨界位置處曲面函數(shù)的連續(xù)性.這也就意味著:兩曲面片間的一個公共邊界需要兩個特征多邊形之間的一個共同邊界多邊形。圖

兩個相鄰的Bezier曲面片5.4

Bezier、B樣條曲面的生成4/23/2020西安工程大學數(shù)學系46·

如下圖所示。圖中·即表示兩個曲面相接處共用的多邊形邊界。圖

Bezier曲面片間位置P(u

,v)Q(u,v

)5.4

Bezier、B樣條曲面的生成4/23/2020西安工程大學數(shù)學系47·

要使得跨界處一階導數(shù)連續(xù),即曲面在跨界處光滑,對中的所有v,曲面片(1)在u=1的切平面必須與曲面片(2)在u=0的切平面重合,如下圖所示,即邊界處切平面重合。圖Bezier曲面片間位置P(u

,v)Q(u,v

)注:對于這一點的討論比較復雜,可以參閱有關文件,這里我們不作重點敘述。下面僅討論實現(xiàn)一階導數(shù)連續(xù)的條件。5.4

Bezier、B樣條曲面的生成4/23/2020西安工程大學數(shù)學系48圖-Bezier曲面片的拼接P(u

,v)Q(u,v

)曲面拼接時,根據(jù)曲線的端點性質(zhì),可得實現(xiàn)一階導數(shù)連續(xù)的條件為:1.2.即要求兩曲面片在邊

界線處的控制點重合,且重合點處的左右控

制點(共三點)在一條直線上,如左圖所示。下面僅討論實現(xiàn)一階導數(shù)連續(xù)的條件。當兩個雙三次Bezier討論4/23/2020西安工程大學數(shù)學系495.4

Bezier、B樣條曲面的生成二、B樣條曲面·

與如前所述的Bezier曲面的情況相類似,B樣條曲面也是

B樣條曲線的推廣。因此,構(gòu)造B樣條曲面的方法與構(gòu)造

Bezier曲面的方法類似,也可以通過一個特征多邊形網(wǎng)格頂點來定義,只是基函數(shù)采用了B樣條基函數(shù)。(1)

B樣條曲面的定義在三維空間中,給定(n+1)X(m+1)個空間點Pij

(i=0,1,…,nj=0,1,…,m),稱nXm次參數(shù)曲面:為nXm次B樣條曲面。4/23/2020西安工程大學數(shù)學系505.4

Bezier、B樣條曲面的生成的控制頂點,和為B樣條基函數(shù),其中:是具體表示為:5.4

Bezier、B樣條曲面的生成4/23/2020西安工程大學數(shù)學系51·如果用一系列直線段將相鄰的點和

一一連接起來組成一張空間網(wǎng)格

,稱這張網(wǎng)格為nXm次B樣條曲面特征網(wǎng)格。如下圖所示為3X3次B樣條曲面特征網(wǎng)格。類似于B樣條曲線情況,特征網(wǎng)格框定了B樣條曲面P(u,v)的大致形狀;B樣條曲面P(u,v)是對特征網(wǎng)格的逼近。注:同樣,實際應用B樣條曲面時,m和n不宜過大,一般為不大于4,否則特征網(wǎng)格對曲面的控制會減弱。圖-B樣條曲面特征網(wǎng)格5.4

Bezier、B樣條曲面的生成4/23/2020西安工程大學數(shù)學系52(2)幾個低次B樣條曲面·

1)雙一次B樣條曲面

當n=m=1時,為雙一次B樣條曲面,給定(n+1)X(m+1)=2X2=4個控制點:P00、P01、P10、P11,則5.4

Bezier、B樣條曲面的生成4/23/2020西安工程大學數(shù)學系53所以有雙一次B樣條曲面為:u=0u=1v=0圖雙一次B樣條曲面v=1·如左圖所示,與雙一次Bezier曲面一樣,雙一次B樣條曲面也是雙曲拋物面(馬鞍面)上的一塊曲面片。

當u=0和u=1時,代入上式得到的兩條邊界為直線段;

當v=0和v=1時,得到的兩條邊界也為直線段。所以雙一次B樣條曲面由四條直線段包圍而成。4/23/2020西安工程大學數(shù)學系545.4

Bezier、B樣條曲面的生成·

2)雙二次B樣條曲面

當n=m=2時,為雙二次B樣條曲面,給定(n+1)X(m+1)=3X3=9個控制點:P00、P01、P02、P10、P11

、P12、P20、P21

、P22

,則5.4

Bezier、B樣條曲面的生成4/23/2020西安工程大學數(shù)學系55所以有:5.4

Bezier、B樣條曲面的生成4/23/2020西安工程大學數(shù)學系56從而,雙二次B樣條曲面為:4/23/2020西安工程大學數(shù)學系575.4

Bezier、B樣條曲面的生成當u和v取定值時,曲面的v線和u線也都是拋物線。由左圖可知,曲面不經(jīng)過任何一個網(wǎng)格頂點。B樣條曲面四個角點不在給定位置上,這與Bezier曲面不同。如果網(wǎng)格向外擴展,曲面也相應延伸。由于二次B樣條基函數(shù)是一階連續(xù)的,兩雙二次B樣條曲面片的連接也為一階連續(xù)。圖-雙二次B樣條曲面5.4

Bezier、B樣條曲面的生成4/23/2020西安工程大學數(shù)學系58·

3)雙三次B樣條曲面

當n=m=3時,為雙三次B樣條曲面,給定(n+1)X(m+1)=4X4=16個控制點:Pij

(i=0,1,2,3,j=0,1,2,3),則5.4

Bezier、B樣條曲面的生成4/23/2020西安工程大學數(shù)學系59所以有:5.4

Bezier、B樣條曲面的生成4/23/2020西安工程大學數(shù)學系60從而,雙三次B樣條曲面為:4/23/2020西安工程大學數(shù)學系615.4

Bezier、B樣條曲面的生成5.4

Bezier、B樣條曲面的生成4/23/2020西安工程大學數(shù)學系625.4

Bezier、B樣條曲面的生成

注:雙三次B樣條曲面與其特征網(wǎng)格關系如左圖所示。雙三次B樣條曲面片四個角點不在給定的點的位置上。如果將網(wǎng)格向外擴展,曲面也相應延伸,而且由于三次B樣條基函數(shù)是二階連續(xù)的,所以雙三次B樣條曲面也二階連續(xù)。圖-雙三次B樣條曲面與三次B樣條曲線相似,雙三次B樣條曲面的優(yōu)點是:極其自然地解決了曲面片之間的二階導數(shù)連續(xù)性問題。只要將曲面片的特征多邊形網(wǎng)格頂點沿某一方向延伸一排,即可產(chǎn)生另一塊曲面片。4/23/2020西安工程大學數(shù)學系63(3)繪制B樣條曲面及生成程序例:上機編程繪制一雙三次B樣條曲面。1.根據(jù)如下公式,編程繪制一B樣條曲面。5.4

Bezier、B樣條曲面的生成4/23/2020西安工程大學數(shù)學系642.參考程序為:/*To

generate

a

Bezier

and

3B_Splline

curved

surface

*#include"graphics.h"#include"math.h"#include"stdio.h"#include"conio.h"#include"stdlib.h"#define

n

10main(){int

driver,mode;int

i,k,m,j;int

x0=300,y0=300;注意:此程序為繪制一雙三次B樣條曲面。為了比較,程序中也給出了畫雙三次Bezier曲面的程序段,用戶在運行程序時可以根據(jù)提示輸入0(畫Bezier曲面)或1(畫B樣條曲面),來選擇所要繪制的曲面。輸出圖形結(jié)果見后附錄。說明4/23/2020西安工程大學數(shù)學系655.4

Bezier、B樣條曲面的生成·

int

p[4][4][3]=4/23/2020西安工程大學數(shù)學系66{{{12,145,50},{24,120,50},{45,117,50},{65,140{{24,65,34},{56,45,34},{87,56,34},{99,75,34{{43,120,20},{65,98,20},{87,100,20},{111,115,{{15,160,0},{34,120,0},{55,135,0},{75,170,0}}·

float

u0,u1,u2,u3,v0,v1,v2,v3;·

float

q10,q11,q12,q13,du,dv;·

float

q[n+1][n+1][3],q20[3],q21[3],q22[3],q2·q30[3],q31[3],q32[3],q33[3];float

x,y;printf("input

j:(0---bezier,

1---B_spline)\n"5.4

Bezier、B樣條曲面的生成·

scanf("%d",&j);driver=DETECT;mode=0;initgraph(&driver,&mode,"D:\\TC");setbkcolor(1);setcolor(15);for(i=0;i<=3;i++)·

{for(k=0;k<=3;k++){x=(-0.7071*p[i][k][0]+0.7071*p[i][k][1]+200)*y=(0.4082*p[i][k][0]+0.4082*p[i][k][1]0.8165*p

2]+200)*2-300;if(k==0)moveto(x,y);

lineto(x,y);}}4/23/2020西安工程大學數(shù)學系675.4

Bezier、B樣條曲面的生成·

for(i=0;i<=3;i++)·

{for(k=0;k<=3;k++)4/23/2020西安工程大學數(shù)學系68·

{x=(-0.7071*p[k][i][0]+0.7071*p[k][i][1]+20300;y=(0.4082*p[k][i][0]+0.4082*p[k][i][1]0.8165*·2]+200)*2-300;if(k==0)moveto(x,y);lineto(x,y);·

du=dv=1.0/n;·

for(i=0;i<=n;i++){u0=(i*du)*(i*du)*(i*du);u1=(i*du)*(i*du);u2=3=1;5.4

Bezier、B樣條曲面的生成·

if(j==0)4/23/2020西安工程大學數(shù)學系69·

{q10=u0*(-1)+u1*3+u2*(-3)+u3*1;·

q11=u0*3+u1*(-6)+u2*3;·q12=u0*(-3)+u1*3;

q13=u0*1;}if(j==1){

q10=(u0*(-1)+u1*3+u2*(-3)+u3*1)/6;·

q11=(u0*3+u1*(-6)+u3*4)/6;q12=(u0*(-3)+u1*3+u2*3+u3*1)/6;q13=(u0*1)/6for(k=0;k<=2;k++){

q20[k]=q10*p[0][0][k]+q11*p[1][0][k]+q12*][0][k]

+q13*p[3][0][k];q21[k]=q10*p[0][1][k]+q11*p[1][1][k]+q12*p[1][k]

+q13*p[3]

溫馨提示

  • 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

提交評論