第三講 圖型變換與裁減4_第1頁(yè)
第三講 圖型變換與裁減4_第2頁(yè)
第三講 圖型變換與裁減4_第3頁(yè)
第三講 圖型變換與裁減4_第4頁(yè)
第三講 圖型變換與裁減4_第5頁(yè)
已閱讀5頁(yè),還剩52頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、1,第三講 圖形變換與裁剪4 -三維觀察變換,觀察坐標(biāo)系 觀察空間 三維觀察流程 三維裁剪,觀察坐標(biāo)系,3,觀察窗口位于觀察平面的任意位置,由(xWmin,yWmin)和(xWmax,yWmax)定義,其邊平行于xv和yv,其中cw為窗口中心。,觀察窗口,圖1 觀察窗口,4,觀察空間 將觀察窗口沿投影方向zv作平移運(yùn)動(dòng)產(chǎn)生的三維形體。觀察空間的大小和形狀依賴于窗口的大小及投影類型。 平行投影觀察空間是平行于投影方向并過(guò)窗口邊的直線形成一個(gè)長(zhǎng)度無(wú)限的四棱柱。 透視投影觀察空間是從投影中心向窗口的邊發(fā)出射線,形成四錐體。,觀察空間,5,無(wú)限觀察空間、有限觀察空間(又稱裁剪空間) 前后截面 人只能看

2、到有限范圍內(nèi)的景物,為此,設(shè)定二個(gè)裁剪面:前截面(Z=Zfront)、后截面(Z=Zback)都平行于觀察平面。,有限觀察空間,圖2 正投影的觀察空間(投影方向垂直觀察平面):平行六面體,(a) 無(wú)限觀察空間,(b) 有限觀察空間,6,有限觀察空間,z,v,y,v,x,v,圖3 斜投影的觀察空間:斜平行六面體,(a) 無(wú)限觀察空間,(b) 有限觀察空間,投影,方向,觀察,窗口,7,有限觀察空間,8,觀察平面和前后截面的有關(guān)位置取決于要生成的窗口類型及特殊圖形包的限制。 觀察平面除了不包含投影中心以外可以放在Zv軸的任何地方(如圖),且投影中心不介入前后截面。,有限觀察空間,后截面,觀察平面,前

3、截面,z,v,觀察平面,后截面,前截面,z,v,后截面,觀察平面,前截面,z,v,圖5 觀察平面及前后截面的位置安排,(a),(b),(c),斜投影和透視投影可以受到觀察窗口、投影中心的影響。在斜投影中,令斜投影方向平行于參考點(diǎn)與窗口中心的連線,若參考點(diǎn)不動(dòng)而移動(dòng)觀察窗口改變會(huì)改變觀察空間兩側(cè)的傾側(cè)度(如圖a) 。,在透視投影中,如果投影中心接近觀察窗口,其觀察范圍會(huì)加大(如圖b)。 另外,在透視投影中,當(dāng)三維形體放在投影中心與觀察窗口之間,則放大;當(dāng)觀察窗口放在三維形體和投影中心之間,則縮小(如圖c) ;,(c)透視投影,如果透視投影以斜四棱臺(tái)、平行投影以斜四棱柱作為投影空間,則面方程表示不

4、規(guī)范,求交、裁剪處理效率會(huì)很低。 需要規(guī)格化觀察空間: 平行投影視見(jiàn)體的規(guī)范化斜四棱柱轉(zhuǎn)為正四棱柱 透視投影視見(jiàn)體的規(guī)范化斜四棱臺(tái)轉(zhuǎn)為正四棱臺(tái),規(guī)格化觀察空間,12,平行投影的規(guī)范化觀察空間6個(gè)面的定義:,規(guī)格化觀察空間,13,透視投影的規(guī)范化觀察空間6個(gè)面定義:,規(guī)格化觀察空間,左右面,上下面,前后面,規(guī)格化觀察空間可以進(jìn)一步將透視投影的裁剪空間變換為平行投影的裁剪空間,使平行投影的裁剪空間和透視投影的裁剪空間這二種投影的處理統(tǒng)一化。 透視投影的投影中心被移到無(wú)窮遠(yuǎn)處,則透視投影變成平行投影。 透視投影規(guī)格化裁剪空間轉(zhuǎn)換為規(guī)格化平行投影空間步驟: 放大前裁剪面,則投影中心由(0,0,0)變?yōu)?/p>

