基于opengl的多目標航跡編輯與三維建模_第1頁
基于opengl的多目標航跡編輯與三維建模_第2頁
基于opengl的多目標航跡編輯與三維建模_第3頁
全文預覽已結束

下載本文檔

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

文檔簡介

基于opengl的多目標航跡編輯與三維建模

1兩大終端系統(tǒng)組成我們開發(fā)的雷達模擬器用于為測試雷達生成由多個波形目標和不均勻混合波組成的雷達環(huán)境,并真實再現(xiàn)雷達系統(tǒng)的低頻和視頻信號。以驗證雷達在多目標環(huán)境下的檢測、跟蹤、導航和其他能力。系統(tǒng)結構主要由終端系統(tǒng)、低頻信號通道、低頻信號通道反射信號通道、多波信號通道、視頻信號通道、視頻多通道反射信號通道、固定波形通道等部分組成。其中終端系統(tǒng)包括上位機、嵌入式控制計算機和PCI數(shù)據(jù)傳輸接口。整個系統(tǒng)設計分為軟件設計和硬件設計兩個部分。終端軟件設計采用模塊式系統(tǒng)結構,包括上位機軟件系統(tǒng)和嵌入式計算機軟件系統(tǒng)。上位機提供人機交互界面,由操作員完成200批勻速或勻加速目標的航跡編輯,雷達工作制式、雜波形式、目標反射截面積等參數(shù)的設置,并將航跡數(shù)據(jù)和設置的參數(shù)下傳給嵌入式計算機,最終動態(tài)顯示目標飛行情況。嵌入式計算機系統(tǒng)主要完成航跡的計算和需生成的中頻、視頻目標的各項參數(shù)計算。本文所要論述的是上位機界面設計中的兩個關鍵技術:目標的三維建模以及多個起伏目標的航跡編輯。2生成三維圖形軟件—開發(fā)工具及OpenGL簡介上位機軟件系統(tǒng)在Windows9x/NT平臺上進行開發(fā),開發(fā)采用面向?qū)ο?Object-oriented)的編程技術,以Delphi為基礎,調(diào)用OpenGL圖形庫中的函數(shù)完成程序設計。OpenGL是一個開放的三維圖形軟件包,它獨立于窗口系統(tǒng)和操作系統(tǒng),在交互式三維圖形建模能力和編程方面具有無可比擬的優(yōu)越性,可靈活方便地實現(xiàn)二維和三維的高級圖形技術。OpenGL以往都是在C語言環(huán)境下進行編程的,上位機軟件設計之所以考慮在Delphi環(huán)境下編寫,主要是因為C語言開發(fā)方法復雜且開發(fā)周期長,不適應當前快速開發(fā)應用程序的需求。3飛機模型的建立在使用OpenGL前首先應進行初始化工作,這些工作主要包括:設置象素格式——主要完成OpenGL的繪制風格、顏色模式、深度位數(shù)等重要信息的設定,創(chuàng)建設備描述表和著色描述表——告訴Windows怎樣在一個窗口中顯示信息。初始化工作為后續(xù)的模型建立做好了準備。創(chuàng)建三維物體首先是在三維空間建立物體的模型,然后計算機經(jīng)過幾何變換、投影變換、剪切變換、視口變換等得到理想的視覺效果,最后在二維平面上顯示出來,算法上是通過線性變換和矩陣運算實現(xiàn)的。傳統(tǒng)的三維物體建模通常是通過3DMAX等軟件先建立模型,再通過數(shù)據(jù)格式轉(zhuǎn)換,導出數(shù)據(jù)文件,最后由OpenGL繪制,這種方法雖然能生成較為逼真的模型,但是數(shù)據(jù)量很大,由于本套系統(tǒng)不要求很復雜的目標形狀所以在建模時采用了簡單化處理。目標模型設定為飛機,在繪制飛機的函數(shù)DrawPlane里首先調(diào)用OpernGL實用庫中的gluNewQuadric()命令建立一個二次曲面對象,再調(diào)用三次gluCylinder(GLuquadricObj*obj,GLdoublebaseRadius,GLdoubletopRadius,GLdoubleheight,GLintslices,GLintstacks)命令繪制三個圓柱體,其中變量的具體含義如下obj二次曲面對象baseRadiu指定所繪制圓柱的底半徑topRadius指定圓柱的上表面半徑height指定圓柱的高slices指定圍繞z軸的子分割的因數(shù)stacks指定沿z軸的子分割的因數(shù)三個圓柱體的區(qū)別在于第一個圓柱體的上表面半徑為0,第二個圓柱體的上下半徑相同,第三個圓柱體的上表面半徑略大于底半徑。三個圓柱體分別用于模擬機頭、機身和機尾,通過OpenGL中的平移命令glTranslatef*()將三個圓柱體變換到合適位置,此時飛機的主要部分就完成了。飛機的側(cè)翼和尾翼是用OpenGL中多邊形的繪制來完成的,在圓柱體的合適位置指定多邊形的頂點,調(diào)用如下繪制命令即可最后加入光照,飛機模型就建立好了。圖2、圖3和圖4分別給出了按上述方法建立的飛機模型的俯視圖、側(cè)視圖和有一定角度的旋轉(zhuǎn)圖。航跡的編輯在實際空間中進行,采用右手直角坐標系,此時雷達處于直角坐標系的原點,X-Y平面表示水平面,Z表示高度,對航跡采用分段編輯的方法。一條航跡可分成多段,每段內(nèi)采用直線的運動形式,對于復雜運動形式(如近似圓周運動)的編輯可采用多段直線擬合的方法。三維空間航跡的編輯采用三個二維平面投影合成的方法來實現(xiàn),即首先在X-Y平面(俯視圖)上分段編輯一條航跡,再在X-Z平面(前視圖)和Y-Z平面(右視圖)為該航跡的每個分段點給出一個高度值,通過對三條二維曲線的合成就可以得到三維空間中的一條航跡。之所以采用三個投影面,是為了解決航跡落在Y軸或X軸上這種特殊情況下的編輯問題。如果沒有這種特殊情況存在,那么只需在兩個投影面內(nèi)編輯即可。本套系統(tǒng)最多可編輯200條航跡,每條航跡上最多50個航跡點。定義一個200行150列的數(shù)組FlightPath,數(shù)組的每一行代表一條航跡,一行上的每三列代表一個航跡點,分別存放該點的X、Y、Z坐標值,同時定義一個200列的一維數(shù)組PointNumbers,用于存放每條航跡上航跡點的總數(shù),程序代碼如下軌跡的繪制在Delphi的面板上進行,根據(jù)實際情況將面板航的背景顏色分別清為兩種不同顏色,俯視圖時為土黃色,前視圖時為淡藍色,分別用于模擬地面和天空,兩圖之間的切換用--標志位DownFlag,加以控制,此標志為真時是俯視圖,否則為前視圖。代碼如下設置一個用于編輯航跡的按鍵,每按下一次標志位PathNumber加1表示新增一條航跡。每條航跡的繪制過程如下:(1)在面板鼠標按下事件里記錄當前鼠標位置。(2)在面板的雙擊事件里給FlightPath數(shù)組付值,用以記錄航跡上各點的坐標值。先將獲得的鼠標當前位置值轉(zhuǎn)換成OpenGL坐標,轉(zhuǎn)換公式如下(3)在繪制航跡的函數(shù)DrawFlightPath里繪制航跡進行點的平滑處理以及尺寸與顏色的設置,再用FlightPath中航跡點的坐標值循環(huán)調(diào)用OpenGL畫點函數(shù)繪制航跡點。如果該條航跡的航跡點數(shù)大于1,則循環(huán)調(diào)用OpenGL畫線函數(shù)在前一點和后一點之間畫線。(4)最后在繪制場景的函數(shù)DrawScene中調(diào)用DrawPlane和DrawFlightPath函數(shù)進行目標與航跡的顯示。由于OpenGL支持雙緩存技術,在進行圖形顯示時,需調(diào)用SwapBuffers函數(shù),將后臺緩存繪制的圖形調(diào)入前臺緩存,在屏幕上顯示。圖5和圖6分別給出了一條航跡的俯視圖和前視圖的編輯結果。從圖中可以看出這條航跡由4段,5個航跡點組成,俯視圖中給出了5個航跡點的X、Y坐標,前視圖中給出了5個航跡點的X、Z坐標,因為航跡沒有落在Y軸的特殊情況,所以經(jīng)過圖5和圖6兩個過程整條航跡在三維空間的位置就可確定下來了。5航跡編輯實現(xiàn)方法以上為雷達模

溫馨提示

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

評論

0/150

提交評論