




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第二章 三維觀察1. 三維觀察坐標(biāo)系1.1觀察坐標(biāo)系 為了在不同的距離和角度上觀察物體,需要在用戶坐標(biāo)系下建立觀察坐標(biāo)系xv,yv,zv(通常是右手坐標(biāo)系)也稱(View Reference Coordinate)。如下圖所示,其中,點(diǎn)p0(xo, yo, z0)為觀察參考點(diǎn)(View Reference Point),它是觀察坐標(biāo)系的原點(diǎn)。圖1.1 用戶坐標(biāo)系與觀察坐標(biāo)系依據(jù)該坐標(biāo)系定義垂直于觀察坐標(biāo)系z(mì)v軸的觀察平面(view palne),有時(shí)也稱投影平面(projection plane)。圖1.2 沿zv軸的觀察平面 1.2觀察坐標(biāo)系的建立 觀察坐標(biāo)系的建立如下圖所示:圖1.3 法矢
2、量的定義 觀察平面的方向及zv軸可以定義為觀察平面(view plane)N法矢量N: 在用戶坐標(biāo)系中指定一個(gè)點(diǎn)為觀察參考點(diǎn),然后在此點(diǎn)指定法矢量N,即zv軸的正向。法矢量V:確定了矢量N后,再定義觀察正向矢量V,該矢量用來(lái)建立yv軸的正向。通常的方法是先選擇任一不平行于N的矢量V,然后由圖形系統(tǒng)使該矢量V投影到垂直于法矢量N的平面上,定義投影后的矢量為矢量V。法矢量U:利用矢量N和V,可以計(jì)算第三個(gè)矢量U,對(duì)應(yīng)于xz軸的正向。 的指定視圖投影到顯示設(shè)備表面上的過(guò)程來(lái)處理對(duì)象的描述。2. 世界坐標(biāo)系 在現(xiàn)實(shí)世界中,所有的物體都具有三維特征,但是計(jì)算機(jī)本身只能處理數(shù)字,顯示二維的圖形,將三維物體
3、和二維數(shù)據(jù)聯(lián)系到一起的唯一紐帶就是坐標(biāo)。為了使被顯示的物體數(shù)字化,要在被顯示的物體所在的空間中定義一個(gè)坐標(biāo)系。該坐標(biāo)系的長(zhǎng)度單位和坐標(biāo)軸的方向要適合被顯示物體的描述。該坐標(biāo)系被稱為世界坐標(biāo)系,世界坐標(biāo)系是固定不變的。 OpenGL中世界坐標(biāo)用來(lái)描述場(chǎng)景的坐標(biāo),Z+軸垂直屏幕向外,X+從左到右,Y+軸從下到上。世界坐標(biāo)系是右手笛卡爾坐標(biāo)系統(tǒng)。我們用這個(gè)坐標(biāo)系來(lái)描述物體及光源的位置。世界坐標(biāo)系以屏幕中心為原點(diǎn)(0,0,0),長(zhǎng)度單位這樣來(lái)定: 窗口范圍按此單位恰好是(-1,-1)到(1,1)。 3. 世界坐標(biāo)系到觀察坐標(biāo)系 在三維觀察流水線中,場(chǎng)景構(gòu)造完成后的第一步工作是將對(duì)象描述變換到觀察坐標(biāo)系
4、中。對(duì)象描述的轉(zhuǎn)換等價(jià)于將觀察坐標(biāo)系疊加到世界坐標(biāo)系的一連串變換。1. 平移觀察坐標(biāo)原點(diǎn)到世界坐標(biāo)系原點(diǎn)。2. 進(jìn)行旋轉(zhuǎn),分別讓xview、yview和zview軸對(duì)應(yīng)到世界坐標(biāo)的xw、yw、zw軸。如果指定世界坐標(biāo)點(diǎn)P=(x0,y0,z0)為觀察坐標(biāo)原點(diǎn),則將觀察坐標(biāo)系原點(diǎn)移到世界坐標(biāo)系原點(diǎn)的變換是將觀察坐標(biāo)系疊加到世界坐標(biāo)系的組合旋轉(zhuǎn)變換矩陣使用單位向量u、v和n來(lái)形成。該變換矩陣為這里,矩陣R的元素是uvn軸向量的分量。將前面的平移和旋轉(zhuǎn)矩陣乘起來(lái)獲得坐標(biāo)變換矩陣:=該矩陣中的平移因子按u、v、n和P0的向量點(diǎn)積計(jì)算而得,P0代表從世界坐標(biāo)系原點(diǎn)到觀察原點(diǎn)的向量。換句話說(shuō),平移因子實(shí)在每
5、一軸上的負(fù)投影(觀察坐標(biāo)系中的負(fù)分量P0)。這些矩陣元素的取值為矩陣將世界坐標(biāo)系中的對(duì)象描述變換到觀察坐標(biāo)系。4. 投影變換對(duì)象描述變換到觀察坐標(biāo)后,下一階段是將其投影到觀察平面上。投影變換就是把三維立體(或物體)投射到投影面上得到二維平面圖形。平面幾何投影主要指平行投影、透視投影以及通過(guò)這些投影變換而得到的三維立體的常用平面圖形:三視圖、軸視圖以及透視圖。 圖形軟件一般都支持平行投影和透視投影兩種方式。 在平行投影中(parallel projection)中,坐標(biāo)位置沿平行線變換到觀察平面上。圖4.1給出了用端點(diǎn)坐標(biāo)P1和P2描述的線段的平行投影。平行投影保持對(duì)象的相關(guān)比例不變,這是三維對(duì)
6、象計(jì)算機(jī)輔助繪圖和設(shè)計(jì)中產(chǎn)生成比例工程圖的方法。場(chǎng)景中的平行線在平行投影中顯示成平行的。一般有兩種獲得對(duì)象平行視圖的方法:沿垂直于觀察平面的直線投影,或沿某傾斜角度投影到觀察平面。圖4.1 線段到觀察平面的平行投影在透視投影(perspective projection)中,對(duì)象位置沿會(huì)聚到觀察平面后一點(diǎn)的直線變換到投影坐標(biāo)系。圖4.2給出了用端點(diǎn)坐標(biāo)P1和P2描述的線段的透視投影。與平行投影不同的是,透視投影不保持對(duì)象的相關(guān)比例。但場(chǎng)景的透視投影真實(shí)感教好,因?yàn)樵谕敢曪@示中較遠(yuǎn)的對(duì)象減小了尺寸。圖4.2 線段到觀察平面的透視投影5. 正投影對(duì)象描述沿與投影平面法向量平行的方向到投影平面上的變
7、換稱為正投影(orthogonal projection;或正交投影,orthographic projection)。這生成一個(gè)平行投影變換,其中投影線與投影平面垂直。正投影常常用來(lái)生成對(duì)象的前視圖、側(cè)視圖和頂視圖,如圖5.1所示,前、側(cè)和后方向的正投影稱為立面圖,頂部正投影稱為平面圖。工程和建筑繪圖通常使用正投影,因?yàn)榭梢跃_地繪出長(zhǎng)度和角度,并能從圖中測(cè)量出這些值。圖5.1 對(duì)象的正投影,顯示了平面圖和立面圖6. 斜投影斜投影是將三維形體向一個(gè)單一的投影面作平行投影,但投影方向不垂直于投影面所得到的平面圖形。常選用垂直于某個(gè)主軸的投影面,使得平行于投影面的形體表面可以進(jìn)行距離和角度的測(cè)量
8、。斜投影的特點(diǎn):既可以進(jìn)行測(cè)量又可以同時(shí)反映三維形體的多個(gè)面,具有立體效果。常用的斜軸測(cè)圖有斜等測(cè)圖和斜二測(cè)圖,如下圖所示。圖6.1 斜投影斜等側(cè)投影:投影方向與投影平面成450的斜平行投影,它保持平行投影平面和垂直投影平面的線的投影長(zhǎng)度不變。斜二側(cè)投影:與投影平面成arctg(1/2)角的斜平行投影,它使垂直投影平面的線產(chǎn)生長(zhǎng)度為原1/2的投影線。7. 透視投影透視投影基本符合人類的視覺(jué)習(xí)慣,同樣尺寸的物體離視點(diǎn)近的比離視點(diǎn)遠(yuǎn)的大,遠(yuǎn)到極點(diǎn)即消失。以透視方式在計(jì)算機(jī)屏幕上觀察物體,就如同透過(guò)一個(gè)完全透明的四方玻璃片看東西一樣。想象有一條從眼睛到物體的線,這條直線穿過(guò)玻璃,并在玻璃上涂上一個(gè)與
9、物體顏色相同的點(diǎn)。如果對(duì)所有穿過(guò)玻璃的線都這樣做,并且保持眼睛不動(dòng),那么玻璃片上的圖像就是透視變換后得到的圖像,這塊玻璃片就是窗口。正如人眼睛不能聚焦到非常近或非常遠(yuǎn)的物體一樣,透視投影有2個(gè)剪切面近剪切面和遠(yuǎn)剪切面,分別將離視點(diǎn)太近和太遠(yuǎn)的物體部分或全部地剪切掉。透視投影的特點(diǎn)是距離視點(diǎn)近的物體大,距離視點(diǎn)遠(yuǎn)的物體小,遠(yuǎn)到極點(diǎn)即為消失。它的觀察空間是一個(gè)頂部和底部都被切除掉的棱椎,也就是棱臺(tái)。OpenGL透視投影函數(shù)也有兩個(gè),其中一個(gè)函數(shù)是:void glFrustum(GLdouble left,GLdouble Right,GLdouble bottom,GLdouble top,GLd
10、ouble near,GLdouble far);此函數(shù)創(chuàng)建一個(gè)透視投影的有限觀察空間。它的參數(shù)只定義近裁剪平面的左下角點(diǎn)和右上角點(diǎn)的三維空間坐標(biāo),即(left,bottom,-near)和(right,top,-near);最后一個(gè)參數(shù)far是遠(yuǎn)裁剪平面的Z負(fù)值,其左下角點(diǎn)和右上角點(diǎn)空間坐標(biāo)由函數(shù)根據(jù)透視投影原理自動(dòng)生成。near和far表示離視點(diǎn)的遠(yuǎn)近,它們總為正值。另一個(gè)函數(shù)是: void gluPerspective(GLdouble fovy,GLdouble aspect,GLdouble zNear, GLdouble zFar);它也創(chuàng)建一個(gè)透視投影的有限觀察空間,但它的參數(shù)定
11、義于前面的不同,如圖7-39所示,參數(shù)fovy定義視野在X-Z平面(垂直方向上的可見區(qū)域)的角度,范圍是0.0, 180.0;參數(shù)aspect是投影平面的縱橫比(寬度與高度的比值);參數(shù)zNear和Far分別是遠(yuǎn)近裁剪面沿Z負(fù)軸到視點(diǎn)的距離,它們總為正值。圖7.1 透視投影的觀察空間8. 視口變換和三維屏幕坐標(biāo)系視口變換類似于照片沖洗過(guò)程中的照片裁剪。在計(jì)算機(jī)圖形學(xué)中,視口是繪制圖像的句型區(qū)域。視口以窗口坐標(biāo)來(lái)定義,它表示圖像相對(duì)于窗口左下角的位置。進(jìn)行視口變換時(shí),所有頂點(diǎn)都已經(jīng)經(jīng)過(guò)幾何變換,并且位于取景器之外的圖像已經(jīng)被剪切掉了。8.1 定義視口 打開一個(gè)窗口時(shí),系統(tǒng)自動(dòng)地將視口設(shè)置為整個(gè)窗
12、口的大小。在OpenGL中可以用glViewport()函數(shù)來(lái)設(shè)置一個(gè)較小的繪圖區(qū)域,該函數(shù)的原型如下:void glViewport(GLint x,GLint y,GLsizei width,GLsizei height);該函數(shù)的功能是設(shè)置窗口。x,y指定一個(gè)視口像素矩形的左下角,其初始值是(0,0)。width,height指定一個(gè)視口的寬度和高度。當(dāng)一個(gè)OpenGL環(huán)境被第一次連接到一個(gè)窗口時(shí),參數(shù)width和height按此窗口的大小設(shè)置。該函數(shù)為x和y指定了一種由標(biāo)準(zhǔn)化的設(shè)備坐標(biāo)到窗口坐標(biāo)的映射幾何轉(zhuǎn)化。設(shè)(xnd,ynd)是標(biāo)準(zhǔn)化的設(shè)備坐標(biāo),則窗口坐標(biāo)(xw,yw)可由下式求得
13、:視口的寬度和高度被默認(rèn)為地截?cái)嗟揭欢ǖ姆秶?,具體范圍值由所處環(huán)境決定。可調(diào)用函數(shù)glGet(GL_MAX_VIEWPORT_DIMS)查詢這一范圍值。視口的高寬比一般與投影取景器的高寬比相同,否則會(huì)造成圖像的變形。在程序的運(yùn)行過(guò)程中,可能會(huì)改變窗口的大小,因此程序應(yīng)該始終檢測(cè)到這種變化,并作相應(yīng)的處理。8.2 變換z坐標(biāo) 在視口變換中,z坐標(biāo)或深度坐標(biāo)被編碼并被存儲(chǔ)起來(lái)。在OpenGL中可以使用glDepthRange()函數(shù)縮放z坐標(biāo)的值,使它處于所要求的范圍內(nèi)。該函數(shù)的原型為:void glDepthRange(GLclamped zNear,GLclamped zFar);該函數(shù)的功能是指定一種從歸一化深度坐標(biāo)到窗口深度坐標(biāo)的映射方法。zNear指定從最近的剪切平面到窗口坐標(biāo)的映射,其缺省值為0.zFar指定從最遠(yuǎn)的剪切平面到窗口坐標(biāo)的映射,其缺省值為1。深度坐標(biāo)在剪切和除以w后,其范圍將變?yōu)?1,1。其中-1和1分別與最近和最遠(yuǎn)的剪切平面相對(duì)應(yīng)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 鄉(xiāng)村合作社與農(nóng)戶聯(lián)合開發(fā)農(nóng)業(yè)技術(shù)項(xiàng)目協(xié)議
- 通信技術(shù)與信號(hào)處理練習(xí)題
- 技術(shù)標(biāo)準(zhǔn)制定合作協(xié)議
- 數(shù)學(xué)課本九章算術(shù)教案
- 教育資源分布報(bào)告表
- 西廂記的愛(ài)情悲劇征文
- 中學(xué)生國(guó)學(xué)經(jīng)典故事解讀
- 農(nóng)業(yè)旅游開發(fā)實(shí)施方案
- 數(shù)據(jù)安全與隱私保護(hù)服務(wù)協(xié)議約定事項(xiàng)
- 業(yè)務(wù)往來(lái)預(yù)付款協(xié)議書
- 法律服務(wù)方案(投標(biāo))
- 轉(zhuǎn)移的危險(xiǎn)廢物性狀清單
- 高中英語(yǔ)-新外研版必修一unit5-The-Monarchs-Journey-公開課reading課件
- 建設(shè)項(xiàng)目用地預(yù)審與選址意見課件講解
- 四年級(jí)公共安全教育全冊(cè)教案(海峽教育出版社)
- 工程結(jié)構(gòu)通用規(guī)范
- 《構(gòu)成基礎(chǔ)》PPT課件(190頁(yè)P(yáng)PT)
- 四年級(jí)道德與法治從中國(guó)制造到中國(guó)創(chuàng)造
- HONEYWELLDCS操作手冊(cè)
- 2021-2022新教科版四年級(jí)科學(xué)下冊(cè)全一冊(cè)全部課件(共24課)
- 3 棄渣場(chǎng)施工方案
評(píng)論
0/150
提交評(píng)論