計算機圖形學第五次試驗報告_第1頁
計算機圖形學第五次試驗報告_第2頁
計算機圖形學第五次試驗報告_第3頁
計算機圖形學第五次試驗報告_第4頁
計算機圖形學第五次試驗報告_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、計算機圖形學實驗報告實驗H一真實感圖形一、實驗教學目標與基本要求初步實現(xiàn)真實感圖形,并實踐圖形的造型與變換等。二、理論基礎運用幾何造型,幾何、投影及透視變換、真實感圖形效果(消隱、紋理、光 照等)有關知識實現(xiàn)。.用給定地形高程數(shù)據(jù)繪制出地形圖;.繪制一(套)房間,參數(shù)自定。三.算法設計與分析真實感圖形繪制過程中,由于投影變換失去了深度信息,往往導致圖形的二 義性。要消除這類二義性,就必須在繪制時消除被遮擋的不可見的線或面, 習慣 上稱之為消除隱藏線和隱藏面,或簡稱為消隱,經過消隱得到的投影圖稱為物體 的真實圖形。消隱處理是計算機繪圖中一個引人注目的問題, 目前已提出多種算法,基本 上可以分為兩

2、大類: 即物體空間方法和圖象空間方法。物體空間方法是通過比 較物體和物體的相對關系來決定可見與不可見的;而圖象空間方法則是根據(jù)在圖象象素點上各投影點之間的關系來確定可見與否的。用這兩類方法就可以消除 凸型模型、凹形模型和多個模型同時存在時的隱藏面。.消隱算法的實現(xiàn).物體空間的消隱算法物體空間法是在三維坐標系中,通過分析物體模型間的幾何關系,如物體的 幾何位置、與觀察點的相對位置等,來進行隱藏面判斷的消隱算法。世界坐標系 是描述物體的原始坐標系,物體的世界坐標描述了物體的基本形狀。 為了更好地 觀察和描述物體,經常需要對其世界坐標進行平移和旋轉, 而得到物體的觀察坐 標。物體的觀察坐標能得到描述

3、物體的更好視角,所以物體空間法通常都是在觀 察坐標系中進行的。觀察坐標系的原點一般即是觀察點。 物體空間法消隱包括兩 個基本步驟,即三維坐標變換和選取適當?shù)碾[藏面判斷算法。選擇合適的觀察坐標系不但可以更好地描述物體,而且可以大大簡化和降低消隱算法的運算。因此,利用物體空間法進行消隱的第一步往往是將物體所處的 坐標系轉換為適當?shù)挠^察坐標系。這需要對物體進行三維旋轉和平移變換。常用的物體空間消隱算法包括平面公式法、徑向預排序法、徑向排序法、隔 離平面法、深度排序法、光線投射法和區(qū)域子分法。其中前三種算法最常用,它們的基礎都是背面消 隱原理。所謂背面消隱原理,即是相對觀察點來說朝向后面的物體表面是不

4、可見 的,應被隱藏。下面只對平面公式法作詳細介紹,其他方法可參看有關文獻。根據(jù)解析幾何原理,通過標準的平面方程可以判斷給定點是在平面的正面還是背面。平面公式法利用此原理來判斷觀察點位于物體表面的哪一面,如位于背面一側,則表面不可見,應被消隱;反之則可見。對物體的任意表面,可將其劃分為若干個平面,在根據(jù)平面上任意三點的坐標可以求得其平面方程。標準的平面方程為:Ax+By+Cz+D=0其中A、B C D為決定平面的常數(shù)。當把一個平面想象成一個凸型多面體 時,設觀察點坐標為(x, y, z),如果:Ax+By+Cz+D=。則觀察點(x, y, z)是該平面表面上的一個點;Ax+By+Cz+D。則觀察

