版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、會(huì)計(jì)學(xué)1教育學(xué)消隱教育學(xué)消隱2第1頁/共60頁3第2頁/共60頁4失去遮擋關(guān)系失去遮擋關(guān)系長方體線框投影圖的二義性長方體線框投影圖的二義性第3頁/共60頁5線框圖線框圖 消隱圖消隱圖 真實(shí)感圖形真實(shí)感圖形第4頁/共60頁6長方體線框投影圖的二義性長方體線框投影圖的二義性失去遮擋關(guān)系失去遮擋關(guān)系第5頁/共60頁7圖像空間圖像空間image-space第6頁/共60頁8for (for (場景中的每一個(gè)物體場景中的每一個(gè)物體) ) 將其與場景中的其它物體比較,確定其表面的可見部分;將其與場景中的其它物體比較,確定其表面的可見部分; 顯示該物體表面的可見部分;顯示該物體表面的可見部分; 場景空間場景
2、空間object-space第7頁/共60頁9第8頁/共60頁10第9頁/共60頁11第10頁/共60頁12第11頁/共60頁13第12頁/共60頁14第13頁/共60頁15第14頁/共60頁16夾角為夾角為180u投影方向投影方向第15頁/共60頁17前向面前向面 后向面后向面JEAF、HCBG、JIHGF為為后向面后向面CGV VABDEFHIJN NVnVn第16頁/共60頁18第17頁/共60頁19第18頁/共60頁20第19頁/共60頁21第20頁/共60頁22l背景背景n畫家作畫:先畫遠(yuǎn)景后畫近景畫家作畫:先畫遠(yuǎn)景后畫近景n畫家的作畫順序暗示出所畫物體之間的相互遮擋關(guān)系畫家的作畫順
3、序暗示出所畫物體之間的相互遮擋關(guān)系第21頁/共60頁23n如何對(duì)場景中的物體按深度(遠(yuǎn)近)排序,建立深度優(yōu)先級(jí)表?第22頁/共60頁24在規(guī)范投影坐標(biāo)系里在規(guī)范投影坐標(biāo)系里 uvn 中,投影方向是中,投影方向是 n 軸的負(fù)方向,軸的負(fù)方向,因而因而 n 坐標(biāo)大者距觀察者更近。坐標(biāo)大者距觀察者更近。nmin(P)和和 nmax(P) 分別為分別為 P 各頂點(diǎn)各頂點(diǎn) n 坐標(biāo)的最小和最大值。坐標(biāo)的最小和最大值。投影為正平行投影投影為正平行投影第23頁/共60頁25第24頁/共60頁26第25頁/共60頁27第26頁/共60頁28第27頁/共60頁29Z 緩沖器中的單元與幀緩沖器中的單元一一對(duì)應(yīng)緩沖
4、器中的單元與幀緩沖器中的單元一一對(duì)應(yīng)第28頁/共60頁30第29頁/共60頁31第30頁/共60頁32l特點(diǎn)特點(diǎn)nZ 緩沖器算法是所有圖像空間算法中最簡單的一種隱藏面消除算法。緩沖器算法是所有圖像空間算法中最簡單的一種隱藏面消除算法。在像素級(jí)上以近物取代遠(yuǎn)物,與形體在屏幕上的出現(xiàn)順序無關(guān)。在像素級(jí)上以近物取代遠(yuǎn)物,與形體在屏幕上的出現(xiàn)順序無關(guān)。n優(yōu)點(diǎn)優(yōu)點(diǎn) 1 1)簡單穩(wěn)定,利于硬件實(shí)現(xiàn))簡單穩(wěn)定,利于硬件實(shí)現(xiàn) 2 2)不需要整個(gè)場景的幾何數(shù)據(jù))不需要整個(gè)場景的幾何數(shù)據(jù)n缺點(diǎn)缺點(diǎn) 1 1)需要一個(gè)額外的)需要一個(gè)額外的 Z 緩沖器緩沖器 2 2)每個(gè)多邊形占據(jù)的每個(gè)像素處都要計(jì)算深度值,)每個(gè)多
5、邊形占據(jù)的每個(gè)像素處都要計(jì)算深度值, 計(jì)算量大計(jì)算量大第31頁/共60頁33第32頁/共60頁34l由來由來nZ 緩沖器算法中所需要的緩沖器算法中所需要的 Z 緩沖器容量較大,為克服這個(gè)缺點(diǎn),可以將整個(gè)繪圖區(qū)域分割成若干個(gè)小區(qū)域,然后一個(gè)區(qū)域一個(gè)區(qū)域地顯示,這樣緩沖器容量較大,為克服這個(gè)缺點(diǎn),可以將整個(gè)繪圖區(qū)域分割成若干個(gè)小區(qū)域,然后一個(gè)區(qū)域一個(gè)區(qū)域地顯示,這樣 Z 緩沖器的單元數(shù)只要等于一個(gè)區(qū)域內(nèi)像素的個(gè)數(shù)緩沖器的單元數(shù)只要等于一個(gè)區(qū)域內(nèi)像素的個(gè)數(shù)n如果將小區(qū)域取成屏幕上的掃描線,就得到掃描線如果將小區(qū)域取成屏幕上的掃描線,就得到掃描線 Z 緩沖器算法緩沖器算法第33頁/共60頁35l算法思
6、想算法思想n在處理當(dāng)前掃描線時(shí),用一個(gè)一維數(shù)組作為當(dāng)前掃描線的在處理當(dāng)前掃描線時(shí),用一個(gè)一維數(shù)組作為當(dāng)前掃描線的Z-buffer。首先找出與當(dāng)前掃描線相關(guān)的多邊形,以及每個(gè)多邊形中相關(guān)的邊對(duì)。首先找出與當(dāng)前掃描線相關(guān)的多邊形,以及每個(gè)多邊形中相關(guān)的邊對(duì)。n對(duì)每一個(gè)邊對(duì)之間的小區(qū)間上的各像素,計(jì)算深度,并與對(duì)每一個(gè)邊對(duì)之間的小區(qū)間上的各像素,計(jì)算深度,并與Z-buffer中的值比較,找出各像素處可見平面。(中的值比較,找出各像素處可見平面。(采用增量算法計(jì)算深度采用增量算法計(jì)算深度)n寫幀緩存。寫幀緩存。第34頁/共60頁36for ( v= 0;vvmax;v+) for (u= 0; u Z
7、緩沖器的第緩沖器的第u單元的值單元的值) 置幀緩沖器的第置幀緩沖器的第(u,v)單元值為當(dāng)前多邊形顏色;單元值為當(dāng)前多邊形顏色; 置置Z緩沖器的第緩沖器的第u單元值為單元值為d; /處理下一條掃描線處理下一條掃描線第35頁/共60頁37第36頁/共60頁38第37頁/共60頁39第38頁/共60頁40第39頁/共60頁41第40頁/共60頁42第41頁/共60頁43第42頁/共60頁44第43頁/共60頁45第44頁/共60頁46第45頁/共60頁47第46頁/共60頁48第47頁/共60頁49#include #include GLfloat vertices 3 = -1.0,-1.0,-
8、1.0,1.0,-1.0,-1.0,1.0,1.0,-1.0, -1.0,1.0,-1.0, -1.0,-1.0,1.0,1.0,-1.0,1.0, 1.0,1.0,1.0, -1.0,1.0,1.0;static GLfloat theta = 0.0,0.0,0.0;static GLint axis = 2;static GLdouble viewer = 0.0, 0.0, 5.0; void polygon(int a, int b, int c , int d) glBegin(GL_POLYGON); glVertex3fv(verticesa); glVertex3fv(ver
9、ticesb); glVertex3fv(verticesc); glVertex3fv(verticesd); glEnd();第48頁/共60頁50void colorcube() /正前面正前面 glColor3f(1,1,1); polygon(4,5,6,7); /正背面正背面 glColor3f(1.0,0,0); polygon(0,3,2,1); glColor3f(0,1,0); polygon(2,3,7,6); glColor3f(0,0,1); polygon(0,4,7,3); glColor3f(1,1,0); polygon(1,2,6,5); glColor3f
10、(0,1,1); polygon(0,1,5,4);void display() glClear(GL_COLOR_BUFFER_BIT); glLoadIdentity(); /更新視點(diǎn)位置更新視點(diǎn)位置 gluLookAt(viewer0,viewer1,viewer2, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); glRotatef(theta0, 1.0, 0.0, 0.0); glRotatef(theta1, 0.0, 1.0, 0.0); /* 旋轉(zhuǎn)立方體旋轉(zhuǎn)立方體 */ glRotatef(theta2, 0.0, 0.0, 1.0); colorcube();
11、 glutSwapBuffers();第49頁/共60頁51void keys(unsigned char key, int x, int y)/* 用用 x, X, y, Y, z, and Z 鍵鍵 移動(dòng)視點(diǎn)移動(dòng)視點(diǎn) */ if(key = x) viewer0-= 1.0; if(key = X) viewer0+= 1.0; if(key = y) viewer1-= 1.0; if(key = Y) viewer1+= 1.0; if(key = z) viewer2-= 1.0; if(key = Z) viewer2+= 1.0; display();void myReshape
12、(int w, int h) glViewport(0, 0, w, h); glMatrixMode(GL_PROJECTION); glLoadIdentity(); if(w=h) glFrustum(-2.0, 2.0, -2.0 * (GLfloat) h/ (GLfloat) w, 2.0* (GLfloat) h / (GLfloat) w, 2.0, 20.0); else glFrustum(-2.0, 2.0, -2.0 * (GLfloat) w/ (GLfloat) h, 2.0* (GLfloat) w / (GLfloat) h, 2.0, 20.0); /* 或者
13、用或者用gluPerspective(45.0, w/h, 1.0, 10.0); */ glMatrixMode(GL_MODELVIEW);第50頁/共60頁52第51頁/共60頁53int main(int argc, char *argv) glutInit(&argc, argv); glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB); glutInitWindowSize(300, 300); glutCreateWindow(cube); glutDisplayFunc(display); glutReshapeFunc(myReshape);
14、 glutMouseFunc(mouse); glutKeyboardFunc(keys); glPolygonMode(GL_FRONT_AND_BACK,GL_LINE); glEnable(GL_CULL_FACE); glCullFace(GL_BACK); glutMainLoop();無剔除無剔除剔除剔除第52頁/共60頁54不激活)第53頁/共60頁55#include #include GLfloat vertices3 = -1.0,-1.0,-1.0,1.0,-1.0,-1.0,1.0,1.0,-1.0, -1.0,1.0,-1.0, -1.0,-1.0,1.0,1.0,-
15、1.0,1.0, 1.0,1.0,1.0, -1.0,1.0,1.0;static GLfloat theta = 0.0,0.0,0.0;static GLint axis = 2;static GLdouble viewer= 0.0, 0.0, 5.0; void polygon(int a, int b, int c , int d) glBegin(GL_POLYGON); glVertex3fv(verticesa); glVertex3fv(verticesb); glVertex3fv(verticesc); glVertex3fv(verticesd); glEnd();第5
16、4頁/共60頁56void colorcube() /正前面正前面 glColor3f(1,1,1); polygon(4,5,6,7); /正背面正背面 glColor3f(1.0,0,0); polygon(0,3,2,1); glColor3f(0,1,0); polygon(2,3,7,6); glColor3f(0,0,1); polygon(0,4,7,3); glColor3f(1,1,0); polygon(1,2,6,5); glColor3f(0,1,1); polygon(0,1,5,4);void display() glClear(GL_COLOR_BUFFER_BI
17、T | GL_DEPTH_BUFFER_BIT); glClearDepth(1); glLoadIdentity(); /更新視點(diǎn)位置更新視點(diǎn)位置 gluLookAt(viewer0,viewer1,viewer2, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); glRotatef(theta0, 1.0, 0.0, 0.0); glRotatef(theta1, 0.0, 1.0, 0.0); /* 旋轉(zhuǎn)立方體旋轉(zhuǎn)立方體 */ glRotatef(theta2, 0.0, 0.0, 1.0); colorcube(); glutSwapBuffers();第55頁/共60頁
18、57void keys(unsigned char key, int x, int y)/* 用用 x, X, y, Y, z, and Z 鍵鍵 移動(dòng)視點(diǎn)移動(dòng)視點(diǎn) */ if(key = x) viewer0-= 1.0; if(key = X) viewer0+= 1.0; if(key = y) viewer1-= 1.0; if(key = Y) viewer1+= 1.0; if(key = z) viewer2-= 1.0; if(key = Z) viewer2+= 1.0; display();void myReshape(int w, int h) glViewport(0, 0, w, h); glMatrixMode(GL_PROJECTION); glLoadIdentity(); if(w=h) glFrustum(-2.0, 2.0, -2.0 * (GLfloat
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 四年級(jí)數(shù)學(xué)(四則混合運(yùn)算)計(jì)算題專項(xiàng)練習(xí)與答案匯編
- 2025至2030年中國栗子醬數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025年天津工程職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測(cè)試近5年常考版參考題庫含答案解析
- 2025至2030年中國PLC聯(lián)控盤數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025年四川司法警官職業(yè)學(xué)院高職單招高職單招英語2016-2024歷年頻考點(diǎn)試題含答案解析
- 五年級(jí)數(shù)學(xué)(小數(shù)乘除法)計(jì)算題專項(xiàng)練習(xí)及答案
- 二零二五版房地產(chǎn)土地使用權(quán)抵押擔(dān)保合同3篇
- 城市規(guī)劃與城市歷史文化遺址保護(hù)與利用考核試卷
- 2025年中國圓形快餐盤市場調(diào)查研究報(bào)告
- 聲學(xué)器件的聲音控制與情景切換考核試卷
- 2024-2030年中國海泡石產(chǎn)業(yè)運(yùn)行形勢(shì)及投資規(guī)模研究報(bào)告
- 動(dòng)物醫(yī)學(xué)類專業(yè)生涯發(fā)展展示
- 2024年同等學(xué)力申碩英語考試真題
- 消除“艾梅乙”醫(yī)療歧視-從我做起
- 非遺文化走進(jìn)數(shù)字展廳+大數(shù)據(jù)與互聯(lián)網(wǎng)系創(chuàng)業(yè)計(jì)劃書
- 2024山西省文化旅游投資控股集團(tuán)有限公司招聘筆試參考題庫附帶答案詳解
- 科普知識(shí)進(jìn)社區(qū)活動(dòng)總結(jié)與反思
- 加油站廉潔培訓(xùn)課件
- 現(xiàn)金日記賬模板(帶公式)
- 消化內(nèi)科??票O(jiān)測(cè)指標(biāo)匯總分析
- 混凝土結(jié)構(gòu)工程施工質(zhì)量驗(yàn)收規(guī)范
評(píng)論
0/150
提交評(píng)論