利用OpenGL實現(xiàn)內插算法可視化_第1頁
利用OpenGL實現(xiàn)內插算法可視化_第2頁
利用OpenGL實現(xiàn)內插算法可視化_第3頁
利用OpenGL實現(xiàn)內插算法可視化_第4頁
全文預覽已結束

下載本文檔

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

文檔簡介

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

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

3、具體采用何種數(shù)據(jù)源和相應的測量技術,一方面取決于這些源數(shù)據(jù)的可獲得性,另一方面也取決于DEM的分辨率、精度要求、數(shù)據(jù)量大小和技術要求等。   對于離散點的數(shù)據(jù),往往是很大的,我們只有按照一定數(shù)據(jù)結構存儲在*.dem文件中,才能便于管理和修改。在程序中通過讀取文件,可以得到任意一個文件中的地形信息。為了測試的需要,依據(jù)圖1中的等高線我們可以采集到一些特征點的三維信息。例如,我們采集10個點的信息,將其存入文件中,其結構如下所示: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ù)據(jù)按照5個字符來存儲。第一個數(shù)據(jù)為采樣離散點的總數(shù),第二到第九個數(shù)據(jù)分別為所選地形左下、左上、右上、右下點的平面X和Y的坐標,第十和第十一個數(shù)據(jù)為地形的最小高程值和最大高程值,余下的數(shù)據(jù)每三個為采樣離散點的三維坐標X、Y和Z,共有十個。   在LoadFileData類中,需要先定義public int DataNum; /離散點的總數(shù)public double, DataPoint=new double 50,3; /離散數(shù)據(jù)點的三維坐標int readDemPosition;  /

6、 讀取位置string DemFileContent;  /DEM文件內容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;/存儲*.dem文件中前十一個數(shù)據(jù)   同時在主程序中,還需要調用如下兩個讀取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);      通過讀取文件中的數(shù)據(jù),我們可以很容易的得到地圖的四邊、地圖中心點坐標和最大與最小高層差,以便在繪制地形時確定屏幕的顯示位置和鼠標控制的縮放和移動比例。2.2  利用OpenGL實現(xiàn)算法的可視化   Open GL是Open Graphics Library 的縮寫,它是SGI公司開發(fā)的一套高性能圖形處理系統(tǒng),是圖形硬件的軟件接

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

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

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

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

溫馨提示

  • 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

提交評論