版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
2023/2/21第七章曲線與曲面7.1曲線曲面基礎7.2三次樣條曲線曲面7.3Bézier曲線和曲面7.4B樣條曲線和曲面7.5非均勻有理B樣條曲線曲面7.6用OpenGL生成曲線和曲面2023/2/22曲線與曲面概述
曲線曲面的計算機輔助設計源于20世紀60年代的飛機和汽車工業。1963年美國波音公司的Ferguson提出用于飛機設計的參數三次方程;1962年法國雷諾汽車公司的Bézier提出以逼近為基礎的曲線曲面設計系統UNISURF,此前deCasteljau大約于1959年在法國另一家汽車公司雪鐵龍的CAD系統中有同樣的設計,但因為保密的原因而沒有公布;1964年Coons提出了一類布爾和形式的曲面;1972年,deBoor和Cox分別給出B樣條的標準算法;1975年以后,Riesenfeld等人研究了非均勻B樣條曲線曲面,美國錫拉丘茲大學的
Versprille研究了有理B樣條曲線曲面,20世紀80年末、90年代初,Piegl和Tiller等人對有理B樣條曲線曲面進行了深入的研究,并形成非均勻有理B樣條(Non-UniformRationalB-Spline,簡稱NURBS);1991年國際標準組織(ISO)正式頒布了產品數據交換的國際標準STEP,NURBS是工業產品幾何定義唯一的一種自由型曲線曲面。2023/2/23曲線曲面設計方法的要求
整個曲線曲面設計方法的發展史表明了曲線曲面設計方法的要求:避免高次多項式函數可能引起的過多拐點,曲線曲面設計宜采用低次多項式函數進行組合;組合曲線曲面在公共連接處滿足一定的連續性;繪圖過程具有明確的幾何意義,且操作方便;具有幾何不變性;具有局部修改性。2023/2/247.1曲線曲面基礎7.1.1曲線、曲面的表示形式1.曲線的表示形式平面曲線的直角坐標表示形式為:
或其參數方程則為:平面上一點的位置可用自原點到該點的矢量表示:
上式稱為曲線的矢量方程,其坐標分量表示式是曲線的參數方程。2023/2/25r(t2)r(t1)OYXZ圖7-1空間曲線
三維空間曲線可理解為一個動點的軌跡,位置矢量r隨時間t變化的關系就是一條空間曲線。
矢量方程為:三維空間曲線的參數方程為:2023/2/26用s表示曲線的弧長,以弧長為參數的曲線方程稱為自然參數方程。以弧長為參數的曲線,其切矢為單位矢量,記為t(s)。切矢t(s)對弧長s求導,所得導矢dt(s)/ds與切矢相垂直,稱為曲率矢量,如圖7-2,其單位矢量稱為曲線的單位主法矢,記為n(s),其模長稱為曲線的曲率,記為k(s)。曲率的倒數稱為曲線的曲率半徑,記為ρ(s)。
與t和n相互垂直的單位矢量稱為副法矢,記為b(s)。由t和n張成的平面稱為密切平面;由n和b張成的平面稱為法平面;由t和b張成的平面稱為從切面。
法平面密切平面從切面tnρbP圖7-2曲線特性分析
曲率,其幾何意義是曲線的單位切矢量t(s)對弧長的轉動率。撓率的絕對值等于副法線方向b(s)(或密切平面)對于弧長的轉動率.曲率和撓率)(ssTD+)(sTTDO
曲率和撓率(a)(b)1N1B1T0N0B0T0B1BqDqD2023/2/282.曲面的表示形式一般曲面可表示為:
其參數表達式為:
曲面的矢量方程為:
參數u、v的變化區間常取為單位正方形,即u,v∈[0,1]。x,y,z都是u和v二元可微函數。當(u,v)在區間[0,1]之間變化時,與其對應的點(x,y,z)就在空間形成一張曲面。
u映射空間域參數域v2023/2/29r對
u和v的一階偏導數為:
一階偏導數ru(u,v)和rv(u,v)繼續對u,v求偏導數,得到四個二階偏導數ruu、ruv、rvu、rvv:ruv和rvu稱為二階混合偏導數,在二階連續時,兩者相同。2023/2/210rvnruZvv3v2v1v0OuYXr(u,v)圖7-3空間曲面
如圖7-3,曲面上一點的切矢ru和rv所張成平面稱為曲面在該點的切平面。曲面上所有過該點的曲線在此點的切矢都位于切平面內。切平面的法矢就是曲面在該點的法矢。2023/2/211
直紋面
旋轉面對于固定的u,它是一條直線,當u變化時,就成了面,即“線動成面”。
雙線性插值曲面
3.幾種典型的面2023/2/212Coons曲面是已知曲面片的四條邊界曲線,由兩張直紋曲面的和減去一張雙線性插值曲面得到的:
這種布爾和形式的曲面是Coons于1967年研究的,拼合時整張曲面C0連續,即位置連續。要達到C1連續,必須考慮跨界切矢的插值。
Coons曲面(麻省理工學院)2023/2/213
雙線性插值曲面,采用了“先定義線,然后線動成面”的思想。張量積曲面也是采用“線動成面”的思想,是CAGD中應用最廣泛的一類曲面生成方法。映射空間域參數域vu
張量積曲面2023/2/214
定義在uv平面的矩形區域上的這張曲面稱為張量積曲面。張量積曲面的特點是將曲面問題化解為簡單的曲線問題來處理,適用于拓撲上呈矩形的曲面形狀。樣條的歷史很早的繪圖員利用壓鐵“ducks”和有柔性的木條(樣條)來繪制曲線木質的樣條具有二階連續并且通過所有的控制點ADuck(weight)Duckstraceoutcurve7.1.2曲線曲面的光滑連接2023/2/2161.插值、擬合與逼近插值:給定一組有序的數據點Pi,i=0,1,…,n,構造一條曲線順序通過這些數據點,稱為對這些數據點進行插值,所構造的曲線稱為插值曲線。擬合:構造一條曲線使之在某種意義下最接近給定的數據點(但未必通過這些點),所構造的曲線為擬合曲線。逼近:在計算數學中,逼近通常指用一些性質較好的函數近似表示一些性質不好的函數。在計算機圖形學中,逼近繼承了這方面的含義,因此插值和擬合都可以視為逼近。
原始數據點精確原始數據點不精確給定一組有序的數據點Pi,i=0,1,…,n,構造一條曲線順序通過這些數據點,稱為對這些數據點進行插值,所構造的曲線稱為插值曲線。線性插值:假設給定函數f(x)在兩個不同點x1和x2的值,用一個線形函數:y=ax+b,近似代替,稱為的線性插值函數。拋物線插值:已知在三個互異點的函數值為,要求構造一個函數使拋物線在結點處與在處的值相等。插值xyo1y2y)(xfy=)(xyj=1x2xxyo1y2y)(xfy=)(xyj=1x2x3x3y(a)(b)
線性插值和拋物插值逼近:構造一條曲線使之在某種意義下最接近給定的數據點(但未必通過這些點),所構造的曲線稱為逼近曲線。在計算數學中,逼近通常指用一些性質較好的函數近似表示一些性質不好的函數。
曲線的逼近逼近求給定型值點之間曲線上的點稱為曲線的插值。將連接有一定次序控制點的直線序列稱為控制多邊形或特征多邊形。
曲線的逼近凸殼(凸包)凸殼Convexhull的定義:
包含一組控制點的凸多邊形邊界。凸殼的作用提供了曲線或曲面與包圍控制點的區域之間的偏差的測量以凸殼為界的樣條保證了多項式沿控制點的平滑前進凸殼光順(Firing)指曲線的拐點不能太多。對平面曲線而言,相對光順的條件是:a.具有二階幾何連續性(G2);b.不存在多余拐點和奇異點;c.曲率變化較小。光順2023/2/224XYX’Y’由一組基函數及相聯系的系數矢量來表示:采用不同的基函數,曲線的數學表示方法就不同?;瘮狄坏┐_定,系數矢量就完全定義了曲線。2.計算機輔助幾何設計(CAGD)中的曲線的一般表示形式規范基表示具有幾何不變性。即同樣的點在不同坐標系中生成的曲線相同。拋物線方程不具有幾何不變性。2023/2/2253.曲線曲面的光滑連接給定一段曲線,如果在整個參數定義域內處處k次可微,則稱該曲線為Ck參數連續。給定兩段內部Ck連續的參數曲線r1(u1),u1∈[0,1]和r2(u2),u2∈[0,1],則兩段曲線在公共連接點處不同階次的連續性對應不同的要求。2023/2/2261)位置連續 曲線段r1(u1)的末端和曲線段r2(u2)的首端達到位置連續的條件為:r1(1)=r2(0)
位置連續是C0連續。2023/2/2272)
斜率連續曲線段r1(u1)的末端和曲線段r2(u2)的首端達到斜率連續的條件為:r'1(1)=kr'2(0)若k=1,說明曲線段r1(u1)的末端切矢與曲線段r2(u2)的首端切方向相同、模長相等,稱為C1連續。若k≠1,則說明兩段曲線在公共連接點處的切矢方向相同,但模長不相等。這種情況是幾何連續的,稱為G1連續。也稱視覺連續。切矢方向與模:方向相同,模不同,G1連續;方向相同,模相同,C1連續;2023/2/2283)曲率連續兩曲線段曲率連續應滿足:(1)位置連續;(2)斜率連續;(3)曲率相等且主法矢方向一致。曲率連續的條件為:C2連續滿足條件:
幾何意義是:曲線段r2(u)首端的二階導矢應處在由曲線段r1(v)末端的二階導矢和一階導矢所張成的平面內。
對于曲面片,若兩個曲面片在公共連接線上處處滿足上述各類連續性條件,則兩個曲面片之間有同樣的結論。
2023/2/230n次多項式的全體構成n次多項式空間,在其中任選一組線性無關的多項式都可以作為基。
冪基
ui,i=0,1,…,n,是最簡單的多項式基,相應的參數多項式曲線方程為:
對于給定的n+1個數據點Pi,i=0,1,2,…,n,欲構造其插值曲線或逼近曲線,必先得到對應于各數據點Pi的參數值ui,ui是一個嚴格遞增的序列△U:u0<u1<…<un。4.參數多項式曲線2023/2/231采用不同的參數化,得到的曲線也不同。常用的參數化方法有:均勻參數化(等距參數化)積累弦長參數化向心參數化修正弦長參數化對給定的數據點實行參數化,將參數值ui代入前面所述方程,使之滿足插值條件:得一線性方程組:2023/2/232解線性方程組,可得系數矢量的唯一解。然而,冪基多項式曲線方程中的系數矢量幾何意義不明確,構造曲線時,需解線性方程組,n較大時,不可取。其它多項式插值曲線如Lagrange、Newton、Hermite等較之冪基多項式曲線在計算性能等方面有較大改進,但總體上多項式曲線存在兩個問題:l
次數增高時,出現多余的拐點;l
整體計算,一個數據點的微小改動,可能引起曲線整體大的波動。2023/2/233由于高次多項式曲線存在缺陷,單一低次多項式曲線又難以描述復雜形狀的曲線。所以采用低次多項式按分段的方式在一定連續條件下拼接復雜的組合曲線是唯一的選擇。
低次多項式組合曲線以三次多項式為例:2023/2/234y1(x)=a1+b1x+c1x2+d1x3y2(x)=a2+b2x+c2x2+d2x3y3(x)=a3+b3x+c3x2+d3x3“線動成面”
如何選擇基函數使系數具有幾何意義,且操作方便、易于修改是曲線曲面設計方法的發展方向。7.5.1樣條描述n次樣條參數多項式曲線的矩陣:7.5Himerte樣條
基函數(blengingfunction),或稱混合函數。7.5.2三次樣條給定n+1個點,可得到通過每個點的分段三次多項式曲線:7.5.3自然三次樣條定義:給定n+1個型值點,現通過這些點列構造一條自然三次參數樣條曲線,要求在所有曲線段的公共連接處均具有位置、一階和二階導數的連續性,即自然三次樣條具有C2連續性。還需要兩個附加條件才能解出方程組.
特點:1.只適用于型值點分布比較均勻的場合2.不能“局部控制”
7.5.4三次Hermite樣條定義:假定型值點Pk和Pk+1之間的曲線段為p(t),t∈[0,1],給定矢量Pk、Pk+1、Rk和Rk+1,則滿足下列條件的三次參數曲線為三次Hermite樣條曲線:
推導:幾何形式對三次參數曲線,若用其端點位矢P(0)、P(1)和切矢P¢(0)、P¢(1)描述。將P(0)、P(1)、P¢(0)和P¢(1)簡記為P0、P1、P¢0和P¢1,代入得
Mh是Hermite矩陣。Gh是Hermite幾何矢量。三次Hermite樣條曲線的方程為:
通常將T?Mk稱為Hermite基函數(或混合函數,調和函數):
H(t)t10.20.40.60.80.20.40.60.81`-0.2H0(t)H1(t)H2(t)H3(t)Hermite基函數特點分析:1.可以局部調整,因為每個曲線段僅依賴于端點約束。2.Hermite曲線具有幾何不變性2023/2/248Bézier曲線是法國雷諾汽車公司的工程師Bézier于1962年提出。1972年在UNISURF系統中正式投入使用。Bézier曲線采用一組特殊的基函數,使得基函數的系數具有明確的幾何意義。其曲線方程:
其中從a0到an首尾相連的折線稱為Bézier控制多邊形。7.3Bézier曲線和曲面(注:Bézier本人也不能解釋該公式的來源)a0a1a2a3ai為相對位置矢量7.3.1Bézier曲線2023/2/249當n=3時:f0(t)f1(t)f2(t)f3(t)1102023/2/250英國的Forest于1972年將上述Bézier曲線中的控制多邊形頂點改為絕對位置矢量的Bernstein基表示形式:當n=3時:
P0P1P2P3Pi為絕對位置矢量B0,3(t)B1,3(t)B3,3(t)B2,3(t)三次基函數的圖像2023/2/251三次Bezier曲線的矩陣表示取為幾何矩陣GBEZ取為基矩陣MBEZ2023/2/252注意:有的教材中三次Bézier曲線的矩陣表示形式為:三次Bézier曲線:2023/2/253曲線的生成:參數離散計算型值點連接型值點折線2023/2/254#defineX0#defineY1#defineZ2typedeffloatVector[3];voidDisplayCubicBezierCurve(VectorP[4],intcount){floatC[3][4],t,deltat;VectorV,newV;inti,j;for(j=0;j<3;j++) /*C=GBEN*MBEN*/{ C[j][0]=P[0][j]; C[j][1]=-3*P[0][j]+3*P[1][j]; C[j][2]=3*P[0][j]-6*P[1][j]+3*P[2][j]; C[j][3]=-P[0][j]+3*P[1][j]-3*P[2][j]+P[3][j];}V[X]=P[0][X];V[Y]=P[0][Y];V[Z]=P[0][Z];/*將曲線的起點賦給矢量V*/detat=1.0/count;t=0.0;for(i=1;i<=count;i++){ t+=deltat; newV[X]=C[X][0]+t*(C[X][1]+t*(C[X][2]+t*C[X][3])); newV[Y]=C[Y][0]+t*(C[Y][1]+t*(C[Y][2]+t*C[Y][3])); newV[Z]=C[Z][0]+t*(C[Z][1]+t*(C[Z][2]+t*C[Z][3])); Line(V,newV); V[X]=newV[X];V[Y]=newV[Y];V[Z]=newV[Z];}}程序:生成三次Bezier曲線2023/2/255Bezier曲線的性質端點位置2023/2/256端點切矢量
Bezier曲線在起點與終點處分別與控制多邊形的第一條邊與最后一條邊相切,它們在兩端點處的切矢量分別為:2023/2/257對稱性如果保持全部控制頂點位置不變,但次序顛倒,即Pi
變作Pn-i,則Bezier曲線形狀不變,但參數變化方向相反,即2023/2/258仿射不變性仿射不變性指的是某些幾何性質不隨坐標變換而變化,這些幾何性質包括曲線的形狀、曲率、撓率等。仿射不變性還表現在,對于任意的仿射變換A,曲線的表示形式不變,即對曲線做變換只要對控制頂點做變換即可。2023/2/259凸包性點集 的凸包指的是包含這些點的最小凸集。Bezier曲線位于其控制頂點的凸包之內。控制頂點的凸包為連接P0P3所形成的多邊形區域:(a)P0P1P2P3(b)P0P1P3P22023/2/260直線再生性 若控制頂點P0,P1,…,Pn
落于一條直線上,由凸包性可知,該Bezier曲線必為一條直線段。2023/2/261變差縮減性: 平面內任一條直線與Bezier曲線的交點個數不多于該直線與其控制多邊形的交點個數。這一性質說明了Bezier曲線比其控制多邊形的波動小,更光滑。平面曲線的保型性假設 位于一張平面之內,則Bezier曲線是平面曲線,它具有下面兩條性質:保凸性:
如果控制多邊形是凸的, 則Bezier曲線也是凸的。2023/2/262擬局部性局部性:其含義是指移動一個控制點,它只影響曲線的某個局部。Bezier曲線不具備局部性的性質,但它具有擬局部性。擬局部性:指的是移動一個控制點Pi
時,對應參數t=i/n的曲線上的點變動最大,遠離i/n的曲線上的點變動越來越小。2023/2/263形狀的易控性控制多邊形大致上勾畫了Bezier曲線的形狀,要改變曲線只要改變頂點的位置即可。因此Bezier曲線的人機交互與形狀控制比較容易。2023/2/264單一Bézier曲線不能滿足描述復雜形狀的要求,必須采用組合Bézier曲線。P0P1P2P3組合Bézier曲線示意圖Bézier曲線的特點參數連續是對曲線光順性的過分要求,在組合曲線的連接點處,參數連續不僅要求切矢具有共同的切矢方向,而且要求切矢模長相等。幾何連續只要求在連接點處切矢方向相同,切矢模長可以不相等,由此產生了不同控制手段的多種曲線,如Gamma()樣條曲線、Beta()樣條曲線等,給曲線設計提供了極大的靈活性。2023/2/265若要組合Bézier曲線在連接點處具有一定的連續性,構成曲線的位置點矢量之間存在約束條件,可用Bézier曲線方程的一階、二階導數推導。Bézier曲線的優點是具有明確的幾何意義,給定數據點的控制多邊形確定曲線的形狀,在設計過程中具有很強的可操作性。對于局部參數的Bézier曲線,當弦長差異較大時,弦長較長的那段曲線過分平坦,弦長較短的那段曲線則鼓得厲害。P0P1P2P3組合Bézier曲線示意圖7.6.5Bezier曲線的遞推(deCasteljau)算法
計算Bezier曲線上的點,可用Bezier曲線方程,但使用deCasteljau提出的遞推算法則要簡單的多。如下圖所示,設、、是一條拋物線上順序三個不同的點。過和點的兩切線交于點,在點的切線交和于和,則如下比例成立:
這是所謂拋物線的三切線定理。(示意圖見下頁)
0P1P2P11P10P20PBezier曲線上的點
拋物線三切線定理當P0,P2固定,引入參數t,令上述比值為t:(1-t),有:
t從0變到1,第一、二式就分別表示控制二邊形的第一、二條邊,它們是兩條一次Bezier曲線。將一、二式代入第三式得:當t從0變到1時,它表示了由三頂點P0、P1、P2三點定義的一條二次Bezier曲線。并且表明:這二次Bezier曲線P20可以定義為分別由前兩個頂點(P0,P1)和后兩個頂點(P1,P2)決定的一次Bezier曲線的線性組合。依次類推,由四個控制點定P(t)=p0+(p1-p0)t義的三次Bezier曲線P30可被定義為分別由(P0,P1,P2)和(P1,P2,P3)確定的二條二次Bezier曲線的線性組合,由(n+1)個控制點Pi(i=0,1,...,n)定義的n次Bezier曲線Pn0可被定義為分別由前、后n個控制點定義的兩條(n-1)次Bezier曲線P0n-1與P1n-1的線性組合:由此得到Bezier曲線的遞推計算公式:這便是著名的deCasteljau算法。用這一遞推公式,在給定參數下,求Bezier曲線上一點P(t)非常有效。上式中:是定義Bezier曲線的控制點,即為曲線上具有參數t的點。deCasteljau算法穩定可靠,直觀簡便,可以編出十分簡捷的程序,是計算Bezier曲線的基本算法和標準算法。當n=3時,decasteljau算法遞推出的Pki呈直角三角形,對應結果如下圖所示。從左向右遞推,最右邊點P30即為曲線上的點。
0P1P2P3P10P11P12P20P21P30Pn=3時niP的遞推關系這一算法可用簡單的幾何作圖來實現。給定參數,就把定義域分成長度為的兩段。依次對原始控制多邊形每一邊執行同樣的定比分割,所得分點就是由第一級遞推生成的中間頂點,對這些中間頂點構成的控制多邊形再執行同樣的定比分割,得第二級中間頂點。重復進行下去,直到n級遞推得到一個中間頂點即為所求曲線上的點,如下圖所示。
)3/1(30PP=011/3
幾何作圖法求Bezier曲線
上一點(n=3,t=1/3)0P1P2P3P10P11P12P20P21P7.6.6Bezier曲線的升階與降階1.Bezier曲線的升階所謂升階是指保持Bezier曲線的形狀與定向不變,增加定義它的控制頂點數,也即是提高該Bezier曲線的次數。增加了控制頂點數,不僅能增加了對曲線進行形狀控制的靈活性,還在構造曲面方面有著重要的應用。對于一些由曲線生成曲面的算法,要求那些曲線必須是同次的。應用升階的方法,我們可以把低于最高次數的的曲線提升到最高次數,而獲得同一的次數。曲線升階后,原控制頂點會發生變化。下面,我們來計算曲線提升一階后的新的控制頂點。設給定原始控制頂點,定義了一條n次Bezier曲線:
增加一個頂點后,仍定義同一條曲線的新控制頂點為,則有:
對上式左邊乘以,得到:
比較等式兩邊項的系數,得到:
化簡即得:
其中。此式說明:新的控制頂點是以參數值按分段線性插值從原始特征多邊形得出的。升階后的新的特征多邊形在原始特征多邊形的凸包內特征多邊形更靠近曲線。三次Bezier曲線的升階實例如下圖所示。*00PP=1P2P*43PP=*1P*2P*3P
Bezier曲線升階2.Bezier曲線的降階降階是升階的逆過程。給定一條由原始控制頂點定義的n次Bezier曲線,要求找到一條由新控制頂點定義的n-1次Bezier曲線來逼近原始曲線。假定是由升階得到,則由升階公式有:從這個方程可以導出兩個遞推公式:
和
給定空間16個位置點rij,可以確定一張三次Bezier曲面片。首先生成四條v向的三次Bezier曲線:
根據“線動成面”的思想,按設定間隔取v*∈[0,1],在四條v線上取點,沿u向生成三次Bezier曲線:
7.3.2Bézier曲面片rijuvuvV*uv將u,v向曲線方程合并得:
2023/2/280Bézier曲面片的矩陣表達式rijuv2023/2/281用Bézier曲面片組合曲面時,曲面拼合處應位置連續,即要求:r1(1,v)=r2(0,v)(上標表示曲面片1或曲面片2)[1111]AM1AT=[1000]AM2AT
C0連續的Bézier組合曲面(位置連續)2023/2/282C0連續的Bézier曲面片的拼接曲面片1曲面片22023/2/283若要得到跨界一階導矢的連續性,對于0≤v≤1,曲面片1在u=1的切平面和曲面片2在u=0處的切平面重合,曲面的法矢在跨界處連續,即:
其中λ(ν)是考慮法矢模長的不連續。
因為令C1連續的Bézier組合曲面(導矢連續)可以得到組合曲面所有等v線的梯度連續的矩陣表示。
2023/2/2842023/2/285取λ(ν)=λ,得到表明跨界的四對棱邊必須共線。
2023/2/286曲面片1曲面片22023/2/287B樣條曲線是Schocenberg于1946年提出的,1972年deBoor和Cox分別給出B樣條的標準算法。作為CAGD的一種形狀描述的數學方法是Gordon和Riesenfeld于1974年在研究Bézier曲線的基礎上給出的。B樣條曲線方程為:其中Pi,i=0,1,….,n為控制頂點
K次規范B樣條基函數Ni,K(t)(i=0,1,…,n)定義如下:ti(i=0,1,…,n)是對應于給定數據點的節點參數。7.4B樣條曲線和曲面2023/2/2880次(1階)B-樣條曲線K=0時的B-樣條基函數2023/2/2890次B-樣條曲線示例2023/2/2901次(2階)B-樣條基函數K=1時的基函數2023/2/291K=1時定義的曲線示例2023/2/2922次(3階)B-樣條基函數K=2時的基函數2023/2/293續前頁:2023/2/294續前頁:2023/2/295續前頁:2023/2/296續前頁:2023/2/2973階B-樣條基函數圖形2023/2/298[t0,t1][t1,t2][t2,t3][t3,t4][t4,t5]區間1階基函數2階基函數3階基函數4階基函數5階基函數節點矢量:由于每個基函數Ni,k需要的支撐區間是[ti,ti+k+1],考慮基函數的下標從0開始到n,所以節點矢量為[t0,tn+k+1]。遞推計算2023/2/299B-樣條曲線的定義共n-k+2段有效區間:[ti,ti+1]區間上定義k個非零基函數(Ni-k+1,k~Ni,k)
因此,有效區間的下標應滿足i>=k-1;與控制點對應,有效基函數下標應滿足:i<=n。故:總有效區間為[tk-1,tn+1]。2023/2/21003階B樣條曲線示例T=[t0,t1,…,tn+1,tn+2,tn+3]2023/2/2101B-樣條基函數的性質局部性權性連續性2023/2/2102B-樣條基函數的局部性在每一個區間上至多只有k個基函數非零,它們是:2023/2/2103B-樣條基函數的權性上式右端根據遞推公式展開并化簡得到:2023/2/2104B-樣條基函數的連續性2023/2/2105B-樣條曲線的分類根據節點矢量的不同形式分類均勻B樣條曲線準均勻B樣條曲線分段Bezier曲線非均勻B樣條曲線采用均勻節點矢量,即所有節點區間長度為大于0的常數,這樣的節點矢量定義了均勻B-樣條基,從而定義出均勻B-樣條曲線。當節點矢量在首末端點處有K重重復度,而在內部為均勻分布時,可定義準均勻B-樣條曲線。節點矢量在首末端點處有K重重復度,而在內部為非均勻分布。2023/2/2106均勻B-樣條曲線均勻節點矢量均勻B-樣條基均勻B-樣條曲線2023/2/2107例:三次均勻B樣條曲線(1)2023/2/2108三次均勻B樣條曲線(2)2023/2/2109基函數的平移性三次均勻B樣條曲線(3)1階基函數2階基函數2023/2/2110三次均勻B樣條曲線(4)2023/2/2111三次均勻B樣條曲線(5)由前面推導過程得到:2023/2/2112三次均勻B樣條曲線(6)2023/2/2113三次均勻B樣條曲線(7)2023/2/2114三次均勻B樣條曲線(8)2023/2/2115三次均勻B樣條曲線(9)上式即為區間[tj,tj+1]上3次均勻B樣條曲線的矩陣表達式。2023/2/2116P(3)P(4)P(5)2023/2/2117當K=3,且采用均勻參數化時,得到三次均勻B樣條曲線:7.4.1均勻B樣條曲線2023/2/2118在分段連接點處B樣條曲線的值和導矢量為:
上式描述的三次均勻B樣條曲線段的幾何特性如圖所示:曲線段首點位于以didi+1和di+1di+2為鄰邊的平行四邊形的1/6處;其切失與didi+2平行,模為長度的1/2;首點二階導矢是以di+1di和di+1di+2為鄰邊的平行四邊形的對角線。曲線末端也有類似的結論。圖7-13三次均勻B樣條曲線段的幾何特性2023/2/2119圖7-13三次均勻B樣條曲線段的幾何特性由圖7-13可以看出:當di、di+1和di+2三點共線時,曲線段起點Si(0)處二階導數S"i(0)為0,Si(0)可能為拐點(如圖7-14);當di、di+1、
di+2和di+3四點共線時,其所定義的曲線段退化為直線段;當di+1和di+2兩頂點重合時,曲線段起點Si(0)和末點Si(1)分別與didi+1和與di+1di+2
相切,且端點曲率為0(如圖7-15);2023/2/2120當di+1、di+2和di+3三頂點重合時,則曲線段在重點處出現尖點,重點與前點和后點在尖點前后各形成一段直線段(如圖7-16)。曲線的上述退化情形在實際設計中很有用,如圖7-17是應用曲線退化情形設計的尖點和直線段。2023/2/2121
對于三次均勻B樣條曲線,計算對應于參數[ui,ui+1]這段曲線上的一點,要用到Ni-3,3(u)、Ni-2,3(u)、Ni-1,3(u)、Ni,3(u)四個基函數,涉及ui-3到ui+4共8個節點的參數值。
B樣條曲線的基函數是局部支撐的,修改一個數據點,在修改處影響最大,對其兩側的影響快速衰減,其影響范圍只有前后各K段曲線,對曲線的其它部分沒有影響。這是計算機輔助幾何設計所需要的局部修改性。2023/2/2122
B樣條曲線的基函數是局部支撐的,均勻B樣條曲線未考慮曲線數據點的分布對參數化的影響,當曲線弦長差異較大時,弦長較長的曲線段比較平坦,而弦長較短的曲線段則臌漲,甚至于因過“沖”而產生“紐結”。2023/2/21237.4.2均勻B樣條曲面
給定16個頂點dij(i=1,2,3,4;j=1,2,3,4)構成的特征網格,可以定義一張曲面片。d24uvd42d43d44d11d12d13d14d21d23d31d32d33d34C4C3C1C2d41d22首先用di1、di2、di3、di4(i=1,2,3,4)構建四條V向曲線C1、C2、C3和C4(圖中虛線);2023/2/2124均勻B樣條曲面(續)參數v在[0,1]之間取值vk,對應于vk,曲線C1、C2、C3和C4上可得到V1k、V2k、V3k和V4k四個點,該四點構成u向的一個特征多邊形,定義一條新的曲線P(u,vk);uvC4C3C1C2V1kV3kV4kV2k當參數vk在[0,1]之間取不同值時,P(u,vk)沿如圖所示的黃色箭頭方向掃描,即得到由給定特征網格dij(i=1,2,3,4;j=1,2,3,4)定義的雙三次均勻B樣條曲面片P(u,v)。2023/2/2125
雙三次均勻B樣條曲面P(u,v)的矩陣表示d24uvV1kd42d43d44d11d12d13d14d21d23d31d32d33d34C4C3C1C2V2kV3kV4kd41P(u,vK)d222023/2/2126考慮曲線弦長的影響,則曲線的基函數不再具有同樣的格式,必須根據給定數據點進行弦長參數化,然后根據基函數的定義用如下的曲線方程計算各段曲線上的點:
非均勻B樣條曲線考慮了弦長的影響,曲線不會因為節點分布不均勻而產生過沖和紐結。非均勻B樣條曲線比均勻B樣條曲線具有更好的光順性,更符合數據點的分布。7.5非均勻有理B樣條曲線曲面7.5.1非均勻B樣條曲線曲面非均勻B樣條均勻B樣條2023/2/2127根據非均勻B樣條曲線方程,計算曲線上的點需要對應參數區間上的基函數的值和控制多邊形的頂點?;瘮档闹蹈鶕o定數據點的參數化進行計算??刂贫噙呅蔚捻旤c依據曲線是否通過給定數據點確定。若生成的曲線不通過給定數據點,則給定數據點就是控制多邊形頂點。若生成的曲線通過給定數據點,則首先必須根據給定數據點反求控制多邊形的頂點,然后再代入曲線。
非均勻B樣條曲線的實現2023/2/2128
給定數據點di(i=0,1,…,n-1)就是控制多邊形的頂點。不過點三次非均勻B樣條開口和閉口曲線需要分別處理。對于開口曲線,n個數據點只畫n-3段曲線,需n-2個節點參數。而計算[Ui,Ui+1]上的一點,要用到除它們之外的前3個和后3個節點參數,所以在首尾各添加3個節點參數,一共需要n+4個節點參數值。為使曲線過給定數據的首末點,令U0=U1=U2=0;Un+1=Un+2=Un+3=1;全部節點參數為:U0=U1=U2=0;UK,UK+1,…,Un;Un+1=Un+2=Un+3=1;(1)不過點三次非均勻B樣條曲線2023/2/2129用Hartley-Judd方法,即所畫曲線段對應的控制多邊形的長度與總控制多邊形的長度之比確定節點參數。計算出節點參數后,就可以用前述的遞歸函數計算基函數Ni,K(u)的值,得到基函數的值,就可以代入曲線方程計算各段曲線上的點。圖7-22不過點非均勻B樣條曲線2023/2/2130對于閉合曲線,n個數據點畫n段曲線,需n+1個節點參數曲線;首尾各添加3個節點參數,共n+7個節點參數。由于不過點閉合曲線,不通過控制多邊形的首末點,全部節點參數為:
U0=0<U1<U2<UK<UK+1<…<Un+3<Un+4<Un+5<Un+6=1各節點的參數值采用Hartley-Judd方法。計算出節點參數后,就可以計算基函數Ni,K(u)的值,然后用曲線方程計算各段曲線上的點。2023/2/2131對于過點曲線,給定的數據點Pi(i=0,1,…,n-1)是曲線上的點。由曲線方程知,必須先計算出節點參數,再計算基函數Ni,K(u)的值,代入曲線方程,才能反算出控制多邊形的頂點:
n個數據點,反求出n+2個控制頂點,畫n-1段曲線,需n個節點參數;首尾各添加3個節點參數,一共需要n+6個節點參數值;在曲線首端重3段曲線首段的長度,在曲線的末端重3段曲線末段的長度。所有節點參數為:
U0=0<U1<U2<UK<UK+1<…<Un+2<Un+3<Un+4<Un+5=1i=1,2,……,n+5,L為包含附加段在內的總長。(2)過點三次非均勻B樣條曲線2023/2/2132根據節點矢量計算基函數Ni,K(u)的值,代入曲線方程可以計算n個已知的曲線上的點,得如下方程:
寫成矩陣形式如下:
對于開口曲線,d0=P0,dn+1=Pn-1,上述方程組是“追趕法”能夠求解的三對角方程。求出d0,d1,……,dn,dn+1共n+2個控制頂點,即可以畫出n-1曲線。(閉合曲線省略)2023/2/2133wi,i=0,1,…,n稱為權因子;Ni,K(u)是B樣條的基函數
有理B樣條曲線非均勻B樣條考慮節點分布不勻稱的影響,但與所有已介紹的計算曲線一樣,非均勻B樣條不能精確表達二次曲線曲面,采用有理B樣條,可以統一表達自由曲線曲面和二次曲線曲面。
有理B樣條曲線的表達式為:
當Ni,K(u)是均勻基函數時,p(u)為均勻有理B樣條曲線;當Ni,K(u)是非均勻基函數時,p(u)為非均勻有理B樣條
(Non-UniformRationalB-Spline,簡稱NURBS)曲線;通過合理的定義權系數,NURBS曲線能夠精確地描述二次圓錐曲線。目前已納入到產品形狀定義的工業標準之中。2023/2/2134曲線設計方法的關鍵在于基函數的選擇,選擇合適的基函數能夠使系數矢量具有更明確的幾何意義,繪圖操作簡單直觀。基函數和參數化方法的選擇對曲線的精度、光順性、局部修改性具有決定性的影響。整個曲線設計方法的改進方向是在提高精度、保證光順性的同時追求靈活的操作、明確的幾何意義和良好的局部修改性。
曲線設計結論:2023/2/21357.6用OpenGL生成曲線和曲面
OpenGL中繪制Bezier曲線曲面是通過定值器完成的。(參考/OpenGL/credbook/evaluator.html
)1.定義定值器
指定定值器類型,每個方向的起止范圍、次數(控制點數),每個方向步進一個單位對應的浮點值個數,控制點清單。如glMap1f(GL_MAP1_VERTEX_3,0.0,1.0,3,4,&ctrlpoints[0][0]);2.打開定值器voidglEnable(定值器類型);3.引用定值器
glEvalCoord(Ui,Vi);
當前生成的點的值域注意與1.中取得一致,如果總的值域為[0,1],則100個點組成的曲線上第i點的值域為(1-0)*i/100。2023/2/2136用OpenGL生成NURBS曲線和曲面
在OpenGL中,GLU函數庫提供了一個NURBS接口。用戶需要提供的數據包括控制點、節點等數據,控制點描述曲線的大致形狀,節點控制B樣條函數的形狀。繪制一條NURBS曲線的步驟:(1)提供控制點序列和節點序列;(2)創建一個NURBS對象,設置NURBS對象屬性;(3)繪制曲線;參考/ArticleShow.asp?id=4539&categoryid=8創建一個NURBS對象,用如下兩條語句:
GLUnurbsObj*theNurbs;
theNurbs=gluNewNurbsRender();2023/2/2137用OpenGL生成一條NURBS曲線(續)創建對象后,用如下函數設置NURBS對象屬性:voidgluNurbsProperty(GLUnurbsObj*nobj,GLenumproperty,Glfloatvalue);曲線的繪制是在gluBeginCurve()/gluEndCurve()函數對中完成。繪制曲線的函數為:voidgluNurbsCu
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2027屆貴州省六盤水水城區三上數學期末學業水平測試模擬試題含解析
- 跨境互聯網數字童工內容跨國平臺舉報與社會責任-基于國際勞工組織消除童工勞動綱領及各國互聯網平臺治理實證
- 四年級古詩加考題及答案
- 2027屆河南省鄭州市上街區三上數學期末達標檢測模擬試題含解析
- 林清軒山茶萃養油啟煥顏
- 海外機構低配中資股程度進一步修復-美國13F報告視角
- 2026年科研工作總結報告
- 家電行業智能空調溫度精準控制技術創新項目技術創新總結報告
- 航空安防智能系統入侵檢測與防御技術創新總結報告
- 電力行業生物質能發電廠燃料輸送系統安全投入管理總結報告
- 2026四川甘孜州丹巴縣選調事業單位人員9人筆試備考題庫及答案詳解
- 2026年特種設備P4液化石油氣瓶充裝模擬考試題庫試卷及答案
- 2026年度北京首都旅游集團有限責任公司管理培訓生招募筆試歷年難易錯考點試卷帶答案解析
- 2026中國碳纖維復合材料汽車輕量化成本效益分析
- 小兒先天性心臟病診療指南(2025年版)
- 2026年生物科技農業育種報告及未來五至十年高效種植報告
- 醫院手術室凈化裝修工程技術交底報告
- (正式版)DB43∕T 2136-2021 《高速公路車輛救援服務與管理規范》
- (四調)吉林市2026年高三畢業年級第四次調研測試 生物試卷(含答案)
- 2026貴州畢節市威寧縣國營建筑工程有限公司招聘7人筆試備考題庫及答案詳解
- 2026年四川大學基礎學科拔尖計劃面試試題含答案
評論
0/150
提交評論