5、無(wú)窮遠(yuǎn)處,四棱臺(tái)變?yōu)樗睦庵?將前裁剪面移至z=0處,后裁剪面不變。,規(guī)格化觀察空間,圖6 三維觀察流程,三維觀察流程,觀察坐標(biāo) (VC),分析:,平行投影的規(guī)范化投影變換,正投影有限觀察空間,斜投影有限觀察空間,平行投影的規(guī)范化觀察空間,17,觀察窗口 左下角點(diǎn)(xwmin,ywmin,ZVP) 右上角點(diǎn)( xwmax,ywmax,ZVP) 參考點(diǎn)(xprp,yprp,zprp) 前后截面 Z=Zfront,Z=Zback 觀察平面 Z=Zvp 投影方向?yàn)閺膮⒖键c(diǎn)到觀察窗口中心點(diǎn)的坐標(biāo)矢量。,平行投影的規(guī)范化投影變換,平行投影的規(guī)范化投影變換可由以下三步組成。 (1)Tv1:將參考點(diǎn)(xpr

6、p,yprp,zprp)平移到觀察坐標(biāo)系原點(diǎn);窗口坐標(biāo)為:(xWmin-xprp,yWmin-yprp,zvp-zprp); (xWmax-xprp,yWmax-yprp,zvp-zprp)。,18,平行投影的規(guī)范化投影變換,19,(2)Tv2對(duì)坐標(biāo)系進(jìn)行錯(cuò)切變換,使參考點(diǎn)和窗口中心的連線錯(cuò)切到zv軸; 平移變換后,窗口中心點(diǎn)的坐標(biāo):,平行投影的規(guī)范化投影變換,錯(cuò)切變換Tv2= 1 0 0 0 0 1 0 0 -xcw/zcw ycw/zcw 1 0 0 0 0 1 對(duì)于正投影,xcw=ycw=0,則錯(cuò)切變換為單位矩陣。,22,(3) 進(jìn)行坐標(biāo)的歸一化變換,即比例變換,使得后截面變?yōu)閦v=1的

7、平面,前截面變?yōu)閦v=0的平面。,平行投影的規(guī)范化投影變換,a)Tv3:平移變換,將前截面平移到xvoyv平面上。,b) Tv4:比例變換,使得后截面變?yōu)閦v=1的平面。,25,分析:透視投影的規(guī)范化投影變換分兩步進(jìn)行 (1)變換為透視投影的規(guī)范化觀察空間,透視投影的規(guī)范化投影變換,(2)變換為平行投影的規(guī)范化觀察空間,27,觀察窗口:左下角點(diǎn)(xwmin,ywmin,Zvp) 右上角點(diǎn)( xwmax,ywmax,Zvp) 參考點(diǎn):(xprp,yprp,zprp) 前后截面:Z=Zfront,Z=Zback 觀察平面:Z=Zvp,透視投影的規(guī)范化投影變換,(1)Tv1:將投影中心平移到觀察坐標(biāo)

8、系原點(diǎn),窗口坐標(biāo)為:(xWmin-xprp,yWmin-yprp,Zvp-zprp),(xWmax-xprp,yWmax-yprp,Zvp-zprp)。 窗口中心點(diǎn)的坐標(biāo):,(2)Tv2:對(duì)坐標(biāo)系進(jìn)行錯(cuò)切變換,使窗口中心為(0,0,zcw)。 錯(cuò)切變換: 1 0 0 0 0 1 0 0 -xcw/zcw ycw/zcw 1 0 0 0 0 1,30,(3) Tv3:比例變換。,透視投影的規(guī)范化投影變換,32,(4) 將圖(a)所示的透視投影的規(guī)范化觀察空間變換為圖(b)的平行投影的規(guī)范化觀察空間。,透視投影的規(guī)范化投影變換,考慮經(jīng)Tv1Tv2Tv3的變換,前截面到原點(diǎn)的距離zf為: zf=(z

9、front-zprp)/(zback-zprp) 透視投影的規(guī)范化觀察空間6個(gè)面的定義: 前截面角點(diǎn)坐標(biāo)為: (zf,zf,zf),設(shè)變換矩陣為: 1 0 0 0 0 1 0 0 0 0 i r 0 0 n s 前截面的角坐標(biāo)(zf,zf,-zf)經(jīng)M變換為(1,1,0) 1 1 0 1 zf zf zf 1 1 0 0 0 -1 1 0 1 = -zf zf zf 1 0 1 0 0 1 -1 0 0 zf zf zf 1 0 0 i r -1 -1 0 1 -zf zf zf 1 0 0 n s,Tv4=,同理,后截面的角坐標(biāo)(1,1, 1)經(jīng)M變換仍為(1,1,1) 1 1 1 1 1

