利用OpenGL實(shí)現(xiàn)內(nèi)插算法可視化_第1頁(yè)
利用OpenGL實(shí)現(xiàn)內(nèi)插算法可視化_第2頁(yè)
利用OpenGL實(shí)現(xiàn)內(nèi)插算法可視化_第3頁(yè)
利用OpenGL實(shí)現(xiàn)內(nèi)插算法可視化_第4頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡(jiǎn)介

1、利用OpenGL實(shí)現(xiàn)內(nèi)插算法可視化          摘  要   OpenGL是一種交互式計(jì)算機(jī)圖形系統(tǒng),具有繪制三維圖形的功能,能高效地編寫(xiě)出可操縱圖形硬件的程序,支持三維可視化的實(shí)現(xiàn)。本文以O(shè)penGL為基礎(chǔ),對(duì)可視化技術(shù)進(jìn)行研究,重點(diǎn)討論了內(nèi)插算法,結(jié)合OpenGL中視點(diǎn)的定義,通過(guò)OpenGL的函數(shù)來(lái)實(shí)現(xiàn)。    關(guān)鍵詞  OpenGL  可視化  內(nèi)插算法1  引言   為了便于對(duì)算法

2、實(shí)現(xiàn)進(jìn)行測(cè)試和效果分析,我們依據(jù)圖1進(jìn)行離散點(diǎn)采樣。在圖1中,地形面積為 ,其等高線分布如圖所示,A點(diǎn)和B點(diǎn)為兩座山的頂峰,其中A點(diǎn)高程值為3.6,B點(diǎn)高程值為2.3。我們將采樣得到的離散點(diǎn)按照一定的規(guī)則存放在*.dem的文件中,通過(guò)讀取文件中的數(shù)據(jù)來(lái)獲取離散點(diǎn)的高程值。我們通過(guò)采樣10或20個(gè)點(diǎn)生成 的DEM格網(wǎng)模型。圖1 測(cè)試地形等高線圖2  內(nèi)插算法的可視化的實(shí)現(xiàn)2.1  讀取文件中離散點(diǎn)數(shù)據(jù)   離散點(diǎn)數(shù)據(jù)包括平面位置和高程兩種信息,可以直接在野外通過(guò)全站儀或者GPS、激光測(cè)距儀等進(jìn)行測(cè)量,也可以間接地從航空影像或者遙感圖象以及既有地形圖上得到。

3、具體采用何種數(shù)據(jù)源和相應(yīng)的測(cè)量技術(shù),一方面取決于這些源數(shù)據(jù)的可獲得性,另一方面也取決于DEM的分辨率、精度要求、數(shù)據(jù)量大小和技術(shù)要求等。   對(duì)于離散點(diǎn)的數(shù)據(jù),往往是很大的,我們只有按照一定數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)在*.dem文件中,才能便于管理和修改。在程序中通過(guò)讀取文件,可以得到任意一個(gè)文件中的地形信息。為了測(cè)試的需要,依據(jù)圖1中的等高線我們可以采集到一些特征點(diǎn)的三維信息。例如,我們采集10個(gè)點(diǎn)的信息,將其存入文件中,其結(jié)構(gòu)如下所示:10   0.0  0.0  0.0  10.0 10.0 10.0 10.0 0.0 

4、0.0  3.6  3.0  7.1  3.6  7.1  3.0  2.3  5.5  5.5  1.4  5.7  8.0  1.0  8.0  8.0  0.5  9.0  2.0  1.3  6.0  1.2  1.0  5.0  4.0  1.0  1.0  7.2  2.0  2.0 

5、2.0  0.3     在實(shí)例中每個(gè)數(shù)據(jù)按照5個(gè)字符來(lái)存儲(chǔ)。第一個(gè)數(shù)據(jù)為采樣離散點(diǎn)的總數(shù),第二到第九個(gè)數(shù)據(jù)分別為所選地形左下、左上、右上、右下點(diǎn)的平面X和Y的坐標(biāo),第十和第十一個(gè)數(shù)據(jù)為地形的最小高程值和最大高程值,余下的數(shù)據(jù)每三個(gè)為采樣離散點(diǎn)的三維坐標(biāo)X、Y和Z,共有十個(gè)。   在LoadFileData類(lèi)中,需要先定義public int DataNum; /離散點(diǎn)的總數(shù)public double, DataPoint=new double 50,3; /離散數(shù)據(jù)點(diǎn)的三維坐標(biāo)int readDemPosition;  /

6、 讀取位置string DemFileContent;  /DEM文件內(nèi)容public struct Pointpublic double x;   public double y;public struct DEMStructpublic Point  LeftBottom;public Point  LeftTop;      public Point  RightTop;      public Point  RightBottom;

