第六章三維空間的觀察_第1頁(yè)
第六章三維空間的觀察_第2頁(yè)
第六章三維空間的觀察_第3頁(yè)
第六章三維空間的觀察_第4頁(yè)
第六章三維空間的觀察_第5頁(yè)
已閱讀5頁(yè),還剩45頁(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)介

第六章三維空間的觀察第六章三維空間的觀察主要討論投影的數(shù)學(xué)表示三維觀察中的投影視見體到規(guī)范視見體的變換用三維規(guī)范體裁剪在三維視見體內(nèi)裁剪三維物體投影變換至視口二維圖形圖6.1三維觀察的概念模型

6.1投影什么是投影變換(或投影變換的作用):

由于顯示器和繪圖機(jī)只能用二維空間來(lái)表示圖形,要顯示三維圖形就要把三維坐標(biāo)表示的幾何形體變換成二維坐標(biāo)表示的圖形,這就是圖形的投影變換。投影變換的要素視點(diǎn)(投影中心),投影平面投影線,投影投影變換的類型

透視投影:投影中心和投影面之間的距離是有限的

平行投影:投影中心和投影平面之間的距離是無(wú)限的根據(jù)投影方向與投影平面之間的關(guān)系,平行投影分為正投影與斜投影視點(diǎn)投影平面投影線

6.1.1透視投影圖6.3為的投影圖6.4在平面上的正投影在坐標(biāo)系中來(lái)討論投影,假定投影平面是。設(shè)視點(diǎn),空間中任一點(diǎn)在平面上的投影為

,如圖6.3所示,則下式成立:

(6.1)

平面上的正投影分別為透視投影的計(jì)算公式設(shè)在則式(6.1)的幾何意義如圖6.4所示。(6.2)

寫成齊次坐標(biāo)表達(dá)式為:(6.3)

(6.4)

由式(6.1)得:圖6.3為的投影圖6.4在平面上的正投影

6.1.2平行投影平行投影分為正投影與斜投影正投影:投影方向與投影平面法向相同。常見的正投影類型有:正視圖投影:俯視圖投影:側(cè)視圖投影:等軸測(cè)投影:投影平面的法向與每個(gè)坐標(biāo)軸的夾角相等;

斜投影,常見的斜投影類型有:斜等測(cè)投影:投影方向與投影平面成45度角;斜二測(cè)投影:投影方向和投影平面的夾角為arctan(2)。圖6.5三視圖正視圖側(cè)視圖原物體俯視圖(a)斜等測(cè)投影(b)斜二測(cè)投影圖6.6斜投影軸測(cè)投影axonometricprojection軸測(cè)投影是平行投影的一種,可以使三個(gè)坐標(biāo)面在一個(gè)投影上都能看到,從而具有立體感。定義:將物體連同其參考直角坐標(biāo)系,沿不平行于任一坐標(biāo)面的方向,用平行投影法將其投射在一個(gè)投影面上所得到的圖形。軸測(cè)投影通過(guò)軸測(cè)投影繪出的圖形,稱為“軸測(cè)圖”。軸測(cè)圖在工程技術(shù)及其他科學(xué)中常有應(yīng)用。在軸側(cè)圖中,物體上與任一坐標(biāo)軸平行的長(zhǎng)度均可按一定的比率來(lái)量度。三軸向的比率都相同時(shí)稱為“等測(cè)投影”,其中兩軸向比率相同時(shí)稱為“二測(cè)投影”,三軸向比率均不相同時(shí)稱為“三測(cè)投影”。軸測(cè)投影中投射線與投影面垂直的稱為“正軸測(cè)投影”,傾斜的稱為“斜軸測(cè)投影”。平行投影變換公式

設(shè)投影方向?yàn)?/p>

,空間點(diǎn)在投影平面上的投影為,由于是沿方向投影,所以下式成立:

(6.5)

所以(6.6)

式(6.6)是平行投影的計(jì)算公式,寫成齊次坐標(biāo)表達(dá)式為:(6.7)

投影中心在無(wú)窮遠(yuǎn)處′′平行投影

6.1.3任意坐標(biāo)系到觀察坐標(biāo)系中的變換滅點(diǎn):一組不平行于投影平面的平行線,經(jīng)過(guò)透視投影后相交于一點(diǎn),稱為滅點(diǎn)。主滅點(diǎn):如果這組平行線平行于坐標(biāo)軸,這時(shí)的滅點(diǎn)稱為主滅點(diǎn),至多存在三個(gè)主滅點(diǎn),分別對(duì)應(yīng)于投影平面切割的坐標(biāo)軸的數(shù)目。透視投影按主滅點(diǎn)的個(gè)數(shù)分為一點(diǎn)透視、二點(diǎn)透視和三點(diǎn)透視。圖6.7

