空間數(shù)據(jù)處理_第1頁(yè)
空間數(shù)據(jù)處理_第2頁(yè)
空間數(shù)據(jù)處理_第3頁(yè)
空間數(shù)據(jù)處理_第4頁(yè)
空間數(shù)據(jù)處理_第5頁(yè)
已閱讀5頁(yè),還剩3頁(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、2013 么碩士研究生考試試卷課程名稱空間數(shù)據(jù)可視化 考試形式(開(kāi)/閉卷,考試/查)二。一三二。一四 學(xué)年第 一學(xué)期學(xué)院測(cè)繪與地理信息學(xué)院 專業(yè) 地圖學(xué)與地理信息系統(tǒng) 學(xué)號(hào)02130740姓名題次四五總分評(píng)卷人分?jǐn)?shù)評(píng)分基于OpenGl的三維圖形繪制與3D建模02130740摘要:隨著計(jì)算機(jī)圖形學(xué)應(yīng)用研究不斷深入,應(yīng)用不斷擴(kuò)大,三維可視化技術(shù)占據(jù)了重要的位置,而且 三維圖形比二位圖形更具可表達(dá)性、可認(rèn)知性、具有更形象的現(xiàn)實(shí)逼真效果,所以對(duì)一些復(fù)雜物體進(jìn)行可 視化或利用可視化技術(shù)來(lái)模擬三維地形就變得很有意義,通過(guò)對(duì)一些物體的三維可視化,可以更加直觀, 形象的表達(dá)二維圖形所不能表達(dá)的信息。該文在VC

2、2010軟件下導(dǎo)入OpenGL函數(shù)圖形庫(kù)編程實(shí)現(xiàn)了雨傘 的繪制,并對(duì)TIN網(wǎng)生成算法研究的基礎(chǔ)上利用生長(zhǎng)算法實(shí)現(xiàn)了 TIN網(wǎng)的構(gòu)建,最后對(duì)TIN網(wǎng)進(jìn)行了三維 模擬。關(guān)鍵詞:三維可視化;OpenGL;生長(zhǎng)算法;TINThe 3D graphics rendering and 3D modeling based onOpenGlLi Bi-dong 02130740(School of Surveying and Mapping Geographic Information, Lanzhou Jiaozong University; 730070, China)Abstract: With the

3、 computer graphics applications, applications constantly expanding 3D visualization technology occupies the important position, and provide more than two graphics and three-dimensional graphics expressiveness, cognitive function, with the appearance of more realistic effect, so for some complex obje

4、cts visually or using visualization technology to simulate the 3 d terrain becomes very meaningful, by some 3 d visualization of the object, can be more intuitive, image expression of the two-dimensional graphic expression of information. This paper based cn import graphics library CpenGL function c

5、f V。+ + 6.0 programming realized the umbrella- and research cnTIN mesh generation algorithm based on the use of implementation in the construction of network growth algorithm, TIN for the 3 d simulation at last.Key words: 3D visualization technology; OpenGL; Growth algorithm; TIN1概述OpenGL是一個(gè)三維的計(jì)算機(jī)圖形

6、開(kāi)發(fā)包.為程序員提供了一個(gè)圖形硬件接口。 OpenGL是一個(gè)功能強(qiáng)大,支持底層繪制和造型能力的軟件圖形函數(shù)庫(kù)。它獨(dú)立于 硬件和窗口系統(tǒng),適用于所有的主流操作系統(tǒng)平臺(tái)。有著廣泛的硬件支持,是為游 戲、造型及CAD之類的圖形應(yīng)用程序而設(shè)計(jì)。OpenGL能在網(wǎng)絡(luò)環(huán)境下以客戶/服 務(wù)器模式工作。是專業(yè)圖形處理、科學(xué)計(jì)算等高端應(yīng)用領(lǐng)域的標(biāo)準(zhǔn)圖形庫(kù)。OpenGL的核心圖形函數(shù)功能強(qiáng)大。使用靈活方便,提供了 :物體繪制、光照處 理、著色、融合、霧化、紋理映射和動(dòng)畫(huà)制作等基本操作。并能夠支持粒子系統(tǒng), 對(duì)模擬水、火、雪等自然景物提供了真實(shí)有效的方法。2鐘樓的建模圖2.1鐘樓樣圖分為30等分,每一部分都是一個(gè)小