7、60;     public double MinElevation;      public double MaxElevation;   public DEMStruct DemDataStruct;/存儲(chǔ)*.dem文件中前十一個(gè)數(shù)據(jù)   同時(shí)在主程序中,還需要調(diào)用如下兩個(gè)讀取int型和double型的函數(shù):private int readInt()       string tmps ;    tmp

8、s = DemFileContent.Substring(readDemPosition,5);    readDemPosition += 5;    return ( Convert.ToInt32(tmps);      private double readDouble()       string tmps;    tmps = DemFileContent.Substring(readDemPositio

9、n,5);    readDemPosition += 5;    return (Convert.ToDouble(tmps);      通過(guò)讀取文件中的數(shù)據(jù),我們可以很容易的得到地圖的四邊、地圖中心點(diǎn)坐標(biāo)和最大與最小高層差,以便在繪制地形時(shí)確定屏幕的顯示位置和鼠標(biāo)控制的縮放和移動(dòng)比例。2.2  利用OpenGL實(shí)現(xiàn)算法的可視化   Open GL是Open Graphics Library 的縮寫(xiě),它是SGI公司開(kāi)發(fā)的一套高性能圖形處理系統(tǒng),是圖形硬件的軟件接

10、口,意為開(kāi)放的圖形庫(kù)。通過(guò)OpenGL程序員可以創(chuàng)建交互式的應(yīng)用程序,實(shí)現(xiàn)具有逼真效果的三維圖形圖像。由于其開(kāi)放性和高度的可重用性,目前已成為業(yè)界標(biāo)準(zhǔn)。 OpenGL被設(shè)計(jì)成獨(dú)立于硬件,獨(dú)立于窗口系統(tǒng)的,在運(yùn)行各種操作系統(tǒng)的各種計(jì)算機(jī)上都可用,并能在網(wǎng)絡(luò)環(huán)境下以客戶/服務(wù)器模式工作,是專(zhuān)業(yè)圖形處理、科學(xué)計(jì)算等高端應(yīng)用領(lǐng)域的標(biāo)準(zhǔn)圖形庫(kù)。            為了便于我們后期的LOD地形簡(jiǎn)化,我們一般要將地形繪制成三角格網(wǎng)的形式。在繪制三角形時(shí),由于地形不可能都是規(guī)則的長(zhǎng)方形或正方形,考慮到一般地

11、形的多樣性和復(fù)雜性,不能夠?qū)Ⅻc(diǎn)簡(jiǎn)單的連線。根據(jù)三角形的四種形式,每個(gè)構(gòu)成三角形的點(diǎn)都先按照四邊形的方式進(jìn)行劃分成四個(gè)點(diǎn)(如圖2)。圖2 三角形四種情況下點(diǎn)的的劃分4   在圖中,三角形中必有一個(gè)點(diǎn)被兩個(gè)編號(hào)所代表,然后按照1-2-4-1-3-4的順序進(jìn)行連接,必然能繪制出四種情況中的任何一種三角形。通過(guò)上述操作,可以實(shí)現(xiàn)程序能運(yùn)用到所有地形的顯示。   程序代碼private void DrawTriangle(Point3D Point1, Point3D Point2, Point3D Point3, Point3D Point4 ) &#

12、160;     GL.glBegin(GL.GL_TRIANGLES);/開(kāi)始繪三角形   GL.glVertex3d(Point1.x, Point1.y, Point1.z);/從1起筆   GL.glVertex3d(Point2.x, Point2.y, Point2.z);/畫(huà)到2   GL.glVertex3d(Point4.x, Point4.y, Point4.z); /畫(huà)到4   GL.glVertex3d(Point1.x, Point1.y, Point1.z)

13、; /畫(huà)到1   GL.glVertex3d(Point3.x, Point3.y, Point3.z); /畫(huà)到3   GL.glVertex3d(Point4.x, Point4.y, Point4.z); /畫(huà)到4   GL.glEnd();/完成一個(gè)三角形的繪制   通過(guò)上述操作,可以將圖2的點(diǎn)視圖轉(zhuǎn)化為三角形格網(wǎng)試圖(如圖3)。(a)加權(quán)平均內(nèi)插數(shù)學(xué)模型(b)多面函數(shù)內(nèi)插數(shù)學(xué)模型(c)最小二乘內(nèi)插數(shù)學(xué)模型圖3 利用搜索圓實(shí)現(xiàn)地形的三角形格網(wǎng)視圖3  結(jié)論   在現(xiàn)實(shí)中,我們需要生成的地形往往是很龐大,很復(fù)雜的,因此不能夠僅利用某一種算法和某一種搜索方式生成全部的地形。對(duì)于大范圍的復(fù)雜地形,就必須先對(duì)地形按起伏程度進(jìn)行區(qū)域分塊,對(duì)不同的區(qū)域選擇合適的算法和搜索方式。參考文獻(xiàn)1 Donald Hearn ,M.Pauline Baker .Computer Graphics M.電子工業(yè)出版社,1998Edwward Angel. 

溫馨提示

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