一點(diǎn)透視圖6.9三點(diǎn)透視圖6.8兩點(diǎn)透視在坐標(biāo)系oxyz中來(lái)討論投影問(wèn)題。確定一個(gè)投影面:一個(gè)參考點(diǎn)

和投影平面的法線方向。還要指定的方向,為此要給定一個(gè)向量

,U在投影平面上的垂直投影所指的方向便是軸的方向。取過(guò)點(diǎn)沿N方向作的射線定為 軸觀察坐標(biāo)系的建立圖6.10投影平面的指定NyOxzU設(shè) 是點(diǎn)在坐標(biāo)系oxyz中的坐標(biāo),,和軸的單位方向向量為 、 和 ,那么從坐標(biāo)系oxyz到 的變換是坐標(biāo)變換公式(6.8)設(shè)、和軸的單位方向向量分別為i,j,k。軸和N方向一致,故有

軸和向量U×N方向一致,設(shè)其中x,y和z分別為ox,oy,oz軸的單位方向向量,則

軸的單位方向向量應(yīng)是和軸的單位向量的向量積,因此齊次坐標(biāo)形式在坐標(biāo)系oxyz中給定的投影方向和視點(diǎn)的坐標(biāo)都可用式(6.8)變換到坐標(biāo)系中的量和。式(6.8)寫成齊次坐標(biāo)表達(dá)式為

(6.9)其中

(6.8)坐標(biāo)系oxyz中任一點(diǎn)(x,y,z)在投影平面上的投影把式(6.9)代入式(6.3)得(6.10)

坐標(biāo)系oxyz中任一點(diǎn)(x,y,z),由(6.10)和(6.4)便可求得它在投影平面上的投影點(diǎn) 。

(6.4)平行投影時(shí),由式(6.7)和(6.9),得(6.11)

6.1.4射影變換做三維裁剪或消除隱藏線時(shí),可把一個(gè)對(duì)象的透視圖看成另一個(gè)對(duì)象的在同一投影平面上的正視圖,并要求兩個(gè)對(duì)象對(duì)應(yīng)點(diǎn)坐標(biāo)分量的排序一致。后一個(gè)對(duì)象可以通過(guò)前一個(gè)對(duì)象做下述射影變換得到,所以(6.12)(6.13)對(duì)于三維裁剪來(lái)說(shuō),希望變換不改變?nèi)S窗口前后平面=和=的位置,這時(shí)式(4.16)中的A和B應(yīng)取成代入投影平面透視投影平行投影圖6.12由透視投影變換到平行投影變換為單調(diào)遞增函數(shù)由上式求導(dǎo)得

為單調(diào)遞增函數(shù),只要

便是的單調(diào)遞增函數(shù),可保證兩個(gè)對(duì)象對(duì)應(yīng)點(diǎn)按坐標(biāo)分量的排序是一致的。

由得只要

射影變換的齊次坐標(biāo)表示

聯(lián)立式(6.2)和(6.12),則得到射影變換的齊次坐標(biāo)表示

平行投影時(shí),可直接取

(6.14)

式(6.6)和(6.14)就是在平行投影時(shí)所建立的一個(gè)仿射變換,變換的齊次坐標(biāo)表示為:

(6.2)

(6.12)(6.6)

世界坐標(biāo)至規(guī)范化坐標(biāo)空間的變換,就是要把世界坐標(biāo)系中的圖形變到規(guī)范化坐標(biāo)系中。這個(gè)變換把圖6.13中的平行六面體P1P2P3P4Q1Q2Q3Q4變成圖6.15中的單位立方體,把圖6.14中的棱臺(tái)P1P2P3P4Q1Q2Q3Q4變成圖6.16的棱臺(tái)。

6.2視見體到規(guī)范視見體的變換在規(guī)范化坐標(biāo)系中定義了兩種視見體:

平行投影的視域由下列方程定義對(duì)透視來(lái)說(shuō),視見體是下列六個(gè)方程代表的平面圍成的棱臺(tái)圖6.13

平行投影時(shí)定義的窗口P1P4P3P2Q2Q3Q4Q1A4A3A2A1圖6.14

