摘 要:針對空間作戰(zhàn)的特點和實際需求,論述了實現(xiàn)空間作戰(zhàn)仿真系統(tǒng)的關(guān)鍵技術(shù)。包括作戰(zhàn)仿真體系結(jié)構(gòu),空間目標軌道計算、地球和衛(wèi)星的繪制以及動畫的實現(xiàn)技術(shù)等。根據(jù)龐大的空間目標軌道計算會直接影響仿真速度的情況,提出了一種軌道快速計算方法,能夠有效地縮短軌道計算時間。利用OpenGL和Visual C++的編程技術(shù)實現(xiàn)了一個對衛(wèi)星軌道的計算、顯示和動態(tài)控制的系統(tǒng)。
關(guān)鍵詞:空間作戰(zhàn)仿真;作戰(zhàn)仿真體系結(jié)構(gòu);動畫;軌道快速計算方法;OpenGL;Visual C++
中圖分類號:TP391.9 文獻標識碼:A
文章編號:1004373X(2008)0303703
Research for the Key Technology in Space Operational Simulation Virtual Environment
YU Yan,TANG Xiaoan
(School of Electronics Science and Engineering,National University of Defense Technology,Changsha,410073,China)
Abstract:According to actual demand and the characteristic of space battle,the paper discusses the key technology that realized space operational simulate system.Including operational simulate architecture,space targets′orbit calculation,the earth and satellite draw as well as the realization of animation technology.According to the condition that huge space targets′orbit calculation can directly affect emulation speed,it puts forward a kind of orbit fast calculation method,can effective shorten orbit calculation time.The programming technology that uses OpenGL and VC++6.0 has realized a system that can calculate for satellite orbit,shows the orbit track and dynamic control the satellite.
Keywords:space operational simulation;operational simulate architecture;animation;fast calculation method of orbit;OpenGL;Visual C++
1 引 言
航天技術(shù)的發(fā)展與太空兵器裝備的出現(xiàn),使得現(xiàn)代戰(zhàn)場逐步由陸地、海洋、空中延伸到太空。太空作戰(zhàn)是現(xiàn)代化的航天武器裝備、信息技術(shù)、通信技術(shù)、偵察技術(shù)、網(wǎng)絡(luò)技術(shù)、高級決策能力之間的較量。我國空間戰(zhàn)場虛擬環(huán)境研究現(xiàn)在尚處在起步階段,而通過國外的軟件如STK,WTK進行作戰(zhàn)仿真研究又存在版權(quán)、保密性的問題。開發(fā)具有自主知識產(chǎn)權(quán)的、形象直觀的空間作戰(zhàn)仿真系統(tǒng)是一個迫切需要解決的問題。
本文根據(jù)空間作戰(zhàn)仿真的特點,就實現(xiàn)空間作戰(zhàn)仿真虛擬環(huán)境的關(guān)鍵技術(shù)進行了論述,給出了作戰(zhàn)仿真的體系結(jié)構(gòu),為了提高仿真速度簡單描述了一種空間目標軌道快速計算方法[1],只對可見的軌道進行軌道計算,不可見部分不予考慮。對于地球與衛(wèi)星的繪制和動畫的實現(xiàn)的關(guān)鍵技術(shù)也進行了說明,利用OpenGL和VC++6.0的編程技術(shù)實現(xiàn)的對衛(wèi)星軌道的計算、顯示和動態(tài)控制,該系統(tǒng)可以直接應(yīng)用于空間作戰(zhàn)仿真虛擬環(huán)境中。
2 空間作戰(zhàn)仿真體系結(jié)構(gòu)
體系結(jié)構(gòu)是系統(tǒng)完成的首要環(huán)節(jié),根據(jù)空間作戰(zhàn)仿真的實際需求,指揮者和作戰(zhàn)員需要對空間目標進行實時觀察并能夠及時做出作戰(zhàn)決策,進行作戰(zhàn)仿真。因此這一仿真體系按功能可分為四個部分:空間作戰(zhàn)可視化系統(tǒng)、空間作戰(zhàn)仿真系統(tǒng)、空間作戰(zhàn)流程仿真系統(tǒng)和數(shù)據(jù)庫支撐系統(tǒng)。體系結(jié)構(gòu)圖見圖1。
圖1 空間作戰(zhàn)仿真體系結(jié)構(gòu)
空間作戰(zhàn)可視化系統(tǒng)是是接收并處理其他系統(tǒng)所產(chǎn)生的仿真數(shù)據(jù),利用計算機三維真實感圖形技術(shù)/計算機動畫技術(shù)將仿真數(shù)據(jù)以有效的形式表現(xiàn)出來。為指揮者和作戰(zhàn)員提供直觀、逼真的戰(zhàn)場表現(xiàn)形式??臻g作戰(zhàn)可視化系統(tǒng)又分為戰(zhàn)場態(tài)勢顯示子系統(tǒng)和戰(zhàn)場環(huán)境顯示子系統(tǒng)。空間作戰(zhàn)仿真系統(tǒng)是依據(jù)航天動力學(xué)模型模擬航天器等空間目標在軌道運行情況,使其為作戰(zhàn)提供服務(wù)??臻g作戰(zhàn)流程仿真系統(tǒng)是對作戰(zhàn)過程中各步驟(或稱活動、環(huán)節(jié))發(fā)生的先后次序,以及同各個步驟相關(guān)的人力、資源、信息資料的調(diào)用等進行管理,從而實現(xiàn)空間作戰(zhàn)過程的自動化管理,是一種在作戰(zhàn)流程邏輯形式化表示的驅(qū)動下,通過軟件的執(zhí)行從而實現(xiàn)完全地定義、管理和執(zhí)行作戰(zhàn)流程的系統(tǒng)。本系統(tǒng)數(shù)據(jù)庫主要是由軌道數(shù)據(jù)庫、目標模型數(shù)據(jù)庫和三維場景數(shù)據(jù)庫組成。
3 空間目標軌道快速計算
空間目標—衛(wèi)星及空間碎片的軌道計算直接影響著仿真速度,是空間作戰(zhàn)仿真系統(tǒng)的關(guān)鍵技術(shù)之一[1]。
根據(jù)北美防空防天司令部發(fā)布的預(yù)報[2],目前在軌衛(wèi)星和空間碎片的總數(shù)是11 770,如若同時對這些空間目標進行軌道計算,計算的目標相當(dāng)多,計算量勢必會很大,仿真速度會有明顯的下降,所以提出一個高精度,更簡單的軌道計算方法。利用衛(wèi)星的初始軌道根數(shù)預(yù)先對空間目標軌道曲線進行了分割,篩選出落入視線內(nèi)的軌道曲線,只對可見的軌道進行計算,不可見部分不予考慮。因此軌道的快速計算方法分為兩個步驟:
(1) 軌道的可見性判斷;
(2) 可見軌道的計算。
3.1 軌道可見性判斷簡單描述
借用了透視裁剪體對軌道進行可見性判斷的預(yù)處理。透視裁剪體與空間目標軌道有3種位置關(guān)系如圖2所示:軌道完全可見;軌道部分可見;軌道完全不可見。以這3種位置關(guān)系為依據(jù),借用了推廣的Cohen—Sutherland端點編碼的算法[2]思想,對裁剪體六個表面分成的27個空間區(qū)域進行了6位二進制編碼,具體編碼方法可見文獻[3]。之后是對軌道曲線選取控制點,控制點的選取見圖3。利用這些控制點對軌道進行可見性判斷,本系統(tǒng)通過函數(shù)OrbitClip(parameter orbitpara)來實現(xiàn)軌道可見性判斷的。
圖2 透視裁剪體與軌道位置關(guān)系
3.1.1 控制點選取
如圖3所示,A,B,C,D四點是橢圓軌道的特殊點,這4個點將軌道曲線平均分成了4個部分,M,N,P,Q四點連線形成了包圍軌道的最小矩形。A,B,M三點連線組成了包圍1/4橢圓的三角形。因此我們將A,B,C,D,M,N,P,Q八個點叫做軌道的控制點。在進行可見性判斷的過程中還會陸續(xù)的增加控制點,如圖3中看到的L,K兩點。
3.1.2 軌道可見性判斷描述
首先計算8個控制點的ECI坐標,進行編碼并進行存儲,通過函數(shù)pcode( )實現(xiàn)編碼。根據(jù)M,N,P,Q四點的編碼情況判斷整個軌道曲線是否完全在裁剪體內(nèi)。若不能確定進而取軌道曲線的1/4進行判斷,這里選取曲線AB。判斷三角形ABM,若完全在裁剪體內(nèi),說明曲線AB是可見,如若不是分別考慮3種情況:
(1) A,B均在裁剪體內(nèi),用函數(shù)CountJoint1()實現(xiàn)。
(2) A,B有一點在裁剪體外,用函數(shù)CountJoint2()實現(xiàn)。
(3) A,B均在裁剪體外,用函數(shù)CountJoint3()實現(xiàn)。
利用了二分的思想來求取軌道曲線與裁剪體表面的交點,取曲線兩端點之間所夾真近點角的一半對應(yīng)的軌道曲線上的點作為二分點,如圖3中的Pm點所示。以Pm為一個端點分別判斷曲線PmA和曲線PmB,最終找到交點為止。具體算法的論述參見文獻[1]。
圖3 軌道控制點選取
3.2 可見軌道計算
軌道完全可見的情形可以直接用考慮J2項的軌道攝動模型進行計算。若軌道不完全可見,對于任意給定時刻t,首先對二體運動下的時間周期T取余運算得到tL,將存儲的交點所對應(yīng)的一個周期內(nèi)的時刻粗略求出(利用真近點角與運行時間的關(guān)系),將這些時刻與tL進行比較便能夠估計此時空間目標是處在哪個可見段上,然后加入攝動模型進行較為精確的計算。通過函數(shù)CountOrbit()完成軌道的計算。
4 空間環(huán)境建模與繪制
空間目標模型的建立與實時顯示也是本作戰(zhàn)仿真系統(tǒng)的關(guān)鍵技術(shù)之一。根據(jù)空間目標模型的復(fù)雜程度,我們對地球的繪制采用了紋理貼圖的方法,對于衛(wèi)星則是先在3D建模工具中實現(xiàn)然后通過OpenGL與3D文件的接口程序讀入。
4.1 地球的繪制
采用紋理貼圖的方式是繪制地球最簡單有效的方式,他可以更加真實、形象的顯示地球。為了簡化分析,將地球當(dāng)作球進行處理,采用球面的紋理映射方式對其進行貼圖,紋理圖片保存為位圖格式,首先是用利用函數(shù)AUX_RGBImageRec*LoadBMP(char *filename)完成對紋理數(shù)據(jù)的讀入,然后調(diào)用OpenGL中的glTexParameteri函數(shù)設(shè)置紋理過濾類型,調(diào)用gluBuild2DMipmaps()函數(shù)生成mipmap子集。
因為所采用的地圖是方形地圖,必須采用整球面的紋理映射方法[4]。關(guān)鍵點是建立物體坐標空間(x,y,z)與紋理空間坐標(u,v)的一一對應(yīng)關(guān)系,這里采用了基于自然參數(shù)化的整體球面映射,映射公式見(1):
以下是實現(xiàn)球面紋理映射的核心代碼:
//計算球形紋理坐標,vx,vy,vz為矢量正交化后的球面坐標
地球并非是靜止的,他有一定的自轉(zhuǎn)角度Angle,通過函數(shù)Rotate()來完成對Angle的更新。Rotate()由OnTimer()函數(shù)定時觸發(fā)。
4.2 衛(wèi)星的繪制
由于衛(wèi)星模型較復(fù)雜,OpenGL只提供一些畫點、線、面的基本函數(shù),因此利用OpenGL直接對衛(wèi)星進行繪制比較困難。這里利用了建模工具3DS MAX,然后通過編程實現(xiàn)3DS文件的調(diào)用。衛(wèi)星都是沿著固定軌道運轉(zhuǎn)的,每一時刻的位置不同,通過調(diào)用OpenGL中的glTranslatef()將局部坐標系平移到更新后的衛(wèi)星坐標上[4]。
衛(wèi)星的位置坐標更新是通過調(diào)用函數(shù)SatPos()實現(xiàn),他將計算出的衛(wèi)星ECI坐標讀入,通過OnTimer()函數(shù)的
定時觸發(fā)實現(xiàn)位置更新。
4.3 動畫的實現(xiàn)
利用OpenGL中的雙緩存技術(shù)實現(xiàn)了動畫的效果。該技術(shù)使用兩個前后臺和兩個緩存繪制畫面,在顯示前臺緩存內(nèi)容中的一幀畫面時,后臺緩存正在繪制下一幀畫面,當(dāng)后臺緩存繪制完畢,后臺緩存內(nèi)容便顯示在屏幕上,而前臺此時又在繪制下一幀畫面內(nèi)容[5]。具體的程序?qū)崿F(xiàn)是在場景繪制函數(shù)中調(diào)用SwapBuffers(m_pDC->GetSafeHdc())。系統(tǒng)三維實現(xiàn)如圖4所示。
圖4 系統(tǒng)三維動畫實現(xiàn)
5 結(jié) 語
系統(tǒng)采用了多文檔形式,可以同時顯示二維視圖、三維視圖和數(shù)據(jù)視圖。數(shù)據(jù)視圖主要是對衛(wèi)星的軌道參數(shù)以數(shù)據(jù)報告的形式給出,可以自行添加衛(wèi)星也可以從數(shù)據(jù)庫中添加,形式較靈活。采用了本文提出的空間目標軌道快速計算方法可以有效地提高仿真速度,以后研究的重點是如何進一步提高算法效率。本系統(tǒng)可以為航天偵察和決策提供更為直觀的顯示形式。
參考文獻
[1]Woo M.OpenGL 編程權(quán)威指南[M].北京:中國電力出版社,2001.
[2]http://www.celestrak.com/satcat/boxscore.asp.
[3]Donald Hearn,M.Pauline Baker.計算機圖形學(xué)[M].3版.蔡士杰,宋繼強,蔡敏,譯.北京:電子工業(yè)出版社,2005.
[4]代麗紅.衛(wèi)星在軌運行實時視景仿真系統(tǒng)的研究與實現(xiàn)[D].武漢:華中科技大學(xué),2005.
[5]彭劍,陳文彤,賈東樂,等.利用OpenGL實現(xiàn)的衛(wèi)星軌道可視化[J].計算機工程,2005,31(14):62—66.
[6]和平鴿工作室.OpenGL高級編程與可視化系統(tǒng)開發(fā)(高級編程篇)[M].北京:中國水利水電出版社,2003.
作者簡介 于 燕 女,1983年出生,山東章丘人,碩士研究生。主要研究方向為計算機圖形學(xué)與信息可視化。
湯曉安 男,1968年出生,副教授,博士。主要研究方向為計算機圖形學(xué)與信息可視化。
注:本文中所涉及到的圖表、注解、公式等內(nèi)容請以PDF格式閱讀原文。