版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
計算機圖形學第二章幾何建模主要內容2.1點、標量和向量2.2坐標系統2.3圖元和屬性2.4彩色立方體建模2.5二維Sierpinski鏤墊繪制2.6三維Sierpinski鏤墊繪制2.7球的建模2.1點、標量和向量客觀世界中的物體都是三維的,真實地描述和顯示客觀世界中的三維物體是計算機圖形學研究的主要內容。在計算機圖形學中,通常用點、線段、多邊形和多面體這樣的幾何對象來描述和顯示客觀世界。點是最基本的幾何對象。在三維幾何空間中,點是空間中的一個位置。點所具有的唯一性質就是它的空間位置。數學上的點既沒有大小,也沒有形狀。2.1點、標量和向量標量是服從一組規則的對象,這些規則是從普通的算術運算中抽象出來的。實數就是標量的例子。因此,可以對標量定義加法和乘法,并且這些運算滿足交換律和結合律等規則。每個標量都有乘法運算和加法運算的逆元。逆元隱含地定義了減法和除法。向量是任何具有方向和大小的量。速度和力等物理量就是向量。然而,向量在空間中沒有確定的位置。2.1點、標量和向量在計算機圖形學中,經常把兩個點用一條有向線段連接起來。一條有向線段既有大小(它的長度),又有方向(箭頭所指的方向),因而是向量。2.1點、標量和向量下圖所示的有向線段都具有相同的大小和方向,因為向量沒有固定的位置,所以它們是相同的向量。常常把向量和有向線段這兩個術語當成同義詞來使用。2.1點、標量和向量可以增加或減小向量的長度而不改變方向。在下圖中,有向線段A和有向線段B的方向相同,但B的長度是A的兩倍,因此可以記為B=2A。2.1點、標量和向量還可以根據三角形法則(head-to-tailrule)把兩個有向線段合并成一有向線段。如下圖所示。把向量A的終點和向量C的起點放在同一個位置,從A的起點到C的終點的有向線段就是得出的新向量D。把這個新向量D叫做A與C的和(sum),記為D=A+C。因為向量沒有固定的位置,在借助圖形進行向量加法的時候,如果必要可以移動向量。2.1點、標量和向量下圖所示的兩條有向線段A和E,它們的長度相同但方向相反,根據三角形法則求出的和向量的長度為零。這個和向量是一個叫做零向量(zerovector)的特殊向量,把它記為0。因為零向量的長度為零,所以它的方向沒有定義。把E叫做A的逆(inverse),記為E=-A。有了逆向量的概念,就可以對像A+2B-3C這樣的標量-向量表達式賦予明確的意義。2.1點、標量和向量對一個點和一條有向線段(向量)可以定義一種運算。如圖所示,把Q點作為有向線段的起點,這樣有向線段的終點P就給出了運算的結果。這個運算稱為點-向量加法(point-vectoraddition),它的結果是一個新的點,記為P=Q+v。點-向量運算把點Q移動到新位置P,移動的長度和方向由向量v決定。2.1點、標量和向量對一個點和一條有向線段(向量)可以定義一種運算。從稍微不同的角度來看下圖,任何兩個點都定義了一條有向線段(向量),這條有向線段從第一個點指向第二個點。這個運算稱為點點減法(point-pointsubtraction),記為v=P-Q。因為可以用標量來乘向量,所以可以對一些包含標量、向量和點的表達式賦予明確的意義,例如像P+3v和2P-Q+3v[可以寫成點-向量加法的形式:P+(P-Q)+3v]這樣的表達式是有意義的,但是像P+3Q-v這樣的表達式沒有意義。2.1點、標量和向量標量場標量集中的任何兩個標量都可以經過加法和乘法兩種運算得到另一個標量,如果這兩種運算滿足封閉性、結合律、交換律和對逆函數的要求,那么這些標量就構成了一個標量場(scalarfield)。2.1點、標量和向量向量空間向量空間(vectorspace)也稱線性空間(linearspace),它包括兩種不同的實體:矢量和標量。除了標量之間的運算,向量空間還定義了:標量-向量乘法u=αv向量-向量加法:w=u+v因此,可以通過一組基向量來表示向量。向量空間不一定要有度量。2.1點、標量和向量仿射空間(affinespace)仿射空間(affinespace)也向量空間的擴展,除了向量和標量,它還包括點對象。仿射空間運算向量-向量加法標量-向量乘法點-向量加法標量-標量運算對任何點,有1?P=P0?P=0(zerovector)2.1點、標量和向量標量、點和向量抽象數據類型(AbstractDataType,ADT)。ADT是在數據上定義的一些運算,這些運算的定義不依賴于數據在計算機內部的表示方式和運算的具體實現方式。數據抽象是現代計算機科學的基本概念。從計算的角度來看,不管一個對象在特定的系統內部是如何表示或實現的,都能夠通過下面的代碼來定義幾何對象:vectoru,v;pointp,q;scalara,b;2.1點、標量和向量直線的表示從點與向量之和(或者兩個點之差)可以引出仿射空間中直線的概念考慮所有形如:P(α)=P0+αd的點,就形成了經過點P0,在向量d方向的點集。這里P0是任意一個點,d是任意一個向量,α是一個可以在某個范圍內變化的標量。
2.1點、標量和向量直線的表示P(α)=P0+αd稱為直線的參數形式(parametricform),因為我們通過改變參數a來生成直線上的點。如果α>=0,P(α)就是遠離P0
在d方向的射線如果用兩個點來定義v(v=R-Q),就可得到P(α)=Q+α(R-Q)=Q+αv=αR+(1-α)Q在0<=a<=1范圍,就得到了R和Q之間直線段上的所有點上式也可寫成:P=αR+βQ,其中α+β=12.1點、標量和向量凸包性如果對象內任意兩點之間的連線都在對象內,就說明這個對象是凸的(Convex)。將加法式子P=αR+βQ進一步擴展,我們可以得到如下的加法式子:P=α1P1+α2P2+…+αnPn,其中:α1+α2+…αn=1,這就是點P1,P2,…..Pn的仿射加法。當αi>=0時,我們就可得到P1,P2,…..Pn的凸包。2.1點、標量和向量平面的表示在仿射空間中,直接推廣直線的參數形式就可得到平面的定義一個平面可用一個點和兩個向量或者三個點定義T(a,b)=R+au+bvuvRT(a,b)=R+a(Q-R)+b(P-Q)PRQ2.1點、標量和向量平面的表示可以看到,對于0≤α,β≤1,所有的點T(α,β)都位于三角形PQR中。2.1點、標量和向量平面的表示如圖,如果點P在平面內,那么P-P0=αu+βv,我們可以找到一個與u和v都正交的向量n。如果使用叉積n=u×v,那么平面的方程變為n●(P-P0)=0,向量n稱為平面的法向量(normal),它和平面垂直或者說正交。2.2坐標系統一組向量v1,v2,…,vn
如果滿足如下條件a1v1+a2v2+..anvn=0僅當a1=a2=…=0
則說這組向量是線性無關的如果一組向量線性無關,則這些向量之間不能互相表達如果一組向量線性相關,則至少有一個向量可以由其他向量表示2.2坐標系統在一個向量空間中,線性無關的最大向量個數被叫做這個空間的維度在一個n維空間中,任意n個線性無關的向量組構成了這個空間的基。當基v1,v2,….,vn確定后,這個空間的任一向量v都可用這些基表示v=a1v1+
a2v2
+….+anvn
其中{ai}是唯一的
標量{a1,a2,….an}就是v關于這個基的分量,記為:a=[a
1
a2
….an]T=
2.2坐標系統
2.2坐標系統
wv1v2v3wv1v2v32.2坐標系統因為仿射空間包含點,所以一旦在這樣的空間里選定一個特定的參考點(原點),就可以以一種明確的方式表示所有的點,這就構成了一個坐標系統。坐標系統就是描述物質存在的空間位置(坐標)的參照系,通過定義特定基準及其參數形式來實現。P0v1v2v32.2坐標系統坐標系統由一個原點和線性無關的向量定義(P0,v1,v2….vn)在這個坐標系統中,任一向量可表達為:v=a1v1+
a2v2
+….+anvn任一點可表達為:P=P0+b1v1+b2v2
+….+bnvn點和向量可以寫成P=[b1b2b3]v=[a1a2a3],點和向量的表達差不多是一樣的?2.2坐標系統如果定義0?P=0,1?P=P,以三維空間為例,則點和向量可以記為:
v=a1v1+
a2v2
+a3v3=[a1a2
a3
0
]
[v1v2v3
P0]TP=P0+b1v1+
b2v2
+b3v3=[b1b2
b3
1
]
[v1v2v3
P0]T這個我們就得到一個齊次坐標表達:v=[a1a2
a3
0
]
Tp=[b1b2
b3
1
]
T2.2坐標系統齊次坐標表示就是用n+1維向量表示一個n維向量如:P[P1,P2,…,Pn]P[hP1,hP2,…,hPn,h]h不為0
齊次坐標具有不唯一性:如普通坐標系下的點(2,3)變換為齊次坐標可以是(1,1.5,0.5)、(4,6,2)、(6,9,3)等等。
規范化齊次坐標表示就是h=1的齊次坐標表示
P[P1,P2,…,Pn,1]
如何從齊次坐標轉換到規范化齊次坐標
P[hP1/h,hP2/h,…,hPn/h,h/h]2.2坐標系統對所有的計算機圖形系統來說,齊次坐標都是一個很重要的概念所有仿射變換(旋轉,平移,縮放)都可借助齊次坐標表示成矩陣相乘的方式當齊次坐標最后一位w=0表示向量,w=1表示點硬件直接實現了齊次坐標的運算,而且利用并行機制來提高計算速度2.2坐標系統當基不同的時候,同一向量的表達可能不一樣,如圖在不同的基下,v的表達不一樣:令:這樣,兩組基之間就存在變換關系:以上的系數可以用一個3x3矩陣表示:這樣,這兩個在不同基的坐標之間的關系就可表達為:vv=a1v1+a2v2
+a3v3=[a1a2
a3]
[v1v2v3]T=b1u1+b2u2
+b3u3=[b1b2
b3]
[u1u2u3]Ta=[a1
a2
a3]b=[b1
b2b3]u1=g11v1+g12v2+g13v3u2=g21v1+g22v2+g23v3u3=g31v1+g32v2+g33v3M=
2.2坐標系統假設有如下兩個坐標系定義為:(P0,v1,v2,v3)、(Q0,u1,u2,u3),如圖所示:則兩個坐標系之間的變換:這樣,可定義一個4x4的矩陣這樣,坐標系之間的變換可以寫成a=MTb,a,b均用齊次坐標表示。P0v1v2v3Q0u1u2u3u1=g11v1+g12v2+g13v3u2=g21v1+g22v2+g23v3u3=g31v1+g32v2+g33v3Q0=g41v1+g42v2+g43v3+g44P0
M=2.2坐標系統圖形繪制流水線中存在6個坐標系,按在圖形繪制流水線中出現的先后次序為:1、建模坐標系;2、對象坐標系或世界坐標系3、觀察坐標系或相機坐標系;4、裁剪坐標系5、規范化設備坐標系;6、窗口坐標系或設備坐標系2.3圖元和屬性圖元就是組成圖形的基本單元,比如三維模型中的點、線、面等等。一般把圖元分為兩類:幾何圖元(geometricprimitive)和圖像(光柵)圖元(image(raster)primitive)幾何圖元由用戶的問題域確定,包括點、線段、多邊形、曲線和曲面,這些圖元要經過圖形流水線處理。光柵圖元的一個例子就是像素陣列,它不具有幾何屬性,不能像對幾何圖元那樣對光柵圖元進行幾何操作。2.3圖元和屬性點是構成圖形的基礎,也是最主要的基本圖元。在三維空間中,通常用一個形如(x,y,z)的三維坐標值表示。在WebGL中,基本的幾何圖元就是由頂點集合來確定的。在WebGL中,為了顯示圖形,應用程序首先計算頂點數據(位置和其他屬性),然后將計算結果存儲到數組并發送到GPU中,當需要繪制這些幾何數據時,可以調用特定的繪制函數并通過其參數說明這些頂點數據所能繪制的圖元類型。線段是指直線上兩點間的有限部分,是由兩個頂點連接起來形成的圖元,一般由兩個端點來定義。2.3圖元和屬性多邊形用來表示邊界可以用封閉折線而且內部有明確定義的對象。多邊形在計算機圖形學中起到了特殊作用,因為多邊形可以快速顯示并用來近似任意的表面。圖形系統的性能可以用每秒能夠繪制的多邊形的數量來表征。有三條性質可以確保多邊形被正確顯示:多邊形必須是簡單的、凸的和平面的。三角形一定是簡單的、凸的和平面的。因此,三角形是最容易繪制的多邊形,并且只要三角形的三個頂點不共線,那么它的內部區域能得到很好的定義。三角形也是WebGL能識別并可填充的唯一的幾何實體。2.3圖元和屬性WebGL包含有點、線段和三角形等基本圖元。在WebGL中,任何幾何圖元都是由這些基本圖元構成的。WebGL提供了多種類型的點和線段圖元,如下圖所示:WebGL提供了三角形、三角形條帶和三角形扇。利用三角形扇和三角形帶可以方便地近似許多曲面。2.3圖元和屬性在WebGL中,任何幾何圖形都是由點、線段和三角形等這些基本圖元組成。2.3圖元和屬性文本是另一種需要關注的圖元。傳統的圖形系統支持兩種文本形式:筆畫文本和光柵文本。筆畫文本(stroketext)是像其他幾何對象那樣構造出來的,它的優點是:對任何其他對象能夠定義的細節,也可以對它定義;可以像其他幾何對象一樣進行標準變換和觀察操作。光柵文本(rastertext)將字符定義為由0和1組成的矩形陣列,這樣的比特陣列叫做位塊(bitblock).2.3圖元和屬性用來描述對象如何被繪制的方式稱為屬性不同的對象具有不同的屬性,包括顏色、線型、線寬、填充模式等。屬性可以與幾何對象關聯或綁定。下圖左為線對象可能對應的屬性,右為面對象可能對應的屬性。2.4彩色立方體建模點是組成圖元的基本單位,所以,首先確定立方體頂點的坐標:varvertices=[vec4(-0.5,-0.5,0.5,1.0),vec4(-0.5,0.5,0.5,1.0),vec4(0.5,0.5,0.5,1.0),vec4(0.5,-0.5,0.5,1.0),vec4(-0.5,-0.5,-0.5,1.0),vec4(-0.5,0.5,-0.5,1.0),vec4(0.5,0.5,-0.5,1.0),vec4(0.5,-0.5,-0.5,1.0)];2.4彩色立方體建模這樣,就可用這一組頂點來定義立方體的面。例如,可以使用一個頂點序列0,3,2,1來定義一個面,其中每個整數表示頂點在數組中的索引。由于三角形才是基本圖元,還需要將面分解為三角形表示,例如,可以將0,3,2,1定義的面分解為0,3,2和0,2,1兩個三角形。2.4彩色立方體建模構建面的時候要注意向內和向外的面如果從外部觀看一個對象的表面時,其頂點時按逆時針遍歷的,則這個面稱作向外的(outward),反之時向內的。(右手法則)2.4彩色立方體建模為立方體賦色用RGBA顏色模式為每個頂點定義顏色:varvertexColors=[vec4(0.0,0.0,0.0,1.0),//blackvec4(1.0,0.0,0.0,1.0),//redvec4(1.0,1.0,0.0,1.0),//yellowvec4(0.0,1.0,0.0,1.0),//greenvec4(0.0,0.0,1.0,1.0),//bluevec4(1.0,0.0,1.0,1.0),//magentavec4(0.0,1.0,1.0,1.0),//cyanvec4(1.0,1.0,1.0,1.0)//white];2.4彩色立方體建模為立方體賦色圖形系統需要利用頂點的顏色填充多邊形,或者說是利用頂點的顏色插值出多邊形內部點的顏色。2.4彩色立方體建模為立方體賦色也可以為一個面的所有點賦予同一顏色,則該面即為該顏色。2.5二維Sierpinski鏤墊繪制二維Sierpinski鏤墊的繪制方法可以從一個三角形開始,通過連接各邊的中點把每個三角形分成四個更小的三角形并去掉中間的小三角形,然后重復這個過程生成。首先定義初始三角形的三個頂點;varvertices=[vec2(-1.0,-1.0),vec2(0.0,1.0),vec2(1.0,-1.0)];再對三角形進行剖分:divideTriangle(vertices[0],vertices[1],vertices[2],numTimesToSubdivide);剖分時需取得各邊的中點:varab=mix(a,b,0.5);varac=mix(a,c,0.5);varbc=mix(b,c,0.5);`2.5二維Sierpinski鏤墊繪制三角形剖分代碼如下:剖分得到的三角形以點集的形式存儲起來使用gl.TRIANGLES繪制填充的三角形functiondivideTriangle(a,b,c,count){
//checkforendofrecursion
if(count===0){
triangle(a,b,c);
}
else{
//bisectthesides
varab=mix(a,b,0.5);
varac=mix(a,c,0.5);
varbc=mix(b,c,0.5);
--count;
//threenewtriangles
divideTriangle(a,ab,ac,count);
divideTriangle(c,ac,bc,count);
divideTriangle(b,bc,ab,count);
}}functiontriangle(a,b,c){
points.push(a,b,c);}用一個四面體代替初始的三角形,并使用二維鏤墊繪制方法即可繪制三維鏤墊首先定義三面體的四個頂點:2.6三維Sierpinski鏤墊繪制再對三角形進行剖分:varvertices=[vec3(-0.5,-0.5,-0.5),vec3(0.5,-0.5,-0.5),vec3(0.0,0.5,0.0),vec3(0.0,-0.5,0.5)];varab=mix(a,b,0.5);
varac=mix(a,c,0.5);
varad=mix(a,d,0.5);
varbc=mix(b,c,0.5);
varbd=mix(b,d,0.5);varcd=mix(c,d,0.5);`2.6三維Sierpinski鏤墊繪制四面體剖分代碼如下:將剖分得到的四面體以點集的形式存儲起來functiondivideTetra(a,b,c,d,count){
//checkforendofrecursion
if(count===0){
tetra(a,b,c,d);
}
//findmidpointsofsides
//dividefoursmallertetrahedra
else{
varab=mix(a,b,0.5);
varac=mix(a,c,0.5);
varad=mix(a,d,0.5);
varbc=mix(b,c,0.5);
varbd=mix(b,d,0.5);
varcd=mix(c,d,0.5);
--count;
divideTetra(a,ab,ac,ad,count);
divideTetra(ab,
b
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 英語作文素材
- 業務流程訂單篡改風險檢測報告
- 2025重慶設計集團重慶市設計院有限公司高層次人才招聘2人筆試歷年參考題庫附帶答案詳解
- 2025重慶新華出版集團有限公司總法律顧問招聘1人筆試歷年參考題庫附帶答案詳解
- 2025重慶城建控股(集團)有限責任公司招聘筆試歷年參考題庫附帶答案詳解
- 2025重慶兩江新區人才發展集團標注類崗位代理招聘筆試歷年參考題庫附帶答案詳解
- 2025遼寧遼漁集團招聘27人筆試歷年參考題庫附帶答案詳解
- 2025遼寧沈陽盛京資產管理集團有限公司所屬子公司沈陽國際陸港集團有限責任公司招聘14人筆試歷年參考題庫附帶答案詳解
- 2025貴州金融控股集團有限責任公司招聘應屆畢業生30人筆試歷年參考題庫附帶答案詳解
- 2025貴州水投水務集團有限公司第二批次面向社會招聘通過筆試歷年參考題庫附帶答案詳解
- 2027創新設計一輪生物第14講 減數分裂和受精作用
- 2026年寧夏惠安市政產業有限公司公開招聘工作人員考試參考題庫及答案詳解
- 2026上海閔行公安機關專業特保招聘602人筆試模擬試題及答案詳解
- 2026河南南陽南召縣招聘巡防隊員招聘60人筆試模擬試題及答案詳解
- 2026年江蘇省初級注冊安全工程師考試真題及答案
- 2025版老年晚期肺癌治療專家共識解讀課件
- 2026貴州六盤水市消防救援支隊面向社會招錄政府專職消防員22人筆試參考題庫及答案詳解
- 小兒支氣管哮喘持續狀態護理查房
- 臨床腹腔內壓力經膀胱間接測量技術解讀及實踐經驗共享
- SLT 336-2025水土保持工程全套表格
- 醫院合法性審查工作制度
評論
0/150
提交評論