透視時(shí)定義的窗口CP1P2P3P4Q1Q2Q3Q4A4A3A2A1xvzvyv111ov圖6.15

平行投影時(shí)的規(guī)范化空間yvxvzv圖6.16

透視時(shí)的規(guī)范化空間ov

6.2.1平行投影視見體的規(guī)范化設(shè)圖Pi和Qi在世界坐標(biāo)中的坐標(biāo)為 。第一步要把點(diǎn)P1移到坐標(biāo)原點(diǎn),這個(gè)變換的矩陣為經(jīng)變換TR后,平行六面體在和平面上的投影為圖6.17所示圖6.17平行六面體在兩個(gè)坐標(biāo)平面上的投影(a)bxby(b)第二、三、四步變換第三步是長(zhǎng)方體變?yōu)閱挝婚L(zhǎng)的立方體。這個(gè)變換矩陣為第二步對(duì)平行六面體做切變,使它成為一個(gè)長(zhǎng)方體。這個(gè)切變的矩陣為第四步為把z軸反向,變換矩陣為由坐標(biāo)系到規(guī)范化坐標(biāo)系的變換為(a)bxby(b)

6.2.2透視投影視見體的規(guī)范化變換后,棱臺(tái)在和平面上的投影如上圖所示。2)

把經(jīng)過(guò)變換后的棱臺(tái)變成正棱臺(tái),其變換為1)

把視點(diǎn)移至坐標(biāo)原點(diǎn),變換為3)進(jìn)行單位化,變換矩陣為4)

變換為把z軸反向,變換也是S2。

從坐標(biāo)變到坐標(biāo)的變換為4

6.3用三維規(guī)范體裁剪在規(guī)范化坐標(biāo)系中平行投影時(shí),視見體是由方程x=0,x=1,y=0,y=1,z=0和z=1代表的六個(gè)平面圍成的立方體。透視時(shí)的視見體是棱臺(tái),由方程x=z,x=–z,y=z,y=–z,z=zmin和z=1代表的六個(gè)平面圍成圖6.19兩種視見體

Sutherland–Cohen算法推廣到三維判斷顯然不可見的線段的編碼應(yīng)為六位,這六位的安排是點(diǎn)在視見體左面,第1位為1,x<0,(x<–z)點(diǎn)在視見體右面,第2位為1,x>1,(x>z)點(diǎn)在視見體下面,第3位為1,y<0,(y<–z)點(diǎn)在視見體上面,第4位為1,y>1,(y>z)點(diǎn)在視見體后面,第5位為1,z>1,(z>1)點(diǎn)在視見體前面,第6位為1,z<0,(z<zmin)括號(hào)中的條件適用于透視的情況。直線和視見體的邊界面的交點(diǎn)設(shè)線段的起點(diǎn)和終點(diǎn):P1(x1,y1,z1)和P2(x2,y2,z2),直線方程為

x=x1+(x2–x1)t,

y=y1+(y2–y1)t,z=z1+(z2–z1)t

和視見體的邊界面,例如y=1求交時(shí),把tL代入即可求得交點(diǎn)的坐標(biāo)。求P1P2和平面x=-z的交點(diǎn)時(shí),把直線方程代入x=-z中求得交點(diǎn)處的參數(shù)梁友棟–Barsky

算法推廣到三維當(dāng)視見體為立方體時(shí),其推廣是直接的。當(dāng)視見體為棱臺(tái)時(shí),設(shè)相應(yīng)平面與線段的參數(shù)值為

則:,,begint0:=0;t1:=1;

deltax:=x1–x0;

delatz:=z1–z0;

clipt(–deltax,–deltaz,x0+z0,t0,t1);

clipt(deltax,–deltaz,z0–x0,t0,t1);

deltay:=y1–y0;

clipt(–deltay,–deltaz,y0+z0,t0,t1);

clipt(deltay,–deltaz,z0–y0,t0,t1);

clipt(–deltaz,z0–zmin,t0,t1);

clipt(deltaz,1–z0,t0,t1);

x0:=x0+t0*deltax;y0:=y0+t0*deltay;z0:=z0+t0*deltaz;

x1:=x0+t1*deltax;y1:=y0+t1*deltay;z1:=z0+t1*deltaz;

showline(x0,y0,z0,x1,y1,z1);1:end

