版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
2024/12/141計(jì)算機(jī)圖形學(xué)
曲線(xiàn)和曲面
第一節(jié)曲線(xiàn)和曲面表示的基礎(chǔ)知識(shí)第二節(jié)Hermite多項(xiàng)式第三節(jié)Bezier曲線(xiàn)第四節(jié)Bezier曲面第五節(jié)B樣條曲線(xiàn)第六節(jié)B樣條曲面第一節(jié)曲線(xiàn)和曲面表示的基礎(chǔ)知識(shí)
曲線(xiàn)和曲面參數(shù)表示
(1)與坐標(biāo)軸相關(guān)的,不便于進(jìn)行坐標(biāo)變換;(2)會(huì)出現(xiàn)斜率為無(wú)窮大的情況;(3)難以靈活地構(gòu)造復(fù)雜的曲線(xiàn)、曲面(4)非參數(shù)的顯示方程只能描述平面曲線(xiàn),空間曲線(xiàn)必須定義為兩張柱面的交線(xiàn)。(5)假如我們使用非參數(shù)化函數(shù),在某個(gè)xoy坐標(biāo)系里一條曲線(xiàn),一些x值對(duì)應(yīng)多個(gè)y值,而一些y值對(duì)應(yīng)多個(gè)x值。
在空間曲線(xiàn)的參數(shù)表示中,曲線(xiàn)上每一點(diǎn)的坐標(biāo)均要表示成某個(gè)參數(shù)t的一個(gè)函數(shù)式,則曲線(xiàn)上每一點(diǎn)笛卡爾坐標(biāo)參數(shù)式是:,,
把三個(gè)方程合寫(xiě)到一起,曲線(xiàn)上一點(diǎn)坐標(biāo)的矢量表示是:關(guān)于參數(shù)t的切矢量或?qū)Ш瘮?shù)是:曲面寫(xiě)為參數(shù)方程形式為:曲線(xiàn)或曲面的某一部分,可以簡(jiǎn)單地用a≤u,w≤b界定它的范圍直線(xiàn)段端點(diǎn)坐標(biāo)分別是P1[x1,y1],P2[x2,y2],直線(xiàn)段的參數(shù)表達(dá)式是:P(t)=
P1+(
P2-
P1)t=(1-t)P1+tP2
0≤t≤1;參數(shù)表示相應(yīng)的x,y坐標(biāo)分量是:x(t)=x1+(x2-x1)t
y(t)=y1+(y2-y1)t0≤t≤1參數(shù)方程具有如下優(yōu)點(diǎn):有更大的自由度來(lái)控制曲線(xiàn)、曲面的形狀。便于坐標(biāo)變換便于處理斜率為無(wú)限大的問(wèn)題,不會(huì)因此中斷計(jì)算代數(shù)、幾何相關(guān)和無(wú)關(guān)的變量是完全分離的,而且對(duì)變量個(gè)數(shù)不限,便于向高維空間擴(kuò)展。
t∈[0,1],直接定義了邊界。便于曲線(xiàn)和曲面的分段、分片描述。易于用矢量和矩陣表示,從而簡(jiǎn)化了計(jì)算。曲線(xiàn)和曲面可以分為兩類(lèi)。一類(lèi)要求通過(guò)事先給定的離散的點(diǎn),稱(chēng)為是插值的曲線(xiàn)或曲面。另一類(lèi)不要求通過(guò)事先給定的各離散點(diǎn),而只是用給定各離散點(diǎn)形成的控制多邊形來(lái)控制形狀,稱(chēng)為是逼近的曲線(xiàn)或曲面。
插值構(gòu)造一條曲線(xiàn)順序通過(guò)型值點(diǎn),稱(chēng)為對(duì)這些型值點(diǎn)進(jìn)行插值(interpolation)。逼近構(gòu)造一條曲線(xiàn),使它在某種意義上最接近這些型值點(diǎn)但不完全通過(guò),稱(chēng)之為對(duì)這些型值點(diǎn)進(jìn)行逼近(approximation)。參數(shù)連續(xù)性一函數(shù)在某一點(diǎn)x0處具有相等的直到k階的左右導(dǎo)數(shù),稱(chēng)它在x0處是k次連續(xù)可微的,或稱(chēng)它在x0處是k階連續(xù)的,記作Ck。幾何上C0、C1、C2依次表示該函數(shù)的圖形、切線(xiàn)方向、曲率是連續(xù)的。參數(shù)曲線(xiàn)的可微性稱(chēng)為參數(shù)曲線(xiàn)的連續(xù)性。幾何連續(xù)性
兩曲線(xiàn)段的相應(yīng)的弧長(zhǎng)參數(shù)化在公共連接點(diǎn)處參數(shù)導(dǎo)數(shù)成比例而不是相等,則稱(chēng)它們?cè)谠擖c(diǎn)處具有k階幾何連續(xù)性,記作Gk
。 零階幾何連續(xù)G0與零階參數(shù)連續(xù)C0是一致的。 一階幾何連續(xù)G1指一階導(dǎo)數(shù)在兩個(gè)相鄰曲線(xiàn)段的交點(diǎn)處成比例,即方向相同,大小不同。 二階幾何連續(xù)G2指兩個(gè)曲線(xiàn)段在交點(diǎn)處其一階和二階導(dǎo)數(shù)均成比例。曲線(xiàn)段間C1、C2和G1、G2連續(xù)性定義(1)Q1(1)=Q2(0),則Q1(t)和Q2(t)在P處有C0和G0連續(xù)性(2)Q1(1)和Q2(0)在P處重合,且其在P點(diǎn)處的切矢量方向相同,大小相等,則Q1(t)和Q2(t)在P處有C1連續(xù)性(3)Q1(1)和Q2(0)在P處重合,且其在P點(diǎn)處的切矢量方向相同,大小不等,則Q1(t)和Q2(t)在P處有G1連續(xù)性Q1(0)Q1(1)Q2(0)Q2(1)Q1(0)Q2(1)Q1(1)Q2(0)Q1(0)Q2(1)Q1(1)Q2(0)曲線(xiàn)段間C1、C2和G1、G2連續(xù)性定義(4)Q1(1)和Q2(0)在P處已有C0和C1連續(xù),且Q”1(1)和Q”2(0)大小方向均相同,則Q1(t)和Q2(t)在P處有C2連續(xù)性(5)Q1(1)和Q2(0)在P處已有G0和G1連續(xù),且Q”1(1)和Q”2(0)方向相同但大小不等,則Q1(t)和Q2(t)在P處有G2連續(xù)性(6)推廣之,Q1(1)和Q2(0)在P處已有C0、C1、…、Cn連續(xù),若Q(n)1(1)和Q(n)2(0)在P處大小和方向均相同,則說(shuō)Q1(t)和Q2(t)在P處具有Cn連續(xù)性Q1(0)Q1(1)Q2(0)Q2(1)Q1(0)Q1(1)Q2(0)Q2(1)曲線(xiàn)段間C1、C2和G1、G2連續(xù)性定義(1)Q1(1)=Q2(0),則Q1(t)和Q2(t)在P處有C0和G0連續(xù)性(2)Q1(1)和Q2(0)在P處重合,且其在P點(diǎn)處的切矢量方向相同,大小相等,則Q1(t)和Q2(t)在P處有C1連續(xù)性(3)Q1(1)和Q2(0)在P處重合,且其在P點(diǎn)處的切矢量方向相同,大小不等,則Q1(t)和Q2(t)在P處有G1連續(xù)性(4)Q1(1)和Q2(0)在P處已有C0和C1連續(xù),且Q”1(1)和Q”2(0)大小方向均相同,則Q1(t)和Q2(t)在P處有C2連續(xù)性(5)Q1(1)和Q2(0)在P處已有G0和G1連續(xù),且Q”1(1)和Q”2(0)方向相同但大小不等,則Q1(t)和Q2(t)在P處有G2連續(xù)性(6)推廣之,Q1(1)和Q2(0)在P處已有C0、C1、…、Cn連續(xù),若Q(n)1(1)和Q(n)2(0)在P處大小和方向均相同,則說(shuō)Q1(t)和Q2(t)在P處具有Cn連續(xù)性C0連續(xù)的線(xiàn)性插值C2連續(xù)的樣條插值光順
光順(smoothness)是指曲線(xiàn)的拐點(diǎn)不能太多,要光滑順暢。對(duì)于平面曲線(xiàn)相對(duì)光順的條件應(yīng)該是:(1)具有二階幾何連續(xù)(G2);(2)不存在多余拐點(diǎn)和奇異點(diǎn);(3)曲率變化較小。第二節(jié)Hermite多項(xiàng)式
已知函數(shù)f(t)在k+1個(gè)點(diǎn){ti}處的函數(shù)值和導(dǎo)數(shù)值{f(j)(ti)},i=0,1,…,k,j=0,1,…,mi-1,要求確定一個(gè)N=m0+m1+…+mk-1次的多項(xiàng)式P(t),滿(mǎn)足下面的插值條件:一、Lagrange插值
已知f(t)在k+1個(gè)點(diǎn)上的函數(shù)值f(ti),求一個(gè)k次多項(xiàng)式使之滿(mǎn)足。
設(shè)表示一條曲線(xiàn)的某個(gè)函數(shù)f(t)在三點(diǎn)t0,t1,t2的函數(shù)值f(t0),f(t1),f(t2),根據(jù)Lagrange插值法,則二次多項(xiàng)式P(t)可表示為:g0(t)g2(t)g1(t)
設(shè)表示一條曲線(xiàn)的某個(gè)函數(shù)f(t)在四點(diǎn)t0,t1,t2,t3的函數(shù)值f(t0),f(t1),f(t2),f(t3),根據(jù)Lagrange插值法,則三次多項(xiàng)式P(t)可表示為:g0(t)g3(t)g1(t)g2(t)一般地,對(duì)于k+1個(gè)點(diǎn),若曲線(xiàn)表達(dá)式中滿(mǎn)足是連續(xù)的●●則稱(chēng)為混合(調(diào)和)函數(shù)或基稱(chēng)為控制點(diǎn)。函數(shù),k+1個(gè)點(diǎn)二、三次Hermite曲線(xiàn)考察k=1,m0=m1=2的情形已知表示一條曲線(xiàn)的某個(gè)函數(shù)f(t)在兩點(diǎn)0,1的函數(shù)值f(0),f(1)和一階導(dǎo)數(shù)值f’(0),f’(1),求三次多項(xiàng)式P(t):把a(bǔ)0,a1,a2和a3代入(4-18)式則有:(4-18)得圖4-5規(guī)范化3次Hermite插值的四個(gè)調(diào)和函數(shù)四、分段3次Hermite曲線(xiàn)將前面t0和t1視為ti和ti+1,設(shè)給定f(ti),f(ti+1),f’(ti),f’(ti+1),則在區(qū)間[ti,ti+1]的Hermite三次插值多項(xiàng)式Pi(t)是:為了完整地寫(xiě)出這個(gè)插值多項(xiàng)式,可以在區(qū)間[ti,ti+1]中引入如下一些基本函數(shù):a0,0a1,0n=1為了完整地寫(xiě)出這個(gè)插值多項(xiàng)式,可以在區(qū)間[ti,ti+1]中引入如下一些基本函數(shù):n=2a0,0a1,0a2,0完整的插值多項(xiàng)式可寫(xiě)為:上式區(qū)間[t0,tn]中有定義,且為分段定義。在每個(gè)區(qū)間[ti,ti+1]上,都恰有四項(xiàng)。滿(mǎn)足插值條件每段曲線(xiàn)Pi(t)只在[ti,ti+1]中有定義:自變量的線(xiàn)性變換用逆變換代入,將所得關(guān)于u的多項(xiàng)式記為,得其中例:設(shè)在平面上有兩點(diǎn)P0,Pl,它們的位置向量分別為(1,1),(4,2),在P0的導(dǎo)數(shù)值即在該點(diǎn)的切線(xiàn)向量P’0=(1,1),在Pl處P’1=(1,-1),構(gòu)造曲線(xiàn)。
第三節(jié)Bezier曲線(xiàn)1.Bezier曲線(xiàn)定義
給出型值點(diǎn)P0,P1,…,Pn,它們所確定的n次Bezier曲線(xiàn)是:
是Bernstein多項(xiàng)式,混合函數(shù)涉及到的0!及00,按約定均為1。在n=1時(shí),公式成為:(一次Bezier曲線(xiàn)是直線(xiàn)段)
在n=2時(shí),公式成為:(二次Bezier曲線(xiàn)是拋物線(xiàn))
在n=3時(shí),公式成為:(三次Bezier曲線(xiàn)是三次參數(shù)多項(xiàng)式曲線(xiàn))Bernstein基函數(shù)的性質(zhì)(1)正性(2)端點(diǎn)性質(zhì)(3)規(guī)范性 (4)對(duì)稱(chēng)性 (5)權(quán)性 (6)遞推性
(7)導(dǎo)函數(shù)在處達(dá)到最大值。(8)最大值(7)導(dǎo)函數(shù)2、
Bezier曲線(xiàn)的性質(zhì)
P(0)=
P0,P(1)=P1,曲線(xiàn)通過(guò)所給出型值點(diǎn)列的起點(diǎn)和終點(diǎn)。
i=0i=n·二階導(dǎo)數(shù)
Bezier曲線(xiàn)的對(duì)稱(chēng)性
·曲線(xiàn)的凸包性
對(duì)給定的型值點(diǎn)P0,P1,…,Pn點(diǎn)集,點(diǎn)集稱(chēng)作n+1個(gè)點(diǎn)張成的凸包·幾何不變性3、Bezier曲線(xiàn)的拼接P0P1P2P3和Q0QlQ2Q3,兩個(gè)Bezier多邊形①曲線(xiàn)在連接點(diǎn)處C0連續(xù)的條件是P3=Q0②曲線(xiàn)在連接點(diǎn)處G1連續(xù),即一階導(dǎo)數(shù)幾何連續(xù),條件是Q’0=aP’3 ,a是一個(gè)正數(shù)。
P2,
P3=Q0,
Ql,共線(xiàn)且P2和Ql在P3兩側(cè)③連接點(diǎn)處達(dá)到C2連續(xù),即二階導(dǎo)數(shù)參數(shù)連續(xù)的條件,對(duì)前面的公式求兩次導(dǎo)數(shù),可得,于是知,要求,即,注意到Q0=P3,由此得:4、Bezier曲線(xiàn)繪制①利用定義式Bezier曲線(xiàn)的繪制,可以利用其定義式,對(duì)參數(shù)t選取足夠多的值,計(jì)算曲線(xiàn)上的一些點(diǎn),然后用折線(xiàn)連接來(lái)近似畫(huà)出實(shí)際的曲線(xiàn)。隨著選取點(diǎn)增多,折線(xiàn)和曲線(xiàn)可以任意接近。假設(shè)給定的四個(gè)型值點(diǎn)是P0=(1,1),Pl=(2,3),P2=(4,3),P3=(3,1),則計(jì)算結(jié)果見(jiàn)表t(1-t)33t(1-t)23t2(1-t)t3P(t)01000(1,1)0.150.6140.3250.05740.0034(1.5058,1.765)0.350.2750.4440.2390.043(2.248,2.376)0.50.1250.3750.3750.125(2.75,2.5)0.650.0430.2390.4440.275(3.122,2.36)0.850.00340.05740.3250.614(3.248,1.75)10001(3,1)幾何作圖法
記點(diǎn)Pk,Pk+l,…,Pk+n可以生成的Bézier曲線(xiàn)為,0≤t≤1則成立下面的遞推關(guān)系:證明上式,要用到組合等式:
上式改寫(xiě)為:
doubledecas(intn,doubleP[],doublet){ intm,i; double*R,*Q,P0; R=newdouble[n+1]; Q=newdouble[n+1]; for(i=0;i<=n;i++) R[i]=P[i];//將控制點(diǎn)坐標(biāo)P保存于R中
//需要作n次外部循環(huán),方能產(chǎn)生最終Bezier曲線(xiàn)在點(diǎn)t的值
for(m=n;m>0;m--){//n次Bezier曲線(xiàn)在點(diǎn)t的值,可由兩條n-1次Bezier曲線(xiàn)//在點(diǎn)t的值通過(guò)線(xiàn)性組合而求得。
for(i=0;i<m;i++) Q[i]=R[i]+t*(R[i+1]-R[i]); for(i=0;i<m;i++) R[i]=Q[i]; } P0=R[0]; deleteR; deleteQ; return(P0);}
voidbez_to_points(intn,intnpoints,doubleP[],doublepoints[])//P為控制點(diǎn)坐標(biāo)
//
points為采用幾何作圖算法生成的Bezier曲線(xiàn)上的離散點(diǎn)序列//離散點(diǎn)序列points的個(gè)數(shù)為npoints+1
//控制點(diǎn)P的個(gè)數(shù)為n+1
{ doublet,delt; delt=1.0/(double)npoints;//將參數(shù)tnpoints等分
t=0.0; for(inti=0;i<=npoints;i++) { //分別求出npoints+1個(gè)離散點(diǎn)points的坐標(biāo)
points[i]=decas(n,P,t);
t+=delt; }}
設(shè)給出四點(diǎn)的坐標(biāo)是(1,1),(2,3),(4,3),(3,1),求所確定三次Bezier曲線(xiàn)在t=1/3時(shí)的值P(1/3),算法的計(jì)算過(guò)程Bezier幾何作圖算法計(jì)算過(guò)程
分裂法思想:將原控制點(diǎn)集分為兩個(gè)點(diǎn)數(shù)相同的新控制點(diǎn)集,分別對(duì)應(yīng)原曲線(xiàn)的前半段和后半段,新控制點(diǎn)集比原控制點(diǎn)集更接近直線(xiàn),分裂過(guò)程繼續(xù)進(jìn)行,控制點(diǎn)集會(huì)迅速向曲線(xiàn)靠近,當(dāng)滿(mǎn)足某個(gè)允許的界限時(shí),可依次連接各點(diǎn)的折線(xiàn)來(lái)表示曲線(xiàn)分裂法設(shè)控制點(diǎn)序列P0,P1,…,Pn確定的n次Bezier曲線(xiàn)是P(t),用如下遞歸方式計(jì)算另一組點(diǎn)集:
如果令Pa(s)和Pb(s)分別是以控制點(diǎn)序列和確定的Bezier曲線(xiàn),其中0≤s≤1,那么就有:己知四點(diǎn)P0,P1,P2,P3,確定了一條三次Bezier曲線(xiàn)P(t),可寫(xiě)出下式,
分裂法中的遞歸計(jì)算分裂法的示意圖
驗(yàn)證Bezier曲線(xiàn)分成前后兩段的正確性。以P0的系數(shù)為例,驗(yàn)證兩端它的系數(shù)是相等的。左端顯然就是B0,3(t)=(1-t)3。再看右端。若0≤t≤,這時(shí)就用前半段的表達(dá)式,觀察分裂計(jì)算圖注意到中有1份P0,中有份,中是份,中是份。
右端對(duì)≤t≤1,注意到僅中有份的P0。1/21/41/81/21/23/81/21/4設(shè)己知三次Bezier曲線(xiàn)P(t)的控制頂點(diǎn)是P0,P1,P2,P3,在P()處將曲線(xiàn)分為兩段,求出前半段的控制頂點(diǎn)Q0,Ql,Q2,Q3和后半段的控制頂點(diǎn)R0,R1,R2,R3。有算法如下voidsplit_Bezier(PointP[]){ PointR[4],Q[4]; inti,j; for(i=0;i<=3;i++) R[i]=P[i];
for(i=0;i<=2;i++)
{ Q[i]=R[0]; for(j=0;j<=2-i;j++){ //分別對(duì)相鄰兩控制點(diǎn)間的線(xiàn)段進(jìn)行分裂
R[j].x=(R[j].x+R[j+1].x)/2; R[j].y=(R[j].y+R[j+1].y)/2; } } Q[3]=R[0];}分裂算法的計(jì)算根據(jù)Bezier曲線(xiàn)的凸包性質(zhì),知道曲線(xiàn)上任意一點(diǎn)到線(xiàn)段P0P3的距離,小于P1和P2到線(xiàn)段P0P3距離中的較大者,即有:任意事先給定的對(duì)畫(huà)出曲線(xiàn)近似程度的要求ε>0,可以取max(d(P1,P0P3),d(P2,P0P3))<ε為分裂停止的條件。voidnew_split_Bezier(PointP[]){ PointR[4],Q[4]; inti,j; constdoubleepsilon=0.01; if(maxdistance(P)<epsilon){ /*maxdistance(P)為求max(d(P1,P0P3),d(P2,P0P3))的函數(shù)*/ MoveTo(P[0].x,P[0].y); LineTo(P[3].x,P[3].y); }else{ for(i=0;i<=3;i++)R[i]=P[i]; for(i=0;i<=2;i++){ Q[i]=R[0]; for(j=0;j<=2-i;j++){ R[j].x=(R[j].x+R[j+1].x)/2; R[j].y=(R[j].y+R[j+1].y)/2; } } Q[3]=R[0]; new_split_Bezier(Q);new_split_Bezier(R); }}doublemaxdistance(Pointp[]){ doubles1,s2,h1,h2; s1=((p[0].x-p[1].x)*(p[0].y+p[1].y)+ (p[1].x-p[3].x)*(p[1].y+p[3].y)+ (p[3].x-p[0].x)*(p[3].y+p[0].y)); s2=((p[0].x-p[2].x)*(p[0].y+p[2].y)+ (p[2].x-p[3].x)*(p[2].y+p[3].y)+ (p[3].x-p[0].x)*(p[3].y+p[0].y)); doubledistance=sqrt((p[0].x-p[3].x)*(p[0].x-p[3].x)+ (p[0].y-p[3].y)*(p[0].y-p[3].y)); h1=fabs(s1/distance); h2=fabs(s2/distance); returnmax(h1,h2);} 五、Bézier曲線(xiàn)的升階設(shè)給定原始控制頂點(diǎn)P0,P1,…,Pn,定義了一條n次Bézier曲線(xiàn),增加一個(gè)頂點(diǎn),曲線(xiàn)提升一階后,仍定義同一條曲線(xiàn)的新控制頂點(diǎn)為則有對(duì)上式左邊乘以得比較等式兩邊項(xiàng)的系數(shù),得兩邊除以,得式中1新的控制頂點(diǎn)是以參數(shù)值按分段線(xiàn)性插值從原始控制多邊形得出的。2升階后新的控制多邊形在原始控制多邊形的凸包內(nèi)。3控制多邊形更靠近曲線(xiàn)。此式說(shuō)明:六、有理Bezier曲線(xiàn)
圖中h0=h1=h3=1,當(dāng)h2=0、1/2、1、2、4時(shí)曲線(xiàn)逐漸地靠近P2點(diǎn)
圖中h0=h1=h3=1,當(dāng)h2=0、1/2、1、2、4時(shí)曲線(xiàn)逐漸地靠近P2點(diǎn)
第四節(jié)Bezier曲面若在空間給定(m+1)(n+1)個(gè)控制點(diǎn),Vij,i=0,1,…,m,j=0,1,…,n,令上式曲面為m×n次的Bezier曲面二、Bézier曲面的性質(zhì)(2)邊界線(xiàn)位置(1)端點(diǎn)位置是曲面的四個(gè)端點(diǎn)Bézier曲面的四條邊界線(xiàn)以、和,為控制多邊、形的Bézier曲線(xiàn)(3)端點(diǎn)的切平面,相切
、、、三角面在、、、處與曲面(4)凸包性
位于其控制頂點(diǎn)Vij,
(i=0,1,…,m,j=0,1,…,n)
的凸包內(nèi)。
的形狀和位置與坐標(biāo)系選
擇無(wú)關(guān),僅和點(diǎn)Vij,(i=0,1,…,
m,j=0,1,…,n)的相對(duì)位置有關(guān)。(5)幾何不變性曲面曲面三、Bézier曲面示例(1)雙一次(線(xiàn)性)Bézier曲面當(dāng)m=n=1時(shí),得雙—次(線(xiàn)性)Bézier曲面。給定(m+1)×(n+1)=2×2=4個(gè)控制點(diǎn):
設(shè)V0,0,V0,1,V1,0,V1,1四點(diǎn)依次是(0,0,0),(1,0,0),(0,1,0),(0,0,1),則可得P1,1(u,w)的坐標(biāo)形式的參數(shù)方程為:雙曲拋物面(馬鞍面)方程
(2)雙二次Bézier曲面
當(dāng)m=n=2時(shí),得到雙二次Bézier曲面,給定(m+1)×(n+1)=3×3=9個(gè)控制點(diǎn),即
(3)雙三次Bézier曲面當(dāng)m=n=3時(shí),得到雙三次Bézier曲面,給定(m+1)×(n+1)=4×4=16個(gè)控制點(diǎn)
四、Bézier曲面的拼接控制網(wǎng)格(1)連續(xù)于是有(2)連續(xù)最簡(jiǎn)單的解: 兩曲面片在該邊界上有公共的切平面
兩邊關(guān)于w的多項(xiàng)式次數(shù)相同
或 第五節(jié)B樣條曲線(xiàn)一、B樣條曲線(xiàn)的定義給定n+1個(gè)控制點(diǎn)P0,P1,…,Pn,它們所確定的k階B樣條曲線(xiàn)是:其中Ni,k(u)遞歸定義如下:這里u0,u1,…,un+k,是一個(gè)非遞減的序列,稱(chēng)為節(jié)點(diǎn),(u0,u1,…,un+k)稱(chēng)為節(jié)點(diǎn)向量。定義中可能出現(xiàn),這時(shí)約定為0。B樣條曲線(xiàn)包含n-k+2段。
由k階B樣條曲線(xiàn)的遞歸定義可以看出:(1)對(duì)n+1個(gè)控制點(diǎn),曲線(xiàn)由n+1個(gè)混合函數(shù)所描述。(2)每個(gè)混合函數(shù)定義在u取值范圍的k個(gè)子區(qū)間,以節(jié)點(diǎn)向量值ui為起點(diǎn)。(3)參數(shù)u的取值范圍由n+k+1個(gè)給定節(jié)點(diǎn)向量值分成n+k個(gè)子區(qū)間。(4)節(jié)點(diǎn)向量(u0,u1,…,un+k)所生成的B樣條曲線(xiàn)僅定義在從節(jié)點(diǎn)值到節(jié)點(diǎn)值的區(qū)間上。(5)任一控制點(diǎn)可以影響最多k個(gè)曲線(xiàn)段的形狀。(6)是分段參數(shù)多項(xiàng)式。在每一區(qū)間上都是次數(shù)不高于k-1的多項(xiàng)式。從B樣條曲線(xiàn)的這個(gè)遞歸定義可以看出,曲線(xiàn)與給定的階數(shù)k及節(jié)點(diǎn)向量都有關(guān)系。就是說(shuō),即使k相同,選擇不同的節(jié)點(diǎn)向量,也能得到不同的曲線(xiàn)。選取,n=2,k=1,控制頂點(diǎn)是P0,P1,P2,這樣應(yīng)選擇參數(shù)節(jié)點(diǎn)n+k+1=4個(gè),設(shè)節(jié)點(diǎn)向量是(u0,u1,u2,u3),按式定義,可寫(xiě)出三個(gè)基函數(shù):由公式可知所定義的B樣條曲線(xiàn)是
2階B樣條由兩個(gè)1階B樣條與遞歸推得,是它們的凸線(xiàn)性組合節(jié)點(diǎn)向量為(0,1,2)的2階B樣條基函數(shù)如圖由兩個(gè)2階B樣條Ni,2與Ni+1,2遞推生成3階B樣條Ni,3Ni,2Ni+1,2Ni,3由兩個(gè)3階B樣條Ni,3與Ni+1,3遞推生成4階B樣條Ni,4Ni,3Ni+1,3Ni,4B樣條基函數(shù)有下列性質(zhì):(1)正性和局部性(2)規(guī)范性(3)權(quán)性:對(duì)從節(jié)點(diǎn)值到區(qū)間上的任一值u,全體基函數(shù)之和為1(4)遞推性:二、B樣條曲線(xiàn)的性質(zhì)(1)連續(xù)性:連續(xù)性(節(jié)點(diǎn)不重)(2)可微性:在定義域內(nèi)重復(fù)度為p的節(jié)點(diǎn)處有k-1-p次可微,或具有連續(xù)性(3)凸包性:(4)正性和局部支承性:(5)幾何不變性:(6)近似性:
在參數(shù)節(jié)點(diǎn)的眾多選取方法中,最多使用的是選擇參數(shù)u的每一區(qū)間為等長(zhǎng)的情況,這時(shí)所得到的B樣條函數(shù)稱(chēng)為是等距的,或均勻的。假定ui=i,i=0,1,…,n+k。
三、均勻B樣條曲線(xiàn)(1)均勻B樣條遞歸式,經(jīng)過(guò)計(jì)算,可以寫(xiě)出:由兩個(gè)2階B樣條Ni,2與Ni+1,2遞推生成3階B樣條Ni,3Ni,2Ni+1,2Ni,3由兩個(gè)3階B樣條Ni,3與Ni+1,3遞推生成4階B樣條Ni,4Ni,3Ni+1,3Ni,4如果固定在ui+3≤u<ui+4區(qū)間,可以寫(xiě)出:對(duì)參數(shù)進(jìn)行如下變換tj=u-ui+j以簡(jiǎn)化上式,這仍可以使ui+j≤u<ui+j+1與0≤tj<1保持一致的。上述結(jié)果對(duì)任意的0≤i≤n-3成立,令i=0,可寫(xiě)出四個(gè)B樣條函數(shù):
上述結(jié)果對(duì)任意的i成立,令i=0,同時(shí)對(duì)t3用u進(jìn)行名稱(chēng)替換,可寫(xiě)出四個(gè)4階3次B樣條基函數(shù):設(shè)給出n+1個(gè)控制點(diǎn)P0,P1,…,Pn,則所確定的4階3次等距B樣條曲線(xiàn):整條曲線(xiàn)是分段定義第0段Q0(u)僅由頂點(diǎn)P0,P1,P2,P3確定。第1段Q1(u)由P1,P2,P3,P4確定,…,第n-3段由Pn-3,Pn-2,Pn-1,Pn確定。
按照同樣的方法,可以寫(xiě)出2階1次和3階2次均勻B樣條曲線(xiàn)的表達(dá)式:(2)均勻B樣條曲線(xiàn)的拼接問(wèn)題(2)均勻B樣條曲線(xiàn)的拼接問(wèn)題(2)均勻B樣條曲線(xiàn)的拼接問(wèn)題Qi(0)是控制點(diǎn)Pi,Pi+1,Pi+2,Pi+3確定的一段曲線(xiàn)的起點(diǎn)。將它的表達(dá)式改為該點(diǎn)處的二階導(dǎo)數(shù)是Q''i(0),改寫(xiě)為
(3)特殊曲線(xiàn)的控制點(diǎn)配置1.對(duì)于4階3次均勻B樣條曲線(xiàn)P(u),若要在其中得到一條直線(xiàn)段,只要控制點(diǎn)Pi,Pi+1,Pi+2,Pi+3四點(diǎn)位于一條直線(xiàn)上,此時(shí)P(u)對(duì)應(yīng)的ui+3≤u≤ui+4的曲線(xiàn)即為一段直線(xiàn),且和Pi,Pi+1,Pi+2,Pi+3所在的直線(xiàn)重合。2.為了使P(u)能過(guò)Pi點(diǎn),只要Pi,Pi+1,Pi+2三點(diǎn)重合,此時(shí)P(u)過(guò)Pi點(diǎn)(尖點(diǎn))。3.為了使B樣條曲線(xiàn)P(u)和某一直線(xiàn)L相切,只要求B樣條曲線(xiàn)的控制點(diǎn)Pi,Pi+1,Pi+2位于L上。由k階B樣條曲線(xiàn)的遞歸定義可以看出:(1)對(duì)n+1個(gè)控制點(diǎn),曲線(xiàn)由n+1個(gè)混合函數(shù)所描述(2)每個(gè)混合函數(shù)定義在u取值范圍的k個(gè)子區(qū)間,以節(jié)點(diǎn)向量值ui為起點(diǎn)。(3)參數(shù)u的取值范圍由n+k+1個(gè)給定節(jié)點(diǎn)向量值分成n+k個(gè)子區(qū)間。(4)節(jié)點(diǎn)向量(u0,u1,…,un+k)所生成的B樣條曲線(xiàn)僅定義在從節(jié)點(diǎn)值到節(jié)點(diǎn)值的區(qū)間上。(5)任一控制點(diǎn)可以影響最多k個(gè)曲線(xiàn)段的形狀。(6)是分段參數(shù)多項(xiàng)式。在每一區(qū)間上都是次數(shù)不高于k-1的多項(xiàng)式。四、準(zhǔn)均勻B樣條曲線(xiàn)
給定n+1個(gè)控制點(diǎn)的k階B樣條,其參數(shù)值k和n通過(guò)下列計(jì)算可以生成準(zhǔn)均勻具有整型節(jié)點(diǎn)的向量
準(zhǔn)均勻B樣條多項(xiàng)式曲線(xiàn)通過(guò)第一和最后一個(gè)控制點(diǎn)。參數(shù)曲線(xiàn)在第一個(gè)控制點(diǎn)處的切向量平行于頭兩個(gè)控制點(diǎn)的連線(xiàn);最后一個(gè)控制點(diǎn)處的切向量則平行于最后兩個(gè)控制點(diǎn)的連線(xiàn)。
選取n=3,k=2,于是有四個(gè)控制頂點(diǎn)P0,P1,P2,P3應(yīng)有參數(shù)節(jié)點(diǎn)n+k+1=6個(gè),設(shè)節(jié)點(diǎn)向量是(0,0,1,2,3,3),確定2階B樣條曲線(xiàn)。
取n=4(5個(gè)控制點(diǎn)),k=3,可得節(jié)點(diǎn)向量的8個(gè)值事實(shí)上,當(dāng)k=n+1時(shí),由式得準(zhǔn)均勻節(jié)點(diǎn)向量為
該節(jié)點(diǎn)向量定義的k階k-1次B樣條基函數(shù)就是k-1次Bernstein基函數(shù),準(zhǔn)均勻B樣條曲線(xiàn)退化為Bézier樣條曲線(xiàn)選取n=3,k=4,四個(gè)控制頂點(diǎn)為P0,P1,P2,P3,參數(shù)節(jié)點(diǎn)n+k+1=8個(gè),設(shè)選取節(jié)點(diǎn)向量為(0,0,0,0,1,1,1,1)
00001111000011110000111100001111uiui+1ui+2ui+3ui+4ui+5ui+6ui+7ui+8ui+9Ni,4Ni+1,4Ni+2,4Ni+3,4Ni+4,4Ni+5,4PiPi+1Pi+2Pi+3Pi+4Pi+5K=4,N=5在[ui+3,ui+4]節(jié)點(diǎn)區(qū)間內(nèi),只受Pi,Pi+1,Pi+2,Pi+3,4個(gè)控制點(diǎn)的影響,不受Pi+4,Pi+5的影響,因?yàn)槠鋵?duì)應(yīng)的基函數(shù)Ni,4,Ni+1,Ni+2,Ni+3處于[ui+3,ui+4]節(jié)點(diǎn)區(qū)間內(nèi)。因此當(dāng)改變Pi+4,Pi+5的位置,不會(huì)影響[ui+3,ui+4]節(jié)點(diǎn)區(qū)間內(nèi)的曲線(xiàn)形狀。以此可以說(shuō)明B樣條曲線(xiàn)的局部支撐性。對(duì)此進(jìn)行擴(kuò)展,可以說(shuō)明[ui,ui+1]節(jié)點(diǎn)區(qū)間內(nèi),只受Pj,j=i-k+1…I,k個(gè)控制點(diǎn)的影響,此處k=3五、B樣條曲線(xiàn)的繪制(1)deBoor算法曲線(xiàn)至多與k個(gè)頂點(diǎn)有關(guān)由j替換j+1只與第i-k+2至第i個(gè)節(jié)點(diǎn)有關(guān)只與第i-k+2至第i個(gè)節(jié)點(diǎn)有關(guān)21+-kiP2+-kiPiP]1[2+-kiP]1[3+-kiP]1[iP]2[3+-kiP]2[iP]3[4+-kiP]1[-kiP1+-kiP+-kiPiP]1[2+-kiP]1[3+-kiP]1[iP]2[3+-kiP]2[iP]3[4+-kiP]1[-kiP21+-kiP2+-kiPiP]1[2+-kiP]1[3+-kiP]1[iP]2[3+-kiP]2[iP]3[4+-kiP]1[-kiP1+-kiP+-kiPiP]1[2+-kiP]1[3+-kiP]1[iP]2[3+-kiP]2[iP]3[4+-kiP]1[-kiP21+-kiP2+-kiPiP]1[2+-kiP]1[3+-kiP]1[iP]2[3+-kiP]2[iP]3[4+-kiP]1[-kiP1+-kiP+-kiPiP]1[2+-kiP]1[3+-kiP]1[iP]2[3+-kiP]2[iP]3[4+-kiP]1[-kiPvoidbspline_to_points(PointCP[],intn,intk,doubleknot[],Pointpts[],intnpoints){ doubleu,delt; inti,j; //在每個(gè)節(jié)點(diǎn)區(qū)間,將參數(shù)t變化區(qū)間進(jìn)行npoints等分
delt=(knot[n+1]-knot[k-1])/(double)npoints; i=k-1; u=knot[k-1];//u=knot[i]; for(j=0;j<=npoints;j++){ while((i<n)&&(u>knot[i+1]))i++;//確定參數(shù)u所在的節(jié)點(diǎn)區(qū)間[ui,ui+1) //在每個(gè)節(jié)點(diǎn)區(qū)間,分別求出npoints個(gè)離散點(diǎn)pts的坐標(biāo)
pts[j]=deboor(CP,i,k,knot,u); u+=delt; }}//輸入?yún)?shù)CP為控制點(diǎn)坐標(biāo)//控制點(diǎn)CP的個(gè)數(shù)為n+1//輸入?yún)?shù)k為B樣條曲線(xiàn)的階數(shù)//輸入?yún)?shù)knot為B樣條曲線(xiàn)節(jié)點(diǎn)向量//節(jié)點(diǎn)向量kn
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《大學(xué)生聯(lián)誼晚會(huì)》課件
- 藥物篩選與開(kāi)發(fā)-洞察分析
- 細(xì)節(jié)處理在自動(dòng)駕駛中的應(yīng)用-洞察分析
- 虛擬現(xiàn)實(shí)地理信息平臺(tái)構(gòu)建-洞察分析
- 《服務(wù)器管理技術(shù)》課件
- 無(wú)人駕駛技術(shù)在特殊用途車(chē)輛中的應(yīng)用-洞察分析
- 月球巖石地球化學(xué)研究-洞察分析
- 元宇宙社交互動(dòng)模式-洞察分析
- 替卡西林藥效學(xué)研究-洞察分析
- 異常檢測(cè)的深度學(xué)習(xí)模型優(yōu)化-洞察分析
- 密碼行業(yè)職業(yè)技能競(jìng)賽參考試題及答案
- 浙江省臺(tái)州市2023-2024學(xué)年七年級(jí)上學(xué)期期末數(shù)學(xué)試題(含答案)
- 2024年秋新人教版地理七年級(jí)上冊(cè)課件 第一章 地球 1.3.1 地球的自轉(zhuǎn)
- 2024年新高考英語(yǔ)全國(guó)卷I分析教學(xué)設(shè)計(jì)
- 檢驗(yàn)科生物安全手冊(cè)
- 2024-2025學(xué)年高中英語(yǔ)學(xué)業(yè)水平合格性考試模擬測(cè)試卷五含解析
- 孤殘兒童護(hù)理員技能鑒定考試題庫(kù)(含答案)
- HG∕T 2374-2017 搪玻璃閉式貯存容器
- 求是文章《開(kāi)創(chuàng)我國(guó)高質(zhì)量發(fā)展新局面》專(zhuān)題課件
- ISO∕TR 56004-2019創(chuàng)新管理評(píng)估-指南(雷澤佳譯-2024)
- 車(chē)禍私了賠償協(xié)議書(shū)范本
評(píng)論
0/150
提交評(píng)論