5、點(x, y, z)在凸型多面體內部(稱該表面是 不可見的或隱藏的);Ax+By+Cz+D0,則平面不可見,應被隱藏;DIg 二 IagKag I pgKdg(L N) IpgKsg(RV)n.Ib = IabKaIpbKdb(L N)+IpbKsb(R V)n3)繪制真實感圖形下面我們采 OpenGL實現(xiàn)地球繞太陽的公轉和月球繞地球的公轉并自身帶有一 定速率的自轉。在 DrawScene函數(shù)中先畫太陽橢圓線(DrawSunEllipse),在畫太陽 (DrawSun(),其次地球(DrawEarth(),在畫地球橢圓線(DrawEarthEllipse(), 最后畫月亮(DrawMoon()

6、。下面分別介紹各個圖形是怎樣表現(xiàn)出來的。DrawSunEllipse():畫橢圓線是根據(jù)方程x*x/a*a+y*y/b*b=1 ;轉換為三角表達形式:x=a*cos(angle), y=b*sin(angle);使angle角度在0,2*PI中變化是繪點便可得到一個以點組成的橢DrawSun():畫太陽比較簡單,直接綁定紋理(glBindTexture(),在繪球(gluSphere()即 可。DrawEarth():想要在繪出地球的運行軌跡,即地球不論怎樣轉都在太陽的橢圓上,即須將進行模型平移(glTranslatef(),將當前的坐標系移到太陽橢圓的位置上來??紤] 到繪制太陽和其橢圓時是在

7、當前坐標系上進行繪制的,現(xiàn)在平移至太陽橢圓上, 即 只需在 x , z軸上分別平移 x=a*cos ( angle) , z=b*sin ( angle),即 glTranslatef(x,0,z);在到這個坐標系上來進行繪制;但此時地球并未隨地球而轉 動,想實現(xiàn)這個效果可將模型平移中的 x, z值變化,這里采用程序的多線程性, 這里在Revolution。中while (TRUE)循環(huán)所有的angle角度值。注意因為系統(tǒng) 處理速度較快,若不在x, z中設置相應的暫停函數(shù),則很難看出效果,這里用 Sleep (20)來暫停。DrawEarthEllipse():繪制地球橢圓時,注意此時的坐標系

8、已在地球的位置上了,除非調用 glLoadIdentity()重置坐標系函數(shù)。同繪制太陽橢圓原理一樣,采用橢圓方程,只 不過這里的橢圓大小是太陽橢圓的7倍,即x= ( a/7.0) *cos (angle), z=(b/7.0)*sin(angle)DrawMoon ():繪制月球,同樣月球是在地球的軌道上運行,同理,亦要平移 模型坐標系,使 x= (a/7.0) *cos (angle), z= (b/7.0)*sin(angle),同地球公轉一 樣設置在多線程函數(shù)中 Revolution (),調用glTransferf(x, 0, z)定位到地球軌跡 上,并實現(xiàn)月亮的公轉。5視角的變換和

9、視點的平移此程序可通過上、下鍵來進行視點位置的前移或后移;通過左右實現(xiàn)視線方 向的左右變換。通過PgUp鍵實現(xiàn)視線向上翻轉,通過PgDn實現(xiàn)實現(xiàn)向下翻轉: 在說其平移和變換時,先介紹 glLookAt ()函數(shù),前三個函數(shù)為視點方向,中 間三個為參考點(=視點方向+實現(xiàn)方向),后后三個參數(shù)為成像正立,一般設置 為 0 , 1 , 0。初始化視 x=0.0f,y=0.0f,z=5.0f;在定義視線位置 lx=0.0f,ly=0.0f,lz=-1.0f ; glLookAt(x,y,z,x+lx,y+ly,z+lz,0,1,0);視點位置平移:在xz平面內,僅需改變x, z值即可;前移:x+=lx

10、* (一定速值); z+=lz* (一定速值);同理,后移x-=lx* (一定速值);z-=lz* (一定速值); 視線方向改變:當視線向右變換時,此時視角(MoveAngel按一定速率自增)改 變,xz 平面內 lx, lz 值改變,即 lx=sin (MoveAngle) ,lz=-cos(MoveAngle);同 理視線左邊換時,MoveAngle 按一定速率自減,使lx=sin (MoveAngle) ,lz=-cos(MoveAngle);PgUp, PgDn的圖像翻轉實現(xiàn):同理類似與視線的變換,只不過變換的平面不一 樣,PgUp和PgDn的上下翻轉是在yz平面內實現(xiàn),且在視線上下變換的同時, y點的視點位置亦要隨之改變,這也就是翻轉與視線變換的不同之所在了。四、程序調試及結果的分析本程序運行環(huán)境為 VC下的opengl環(huán)境。實驗效果:按“上、下”鍵可實現(xiàn)視點的前移和后退。按“左、右”鍵可實現(xiàn)視線的左右變換。按“PgUp、PgDn”鍵可實現(xiàn)實現(xiàn)的圖像的翻轉。按“L”鍵可實現(xiàn)光源的啟用或關閉。由于實驗代碼比較長,本實驗暫不將代碼附在實驗報告中。運行結果展示:關閉燈光后:五.實驗心得及建議.通過這次實驗,我對 OPENGL有了進一步的了解,也增添了

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論