clip的主體部分程序窗口到視口(視區(qū))的變換窗口到視口(視區(qū))的變換是指把所定義的視見體中的內(nèi)容對(duì)應(yīng)到二維的屏幕之中。相當(dāng)于將相機(jī)拍攝的底片洗印到不同尺寸的相片上。通常視見體的寬高比和視口的寬高比應(yīng)該相同,這樣當(dāng)視見體中的圖形映射到視口時(shí)物體才不會(huì)發(fā)生變形。

6.4窗口到視口的變換視口(區(qū))是在屏幕或繪圖紙上指定的一個(gè)矩形,在坐標(biāo)系中的頂點(diǎn)的坐標(biāo)分別是(VL,VB)和

(VR,VT)。窗口由點(diǎn)(WL,WB)和(WR,WT)決定。窗口中的圖形應(yīng)該成比例地變到視口。窗口中的任一點(diǎn)

和視口中的對(duì)應(yīng)點(diǎn)(xv,yv)應(yīng)滿足下列關(guān)系是整理得圖6.20窗口至視口的變換wRwLwBwTvLvRvBvTxvOvyvywOwxw其中(6.15)6.4窗口到視口的變換齊次坐標(biāo)形式為

其中(6.16)在OpenGL中可以用如下函數(shù)定義視口:

voidglViewport(GLintx,GLinty,GLsizeiwidth,GLsizeiheight);其中:x、y為視口矩形的左下角(像素為單位)坐標(biāo);width、height分別為視口的寬和高。默認(rèn)情況下,初始視口的值為(0,0,winWidth,winHeight),其中winWidth、winHeight為窗口的寬和高。應(yīng)該使視口區(qū)的長(zhǎng)寬比與取景體的長(zhǎng)寬比相等,否則會(huì)使顯示的圖象變形

窗口、視口變換修改視口:glViewport()是OpenGL提供的修改視口的函數(shù)。將glViewport(0,0,width,height)改為glViewport(0,0,width/2,height/2),再執(zhí)行程序,可以看到圖形變小了一半。這是因?yàn)間lViewport()指定了一個(gè)更小的顯示區(qū)域(視口)。修改窗口(視見體):將gluOrtho2D(0,width,0,height)改為gluOrtho2D(0,2*width,0,2*height),再執(zhí)行程序,可以看到圖形同樣減小了一半。雖然視區(qū)未變,但由于窗口(視見體)變大了,圖形也就顯得小了。

投影平面上窗口的定義可以有兩種方法。一種是OpenGL中采用的用glFrustum(…)、glPerspective(…)和glOrtho(…)定義四棱臺(tái)或四棱柱的視見體,他們?cè)谕队捌矫嫔系耐队白匀恍纬闪舜翱?。這種方法雖然直觀,但難以保證所觀察的圖形在窗口內(nèi),另一種自動(dòng)定義窗口的方法。窗口的定義自動(dòng)定義窗口在對(duì)象的中心位置附近給定一點(diǎn)(xc,yc,zc)和一個(gè)常數(shù)r,要求以該點(diǎn)為球心,r為半徑的球能把對(duì)象包含在內(nèi)。定義立方體設(shè)點(diǎn)(xc,yc,zc)的投影為,令八個(gè)點(diǎn)投影到投影平面,設(shè)其投影點(diǎn)的坐標(biāo)分別為以 為左下角點(diǎn), 為右上角定義的窗口,常常不和預(yù)先由參數(shù)VL,VB,VR,VT定義的視口相似,須作調(diào)整,保證所觀察的圖形在窗口內(nèi),

6.5連續(xù)變換的處理(6.17)

其中T1是一個(gè)4×4的矩陣。設(shè)投影變換是(6.18)其中T2是3×4矩陣,窗口至視區(qū)的變換是設(shè)在世界坐標(biāo)系中的變換合并成一個(gè)矩陣T1,變換為(6.19)

其中T3是3×3矩陣。為了適合不同物理設(shè)備尺度的要求,在x和y方向還要分別乘以一常數(shù),可由3×3的變換矩陣T4來(lái)實(shí)現(xiàn),即把變換(6.17)式至(6.20)式合并起來(lái)得其中T=T4T3T2T1是一個(gè)3×4矩陣。(6.21)

(6.20)

屏幕坐標(biāo)的計(jì)算

在對(duì)圖形變換以前,先要算出T,輸出每一個(gè)圖形元素時(shí),只要作一次矩陣向量乘法(6.21)式,然后求得屏幕坐標(biāo)中點(diǎn)的坐標(biāo)如果不要作投影變換,例如顯示對(duì)象本身是二維的,或是平行投影,那么式(6.22)也可不作投影變換,這時(shí)可直接令(6.22)