10、1 1 1 1 0 0 0 -1 1 1 1 = -1 1 1 1 0 1 0 0 1 -1 1 1 1 -1 1 1 0 0 i r -1 -1 1 1 -1 -1 1 1 0 0 n s 由此得:i=1/(1-zf)、r=1、n=zf/(1-zf)、s=0 Tv4= 1 0 0 0 0 1 0 0 0 0 1/(1-zf)1 0 0 zf/(1-zf) 0 其中:zf=-(zFront-zprp)/(zBack-zprp) 三維物體A經(jīng)Tv4變換,在x,y方向產(chǎn)生了反比于z坐標(biāo)的不等比的比例變換(x/z,y/z),即z小,x,y方向放大;反之縮小。,將Tv4與透視投影視見(jiàn)體的規(guī)范化矩陣合并

11、,得新的變換: T= Tv1Tv2Tv3Tv4,37,三維裁剪保留所有在觀察空間內(nèi)的圖形以便在輸出設(shè)備中顯示,所有在觀察空間外的圖形被丟棄。 三維直線段的裁剪 多邊形面的裁剪,三維裁剪,38,四維齊次坐標(biāo)表示的圖形裁剪的二種方案: 將齊次坐標(biāo)轉(zhuǎn)換為三維坐標(biāo),在三維空間中關(guān)于規(guī)范化觀察空間剪裁; 直接在齊次坐標(biāo)空間中進(jìn)行裁剪。,三維裁剪,規(guī)范化觀察空間的6個(gè)面: xv=1(右), xv=-1(左) yv=1(上), yv=-1(下) zv=0(近), zv=1(遠(yuǎn)) 6個(gè)面將空間分成27個(gè)區(qū)域,對(duì)每個(gè)區(qū)域賦予一個(gè)6位區(qū)域碼:,關(guān)于規(guī)范化觀察空間的裁剪,If x1 then C0=1 else C

12、0=0; If x1 then C2=1 else C2=0; If y1 then C5=1 else C5=0; 例如:101000區(qū)域碼識(shí)別在視見(jiàn)體下面及后面的點(diǎn);000000區(qū)域碼識(shí)別在視見(jiàn)體內(nèi)的點(diǎn)。,關(guān)于規(guī)范化觀察空間的裁剪,Cohen-Southerland應(yīng)用于三維裁剪 若線段二端點(diǎn)的區(qū)域碼都為0,則該線段完全在規(guī)范化觀察空間內(nèi); 若線段二端點(diǎn)的區(qū)域碼按位邏輯與為非0,則該線段完全在觀察空間外,完全為不可見(jiàn); 若線段二端點(diǎn)的區(qū)域碼按位邏輯與為0,則該線段與觀察空間某面相交,求交點(diǎn),將線段一分為二,去掉外側(cè)的一段,對(duì)另一段重新編碼,并重復(fù)上述過(guò)程,直到裁剪結(jié)束。,關(guān)于規(guī)范化觀察空間