7、的四邊形。由于剖分的小面片為平面,所以在這 里沒(méi)有采用三角形面片進(jìn)行剖分,而采用了四邊形為面片的剖分方式。四邊形面片 較三角形面片的優(yōu)點(diǎn)在于,構(gòu)建相同的面對(duì)象需要更少的面片。值得一提的是,三 角形面片的優(yōu)點(diǎn)在于它可以保證點(diǎn)在同一平面內(nèi),而多邊形不具備這樣的性質(zhì)。以下是繪圖函數(shù)當(dāng)中的部分代碼:圖2.2鐘樓基座圖元for (int i=0;i20;i+)GLfloat rot=PI/10.0f;glBegin(GL_QUADS);glTexCoord2f(0.0f, 0.0f); glVertex3f( 0.0f, Heigh,0.0f);glTexCoord2f(1.0f, 0.0f); glV

8、ertex3f( R*sin(rot*i), Heigh,R*cos(rot*i);glTexCoord2f(1.0f, 1.0f);glVertex3f( R*sin(rot*i)+R*sin(rot*(i+1)/2,Heigh,(R*cos(rot*i)+R*cos(rot*(i+1)/2);glTexCoord2f(0.0f, 1.0f); glVertex3f( R*sin(rot*(i+1),Heigh,R*cos(rot*(i+1);glEnd();glBegin(GL_QUADS);glTexCoord2f(0.0f, 0.0f); glVertex3f( 0.0f, 0,0.0

9、f);glTexCoord2f(1.0f, 0.0f); glVertex3f( R*sin(rot*i), 0,R*cos(rot*i);glTexCoord2f(1.0f, 1.0f);2.1基座建模本文中,鐘樓的基座為三個(gè)不同大小的圓柱體堆疊而成,所以基座的建模實(shí)質(zhì)是 對(duì)單個(gè)圓柱體的建模。圓柱體的建模采用的是矩形剖分的方法,將圓柱體沿圓周劃 glVertex3f( R*sin(rot*i)+R*sin(rot*(i+)/210,(R*cos(rot*i)+R*cos(rot*(i+1)/2);共.10 頁(yè) 弟.3 .頁(yè).glTexCoord2f(0.0f, 1.0f); glVertex

10、3f( R*sin(rot*(i+1), 0,R*cos(rot*(i+1);glEnd();glEndList();調(diào)用顯示列表繪制四個(gè)鐘樓立柱的代碼如下:glTranslatef(-80.0f,0.0f,80.0f);左上立柱glPushMatrix();glRotatef(45.0f,0.0f,1.0f,0.0f);glCallList(1);glPopMatrix();glTranslatef(0.0f,0.0f,-80.0f);/左下立柱glPushMatrix();glRotatef(135.0f,0.0f,1.0f,0.0f);glCallList(1);glPopMatrix(

11、);glTranslatef(-80.0f,0.0f,0.0f);右上立柱glPushMatrix();glRotatef(225.0f,0.0f,1.0f,0.0f);glCallList(1);glPopMatrix();glTranslatef(0.0f,0.0f,80.0f);/右下立柱glPushMatrix();glRotatef(315.0f,0.0f,1.0f,0.0f);glCallList(1);glPopMatrix();圖2.3鐘樓立柱可以看到代碼中有三個(gè)參數(shù):圓柱半徑R, Y方向高度還有材質(zhì);實(shí)現(xiàn)過(guò)程中, 將這些代碼寫(xiě)入顯示列表,就可以將該圓柱體作為一個(gè)整體進(jìn)行操作,

12、在需要繪制 圖形的時(shí)候,只需給出參數(shù),就可以完成圖形繪制,同時(shí)方便圖形的旋轉(zhuǎn)、平移等 操作。2.2鐘樓四個(gè)方柱的繪制鐘樓的四個(gè)立柱形狀相同,均為四棱柱,只是其不是單純的正長(zhǎng)方體,下面 一段為梯形狀,上面一部分為漸變的四棱柱。在此次建模中,可以將鐘樓的立柱看 作是一個(gè)由六個(gè)面構(gòu)成的封閉盒子,而個(gè)個(gè)面可以由三角面或四邊形面片來(lái)構(gòu)成。 材質(zhì)采用的是地板磚的一種紋理。最終將一個(gè)完整的繪制鐘樓立柱的代碼封裝到一 個(gè)顯示列表中。通過(guò)旋轉(zhuǎn)和平移,在不同位置繪制不同的方向的四個(gè)立柱。從而完 成四個(gè)立柱的繪制。共 10頁(yè)第 4 頁(yè)2.3鐘表繪制鐘表由表盤和表針兩部分組成。表盤的繪制:由于表盤是一個(gè)正方形平面,所

13、以為了減少繪圖工作量,此次建模 直接繪制了一個(gè)正方形面,然后在這個(gè)多邊形面上貼材質(zhì),材質(zhì)選取了一張表盤的 紋理圖片,然后將紋理四個(gè)角點(diǎn)指定為繪制的正多邊形面片的四個(gè)角點(diǎn),即:將表 盤的紋理圖片展平到繪制的正四邊形面片上。圖2.4鐘表表針的繪制:表針總共有時(shí)針、分針和秒針組成。表針由長(zhǎng)方形繪制,三種不 同的表針由長(zhǎng)短、寬窄不同的長(zhǎng)方形面片構(gòu)成。為了讓表針更生動(dòng)形象,表針的材 質(zhì)采用了深黑色的材質(zhì)。更改材質(zhì)為中間到兩邊的漸變色材質(zhì),中間為亮白色,兩 側(cè)為深黑色,看上去有光照效果。2.4鐘樓上端及下端裝飾物繪制鐘樓上邊的裝飾物是由一個(gè)立體的人字構(gòu)成。人字形立方體的繪制和鐘樓的四個(gè) 立柱繪制方式相同,

14、即:將人字形立方體看作是由一系列長(zhǎng)方形面片構(gòu)成,構(gòu)成一 個(gè)封閉的立體人形盒子。圖2.5鐘樓上側(cè)及下沿配件2.5場(chǎng)景中燈光的添加為了能夠更好的顯示立體效果,還有陰影的現(xiàn)實(shí),在最后在場(chǎng)景中添加了一個(gè) 簡(jiǎn)單光照。具體代碼如下: void CTowerView:SetLight(void) static const GLfloat light_position口 = (50.0f, 200.0f, -100.0f, 1.0f);static const GLfloat light_ambient= (0.2f, 0.2f, 0.2f, 1.0f);/環(huán)iQ境3光astatic const GLfloa

15、t light_diffuse= (1.0f, 1.0f, 1.0f, 1.0f;/漫t反Qi 互射;?static const GLfloat light specular 口 = (1.0f, 1.0f, 1.0f, 1.0f); /鏡有面?光aglLightfv(GL_LIGHT0, GL_POSITION, light_position);glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient);glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse);glLightfv(GL_LIGHT0, GL_SPECU

16、LAR, light_ specular);glEnable(GL_LIGHT0);glEnable(GL_LIGHTING);glEnable(GL_DEPTH_TEST);圖2.6鐘表成拼圖(加光照與不加光照)3 TIN網(wǎng)構(gòu)建對(duì)于復(fù)雜的地表形態(tài)一般用構(gòu)建三角形網(wǎng)無(wú)限細(xì)化的形式來(lái)擬合。擬合法也 就是利用數(shù)學(xué)方法對(duì)復(fù)雜表面進(jìn)行局部擬合來(lái)代替?zhèn)鹘y(tǒng)意義上的實(shí)際地球表面TIN 是指不規(guī)則三角網(wǎng),也可以說(shuō)成基于不規(guī)則三角網(wǎng)的數(shù)字高程模型(Based onTriangulatedIrregular Net-work DEM),簡(jiǎn)寫(xiě)為 Based on TIN DEM,簡(jiǎn)稱 TIN。它是 用一系列互不交叉

17、、互不重疊的連接在一起的三角形來(lái)表示地形表面,即可以對(duì)已 采集的規(guī)則的或不規(guī)則分布的地理數(shù)據(jù)進(jìn)行三角建網(wǎng),當(dāng)整個(gè)區(qū)域的TIN網(wǎng)絡(luò)建立 之后,就可以進(jìn)行進(jìn)一步的TIN數(shù)據(jù)處理和應(yīng)用等,如TIN轉(zhuǎn)換成DEM等高線, 地層剖面分析,流域計(jì)算及可視性分析等。3.1TIN網(wǎng)生成算法生長(zhǎng)法由基線尋找第三點(diǎn)的判別法則目前有很多種,主要有三角剖分最小內(nèi)角為 最大,三角剖分邊長(zhǎng)和為最小及三角剖分最小面周長(zhǎng)平方比為最大等,這里采用的 是基于網(wǎng)格索引的最大角法,其實(shí)現(xiàn)構(gòu)網(wǎng)的基本步驟如下:(1)先在離散數(shù)據(jù)的點(diǎn)集V中任取一點(diǎn)A,然后以點(diǎn)A為基點(diǎn)去尋找與它最 近的一點(diǎn)B。連接AB,就得到了三角形的一條基邊。(2)在基邊

18、AB (是有向的)的右邊點(diǎn)集中去找與A、B兩點(diǎn)連成直線組成的 夾角為最大的P點(diǎn),就組成了第一個(gè)三角形,將有新生成的邊與三角形信息用相應(yīng) 的鏈表進(jìn)行存儲(chǔ),邊每使用一次,其times就加1。(3)在邊鏈表中取出頭位置的邊,以該邊為基邊向外進(jìn)行擴(kuò)展,具體過(guò)程同步 驟2)。如果邊的使用次數(shù)為2或是右邊沒(méi)有點(diǎn),該邊不進(jìn)行擴(kuò)展,否則擴(kuò)展,同時(shí) 存儲(chǔ)新生邊與三角形。后進(jìn)一步對(duì)點(diǎn)操作。在這里要指出的是,看到的許多論文都 有一個(gè)共同的錯(cuò)誤,就是直接對(duì)邊的兩端點(diǎn)進(jìn)行判斷如果前后點(diǎn)的屬性不同才進(jìn)行 交點(diǎn)的計(jì)算,但這種思路只有兩個(gè)多邊形的相交方式為矩形相交才能滿足條件。本 文在進(jìn)行交點(diǎn)獲取之前進(jìn)行算法優(yōu)化,先判斷多邊

19、形位置關(guān)系,然后判斷點(diǎn)與多邊 形邊的關(guān)系,進(jìn)而判斷邊與邊的關(guān)系,對(duì)相交的邊對(duì)進(jìn)行求交運(yùn)算,插入的多邊形 定點(diǎn)數(shù)組。由于在進(jìn)行定點(diǎn)判斷和交點(diǎn)求算的過(guò)程中,都給點(diǎn)賦予的它與多邊形之 間關(guān)系的屬性,所以通過(guò)點(diǎn)的遍歷及屬性判斷,獲得兩多邊形交集的有序點(diǎn)集合, 最終利用繪圖函數(shù)完成新多邊形的繪制。(4)對(duì)邊鏈表中下一位置的邊進(jìn)行擴(kuò)展,實(shí)現(xiàn)過(guò)程同步驟3),同時(shí)對(duì)新生成的 二條邊進(jìn)行一次判斷,如果已經(jīng)存在,就不對(duì)該邊進(jìn)行存儲(chǔ),判斷時(shí)不需對(duì)邊表進(jìn) 行一次遍歷,只要對(duì)該邊的中點(diǎn)所在網(wǎng)格中的所有邊進(jìn)行一次遍歷即可,這樣大大 提高了構(gòu)網(wǎng)速度。(5)重復(fù)步驟(4),直全邊鏈表的下一位置為空,即對(duì)所有的邊都進(jìn)行了擴(kuò)展,

20、 就結(jié)束構(gòu)網(wǎng)。最大角的求解是通過(guò)余弦公式所得。為了加快構(gòu)網(wǎng)的速度,可以把解求角最大的點(diǎn)轉(zhuǎn)化為解求余弦值最小的點(diǎn),這過(guò)程是等價(jià)的,從而減少了計(jì)算量,提高了 構(gòu)網(wǎng)效率。由于算法在找第三點(diǎn)時(shí),用到的是最大角度法,在構(gòu)建的TIN中任一兩 相鄰的三角形是不共圓的,即生成的三角網(wǎng)就是Delaunay三角網(wǎng)。為了便于模型的 進(jìn)一步應(yīng)用,在進(jìn)行邊及三角形結(jié)構(gòu)存儲(chǔ)時(shí),必須是按某一特定方向(順或逆時(shí)針) 方向進(jìn)行,這樣定義的三角形及邊鏈表數(shù)據(jù)結(jié)構(gòu)很方便以后的拓?fù)潢P(guān)系的維護(hù)及TIN 的進(jìn)一步應(yīng)用,如點(diǎn)所在的三角形的快速查找,嵌入約束線段等6-刀。3.2 TIN網(wǎng)構(gòu)建結(jié)果二維的TIN不能有效地表達(dá)地表面的起伏程度,視

21、覺(jué)效果差,而且信息量也不 豐富。本文在實(shí)現(xiàn)了二維TIN網(wǎng)(圖3)構(gòu)建的同時(shí),通過(guò)調(diào)用OpenGL中的動(dòng)態(tài)鏈 接庫(kù)中的一些成員函數(shù),將高程值(Z值)也參與了構(gòu)網(wǎng)。通過(guò)計(jì)算各個(gè)三角形的法 向量和對(duì)光源的設(shè)置,同時(shí)進(jìn)行紋理映射,達(dá)到了地形三維可視化(圖4)的效果, 使得TIN網(wǎng)的表達(dá)更加生動(dòng)形象。圖3.1 TIN網(wǎng)構(gòu)建二維地形線框圖圖3.2 TIN模擬地形圖4總結(jié)OpenGL是一個(gè)很好的三位可視化工具,通過(guò)對(duì)OpenGL庫(kù)函數(shù)的調(diào)用,可以 實(shí)現(xiàn)材質(zhì)、燈光、煙霧、粒子、陰影、透明等等效果,對(duì)于建模任務(wù)量不是很大的 情況下,完全可以通過(guò)程序的編寫(xiě)實(shí)現(xiàn)建模,具有耗費(fèi)資源少,運(yùn)行速度快等特點(diǎn)。 三維圖形比二位圖形能夠更多地表達(dá)事物的信息,而且具有更形象的現(xiàn)實(shí)逼真效果, 所以對(duì)一些復(fù)雜物體進(jìn)行可視化或利用可視化技術(shù)來(lái)模擬地形就變得很有意義。通 過(guò)對(duì)一些物體的三維可視化,也可以更加直觀,形象的表達(dá)二維圖形所不能表達(dá)的信息。本文在Visualstudio2010軟件

溫馨提示

  • 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)論