(6.21)

提高效率的技術(shù)圖6.21圖形的顯示流程對(duì)窗口剪裁窗口至視口的變換顯示或繪圖世界坐標(biāo)系的三維變換投影從圖6.21來(lái)看,在投影變換之后,窗口到視區(qū)變換之前還要對(duì)窗口作裁剪,裁剪工作無(wú)法用矩陣來(lái)表示,不能把裁剪工作合并到T中去。為減少工作量,可把幾個(gè)矩陣合并起來(lái)GKS–3D圖形顯示流程提高效率的技術(shù)對(duì)三維窗口,窗口在深度方面有兩個(gè)平行于投影面的平面作為裁剪的邊界,這時(shí)可把深度裁剪放在最前面做,最后作二維裁剪。簡(jiǎn)單的圖形處理流程

T=T4T3T2T1

6.6.1OpenGL中的圖形變換模型變換構(gòu)造一個(gè)復(fù)雜的場(chǎng)景需要許多物體,這些物體都定義于其模型坐標(biāo)系中,由于模型坐標(biāo)系是依物體而建立的,物體在其中的表示相對(duì)簡(jiǎn)單。一個(gè)物體或者獨(dú)立地出現(xiàn)在世界坐標(biāo)系中,或者是更復(fù)雜物體的組成部分,無(wú)論哪種情況,都需要一個(gè)幾何變換將其變換到新的坐標(biāo)系中,這個(gè)變換稱模型變換。

if(c_mode==1)glTranslatef(2,0,-2);//平移

if(c_mode==2)glScalef(0.5,0.6,1.2);//放縮

if(c_mode==3)glRotatef(30,0,1,0);//旋轉(zhuǎn)觀察變換在實(shí)際生活中,為了在不同的距離和角度上拍攝物體,我們可以移動(dòng)物體,進(jìn)行模型變換,也可以保持物體不動(dòng)而移動(dòng)照相機(jī),這個(gè)變換就稱為觀察變換。

gluLookAt(0,0,12,0,0,0,0,1,0);//設(shè)定觀察點(diǎn)的位置

gluLookAt它共接受三組坐標(biāo),

分別為eye,center,up

eye表示我們眼睛在“世界坐標(biāo)系”中的位置,

center表示眼睛“看”的那個(gè)物體中心點(diǎn)的坐標(biāo),

up表示觀察者本身的方向,如果將觀察點(diǎn)比喻成我們的眼睛,那么這個(gè)up則表示我們是正立還是倒立異或某一個(gè)角度在看,所看的影像大不相同,故此時(shí)需要指明我們現(xiàn)在正立,那么X,Z軸為0,Y軸為正即可,通常將其設(shè)置為1,只要表示一個(gè)向上的向量(方向)即可

OpenGL中的圖形變換投影變換投影變換定義了一個(gè)視見體,即限定場(chǎng)景在屏幕上顯示的范圍。

glFrustum(-0.5,1,-0.5,1,1,20);//定義透視投影矩陣

glOrtho(-7,7,-7,7,2,12);//定義正交投影矩陣視口變換視口變換是指把所定義的視見體中的內(nèi)容對(duì)應(yīng)到二維的屏幕之中。相當(dāng)于將相機(jī)拍攝的照片洗印到不同尺寸的相片上。 通常視見體的寬高比和視口的寬高比應(yīng)該相同,這樣當(dāng)視見體中的圖形映射到視口時(shí)物體才不會(huì)發(fā)生變形。

glViewport(0,0,cx,cy);//定義視口大小,cy為窗口的高度

6.6.2OpenGL中的圖形變換應(yīng)用舉例例1

以一立方體為例,投影模式采用透視,視點(diǎn)固定,對(duì)其作平移、放縮和旋轉(zhuǎn)等模型變換,結(jié)果如圖6.22~6.26所示。