13、的裁剪,線段與視見(jiàn)體某面相交點(diǎn) 對(duì)于端點(diǎn)為p1(x1,y1,z1)和p2(x2,y2,z2)的線段,其參數(shù)方程: x=x1+(x2-x1)u y=y1+(y2-y1)u其中u:01 z=z1+(z2-z1)u 將坐標(biāo)為常數(shù)的平面(x=-1,x=1,y=-1,y=1,z=0,z=1)的坐標(biāo)值代入上述參數(shù)方程求得u。 例如:z=0,則:u= -z1/(z2-z1) 若u不在01的范圍內(nèi),則該線段與前平面均不相交; 若u在01的范圍內(nèi),則: x=x1+(x2-x1)*(-z1/z2-z1) y=y1+(y2-y1)*(-z1/(z2-z1),關(guān)于規(guī)范化觀察空間的裁剪,圖6 三維觀察流程,三維觀察流程

14、,觀察坐標(biāo) (VC),44,變換種類 模型視圖矩陣 矩陣操作 矩陣堆棧 投影變換 高級(jí)矩陣操作,OpenGL中的變換,45,視圖變換:指定觀察者或攝影機(jī)的位置; 模型變換:在場(chǎng)景中移動(dòng)對(duì)象; 模型視圖變換:描述視圖變換與模型變換的對(duì)偶性; 投影變換:對(duì)視見(jiàn)空間進(jìn)行修剪和改變大?。?視見(jiàn)區(qū)變換:對(duì)窗口的最終輸出進(jìn)行縮放;,變換種類,46,平移 void glTranslated(f)(GLdouble x,GLdouble y,GLdouble z); 旋轉(zhuǎn) void glRotated(f)(GLdouble angle,GLdouble x,GLdouble y,GLdouble z );

15、比例 void glScaled(f)(GLdouble x,GLdouble y,GLdouble z);,模型視圖矩陣,47,視圖變換函數(shù)(定義觀察坐標(biāo)系) void gluLookAt(GLdouble eyex,GLdouble eyey,GLdouble eyez,GLdouble centerx,GLdouble centery,GLdouble centerz,GLdouble upx,GLdouble upy,GLdouble upz);,模型視圖矩陣,48,矩陣操作,glMatrixMode(GLenum mode); 參數(shù)mode用于確定將哪個(gè)矩陣堆棧用于矩陣操作。 GL_

16、MODELVIEW:模型視圖矩陣堆棧 GL_PROJECTION:投影矩陣堆棧 GL_TEXTURE:紋理矩陣堆棧,49,矩陣操作單位矩陣,glTranslatef(10.0f, 0.0f, 0.0f); glutSolidSphere(1.0f, 15, 15); glTranslatef(0.0f, 10.0f, 0.0f); glutSolidSphere(1.0f , 15, 15);,glMatrixMode(GL_MODELVIEW); glLoadIdentity();,50,矩陣堆棧,OpenGL為模型視圖矩陣和投影矩陣各維護(hù)著一個(gè)“矩陣堆?!?,可以把當(dāng)前矩陣壓到堆棧中保存它,

17、然后對(duì)當(dāng)前矩陣進(jìn)行修改。把矩陣彈出堆棧即可恢復(fù)。使用的函數(shù)如下: void glPushMatrix(void); void glPopMatrix(void);,51,投影變換,OpenGL中只提供了兩種投影方式,一種是平行投影(正射投影),另一種是透視投影。在投影變換之前必須指定當(dāng)前處理的是投影變換矩陣: glMAtrixMode(GL_PROJECTION);glLoadIdentity();,52,投影變換,OpenGL中只提供了兩種投影方式,一種是平行投影(正射投影),另一種是透視投影。在投影變換之前必須指定當(dāng)前處理的是投影變換矩陣: glMAtrixMode(GL_PROJECTI

18、ON);glLoadIdentity();,53,投影變換,平行投影:視景體是一個(gè)矩形的平行管道,也就是一個(gè)長(zhǎng)方體,其特點(diǎn)是無(wú)論物體距離相機(jī)多遠(yuǎn),投影后的物體大小尺寸不變。 void glOrtho (GLdouble left,GLdouble right,GLdouble bottom,GLdouble top,GLdouble near,GLdouble far);,54,投影變換,void gluOrtho2D (GLdouble left,GLdouble right,GLdouble bottom,GLdouble top); 一個(gè)特殊的正射投影函數(shù),主要用于二維圖像到二維屏幕上的投影

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論