圖6.22原點(diǎn)在初始位置(1,1,1)圖6.23平移圖6.24放縮圖6.25繞y軸旋轉(zhuǎn)圖6.26變換代替平移程序主要代碼如下voidCExam2View::OnDraw(CDC*pDC){CExam2Doc*pDoc=GetDocument();

ASSERT_VALID(pDoc); //TODO:adddrawcodefornativedatahere glClearColor(1,1,1,1);//用白色清屏

glClear(GL_COLOR_BUFFER_BIT);

glLoadIdentity();//變換矩陣初始化

gluLookAt(0,0,12,0,0,0,0,1,0);//設(shè)視點(diǎn),(0,0,0)為參考點(diǎn)坐標(biāo),

//gluLookAt(-2,0,14,-2,0,0,0,1,0);//觀察變換替代平移變換的視點(diǎn)

draw_coord();

glPushMatrix();//把當(dāng)前變換矩陣壓入堆棧

glTranslatef(1,1,1);//模型坐標(biāo)系原點(diǎn)變換到世界坐標(biāo)系的(1,1,1)位置

//在模型坐標(biāo)系中做變換

if(c_mode==1)glTranslatef(2,0,-2);//平移

if(c_mode==2)glScalef(0.5,0.6,1.2);//縮放

if(c_mode==3)glRotatef(30,0,1,0);//旋轉(zhuǎn)

//下面這一函數(shù)可以得到當(dāng)前的模型變換矩陣

//glGetDoublev(GL_MODELVIEW_MATRIX,array);

draw_cuboid(4,4,4);

glPopMatrix();//從堆棧中恢復(fù)變換前的變換矩陣}voidCExam2View::OnSize(UINTnType,int

cx,intcy)//窗口變化時(shí)執(zhí)行該程序{CView::OnSize(nType,cx,cy);//窗口大小改變時(shí)的事件處理程序

//TODO:Addyourmessagehandlercodehere

glMatrixMode(GL_PROJECTION);//選擇當(dāng)前矩陣為投影矩陣

glLoadIdentity();

glFrustum(-0.5,1,-0.5,1,1,20);//定義窗口

glMatrixMode(GL_MODELVIEW);//選擇當(dāng)前矩陣為模型變換

glShadeModel(GL_FLAT);//設(shè)置明暗效果,GL-FLAT,一個(gè)面片的顏色一致,//GL-SMOOTH,面片的顏色由插值產(chǎn)生

glViewport(0,0,cx,cy);//定義視口}繪制立方體voidCExam2View::draw_cuboid(GLdoublea,GLdoubleb,GLdoublec)//繪制立方體{glColor3f(0,0,0);

glBegin(GL_LINE_LOOP);//后面

glVertex3f(0,0,0);glVertex3f(a,0,0);glVertex3f(a,b,0);glVertex3f(0,b,0);

glEnd();glBegin(GL_LINE_LOOP);//前面

glVertex3f(0,0,c);glVertex3f(a,0,c);glVertex3f(a,b,c);glVertex3f(0,b,c);glEnd();

glBegin(GL_LINES);//點(diǎn)按照線段連接

glVertex3f(0,0,0); glVertex3f(0,0,c); glVertex3f(a,0,0); glVertex3f(a,0,c); glVertex3f(a,b,0); glVertex3f(a,b,c); glVertex3f(0,b,0);glVertex3f(0,b,c);

glEnd();}繪制坐標(biāo)系voidCExam2View::draw_coord()//繪制坐標(biāo)系{ glColor3f(1,0,0);

glEnable(GL_LINE_STIPPLE);//線型設(shè)置

glLineStipple(1,0xF0F0);//虛線

glBegin(GL_LINES); glVertex3f(0,0,0); glVertex3f(7,0,0); glVertex3f(0,0,0); glVertex3f(0,7,0); glVertex3f(0,0,0); glVertex3f(0,0,7);

glEnd();

glDisable(GL_LINE_STIPPLE);}voidCExam2View::OnRotate(){ //TODO:Addyourcommandhandlercodehere c_mode=3; Invalidate();//激活OnDraw}voidCExam2View::OnTranslate(){//TODO:Addyourcommandhandlercodehere c_mode=1; Invalidate();}voidCExam2View::OnScale()

{//TODO:Addyourcommandhandlercodehere c_mode=2; Invalidate();}voidCExam2View::OnInicube(){//TODO:Addyourcommandhandlercodehere c_mode=0; Invalidate();}如果保持物體不動(dòng),移動(dòng)視點(diǎn)可以得到同樣的視覺效果。例如,對(duì)于平移變換glTranslatef(2,0,-2)的效果圖6.23,也可以通過(guò)觀察變換來(lái)實(shí)現(xiàn),只需把gluLookAt(0,0,12,0,0,0,0,1,0)改為gluLookAt(-2,0,14,-2,0,0,0,1,0)即可,結(jié)果如圖6.26所示。我們可以用函數(shù)glGetDoublev(GL_MODELVIEW_MATRIX,array)得到當(dā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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論