陳 峰,盧旭東,丁 勇
(沈陽(yáng)理工大學(xué)1.裝備工程學(xué)院;2.信息工程學(xué)院 沈陽(yáng)110159)
引戰(zhàn)配合是武器系統(tǒng)中的一個(gè)重要環(huán)節(jié),目的是使戰(zhàn)斗部最大程度地殺傷目標(biāo)。近些年隨著目標(biāo)導(dǎo)彈的復(fù)雜性提高和數(shù)字計(jì)算機(jī)技術(shù)特別是高分辨率顯卡技術(shù)的快速發(fā)展,計(jì)算機(jī)可視化仿真成為研究引戰(zhàn)配合問(wèn)題的重要手段。傳統(tǒng)的仿真系統(tǒng)一般通過(guò)概率密度積分的方法求解命中點(diǎn)的參數(shù)[1-3],此方法計(jì)算精度較差,而且無(wú)法精確計(jì)算破片命中點(diǎn)的坐標(biāo)、命中數(shù)目、落角、擊中動(dòng)能等。王宏波等[4]基于目標(biāo)三維實(shí)體模型提出了一種計(jì)算命中點(diǎn)參數(shù)的方法,但是未能考慮破片的速度衰減對(duì)命中點(diǎn)參數(shù)的影響,且該方法在程序的每個(gè)時(shí)間步長(zhǎng)內(nèi)要對(duì)所有的命中點(diǎn)進(jìn)行遍歷判斷,導(dǎo)致程序的執(zhí)行效率不高。王馬法等[5]給出了破片命中點(diǎn)參數(shù)的理論計(jì)算模型,但是對(duì)命中點(diǎn)參數(shù)并沒(méi)有給出具體的仿真實(shí)例進(jìn)行驗(yàn)證。
本文基于三維可視化仿真系統(tǒng),對(duì)破片命中點(diǎn)參數(shù)算法進(jìn)行了深入的研究,在地面坐標(biāo)系下,綜合考慮了不同高度的大氣壓強(qiáng)和溫度等因素對(duì)破片速度的影響。將破片的運(yùn)動(dòng)軌跡視作一條3D射線(通稱(chēng)Ray射線,具體參見(jiàn)下文),局部遍歷求解命中點(diǎn)參數(shù),即先為每個(gè)破片創(chuàng)建一個(gè)包圍球[6-7],為目標(biāo)模型的每個(gè)部件創(chuàng)建各自的包圍球,遍歷檢測(cè)破片包圍球與目標(biāo)模型的全局包圍球的碰撞是否相交;若相交,再檢測(cè)破片的包圍球,遍歷與模型的各部件包圍球的碰撞是否相交。之后通過(guò)程序存儲(chǔ)發(fā)生碰撞的目標(biāo)模型部件,同時(shí)將此時(shí)發(fā)生碰撞的每個(gè)破片包圍球的方向矢量賦值給每條3D射線,局部遍歷檢測(cè)每條3D射線與所存儲(chǔ)包圍球的碰撞,存儲(chǔ)目標(biāo)模型部件三角形面元命中點(diǎn)參數(shù)。本文仿真實(shí)例表明:該算法極大地提高了程序的執(zhí)行效率,計(jì)算精度更高(可遍歷目標(biāo)部件更多的三角形面元);有效地避免了傳統(tǒng)算法因三角形數(shù)目過(guò)多導(dǎo)致計(jì)算量更大的不足;所得到的命中點(diǎn)參數(shù)數(shù)據(jù)對(duì)引戰(zhàn)配合中毀傷概率的研究具有一定的參考價(jià)值。
通過(guò)3DSMax建立目標(biāo)三維幾何模型(包括所需的各種紋理材質(zhì)等),之后導(dǎo)入到XNA(Xbox/DirectX New Generation Architecture,基 于 DirectX游戲開(kāi)發(fā)環(huán)境)[8-9],圖1所示為目標(biāo)模型和目標(biāo)面元模型。
圖1 目標(biāo)導(dǎo)彈模型
在XNA中,首先導(dǎo)出目標(biāo)模型所有的頂點(diǎn)位置坐標(biāo),存儲(chǔ)目標(biāo)模型各部件的三角形面元頂點(diǎn)信息,即以模型各個(gè)組成的部件為單元,采用分別定義的三角形集合存儲(chǔ)每個(gè)部件的三角形面元信息。算法如下:
for(inti=0;i<TranagleNum;i++)
{ int index 0=arrayMeshIndices[3*i+0];
int index 1=arrayMeshIndices[3*i+1];
int index 2=arrayMeshIndices[3*i+2];
Vector 3v0=arrayMeshVertices[index 0];
Vector 3v1=arrayMeshVertices[index 1];
Vector 3v2=arrayMeshVertices[index 2];
Triangle hisNewTriangle=new Triangle (v0,v1,v2);
Meshtriangle.Add(hisNewTriangle); // }其中:參數(shù)i表示該目標(biāo)面元每個(gè)三角形面元的信息;TriangleNum為模型每個(gè)部件的三角形面元的數(shù)目;arrayMeshIndices為每個(gè)部件頂點(diǎn)的索引數(shù)組;每 個(gè) 三 角 形 面 元 頂 點(diǎn) 為vi0(v0x,v0y,v0z),vi1(v1x,v1y,v1z),vi2(v2x,v2y,v2z),即每個(gè)三角形在地面坐標(biāo)系中頂點(diǎn)的坐標(biāo)值;hisNewTriangle為模型部件中每個(gè)三角形位置信息;Meshtriangle為模型每個(gè)部件三角形面元信息的集合數(shù)組。
本文的破片命中參數(shù)計(jì)算模型分成2部分,即破片包圍球碰撞檢測(cè)模型和檢測(cè)后的破片Ray射線命中點(diǎn)參數(shù)計(jì)算模型。這里用球形破片近似代表模型的破片,通過(guò)給出戰(zhàn)斗部靜止?fàn)顟B(tài)下爆炸后產(chǎn)生破片群的空間飛散規(guī)律以及破片的初始速度,得出戰(zhàn)斗部動(dòng)態(tài)爆炸時(shí)破片動(dòng)態(tài)的飛散特性。破片在動(dòng)態(tài)飛散角內(nèi)近似服從正態(tài)分布,算法很成熟,這里不再詳述[10-11]
在戰(zhàn)斗部動(dòng)態(tài)爆炸時(shí),為每個(gè)破片和目標(biāo)模型的各個(gè)部件創(chuàng)建各自的包圍球,包圍球的運(yùn)動(dòng)軌跡方程與所對(duì)應(yīng)的動(dòng)態(tài)破片運(yùn)動(dòng)方程一樣。下面介紹破片包圍球碰撞檢測(cè)的計(jì)算模型。
如圖2(a)所示,在3DSMax中建模時(shí),目標(biāo)模型由多個(gè)部件構(gòu)成。在將模型導(dǎo)成供XNA調(diào)用的X文件后,在XNA中通過(guò)調(diào)用函數(shù)庫(kù)中的骨骼矩陣將模型的各部分連接起來(lái)并在屏幕中進(jìn)行顯示。調(diào)用 XNA中BoundingSphere.CreateMerged(組合)方法將圖2(a)中的模型各個(gè)部件的包圍球組合成模型的全局包圍球,如圖2(b)所示。同理,創(chuàng)建破片的包圍球(由于破片在建模時(shí)已經(jīng)用球形破片代替,建模時(shí)破片只由一個(gè)部件構(gòu)成,所以破片的部件包圍球也為破片的全局包圍球)。由于其原理與目標(biāo)模型的包圍球相同,這里不再給出破片包圍球的示意圖。
圖2 目標(biāo)模型的各部件包圍球和全局包圍球示意圖
戰(zhàn)斗部爆炸后,在地面坐標(biāo)系,假設(shè)目標(biāo)作勻速直線運(yùn)動(dòng),破片的運(yùn)動(dòng)為一條射線,故起始階段破片的包圍球的運(yùn)動(dòng)方程為
式中:φ為飛散方向角,θ為位偏角,L表示包圍球在空中飛行的距離。破片在飛行的過(guò)程中會(huì)受到空氣阻力和重力的作用,由于破片的速度較高、質(zhì)量較小,因此這里忽略重力的影響??諝庾枇κ蛊破乃俣葴p小,衰減過(guò)程與空氣的密度、破片的迎風(fēng)面積以及阻力系數(shù)有關(guān),根據(jù)牛頓運(yùn)動(dòng)定律,其運(yùn)動(dòng)微分方程為
式中:m為破片的質(zhì)量;ρ為空氣密度;v為破片的速度;Cx為空氣阻力系數(shù);S為破片的迎風(fēng)面積,對(duì)于直徑為D的球形破片,S=πD2/4。當(dāng)破片的初速和飛行距離為v0和x時(shí),由式(2)得到破片的運(yùn)動(dòng)衰減特性方程:
式中:Kα為破片的速度衰減系數(shù),表征破片飛行過(guò)程中保存速度的能力。式(4)表明,破片的衰減系數(shù)與自身的質(zhì)量、空氣密度及空氣阻力系數(shù)有關(guān)(空氣阻力系數(shù)為馬赫數(shù)的函數(shù),經(jīng)查閱相關(guān)資料,空氣阻力系數(shù)近似取值為0.97)。由理想氣體狀態(tài)方程知,空氣密度是壓力和溫度的函數(shù),即
式中:R為氣體常數(shù),其值為287.04J/(kg·K);p為壓強(qiáng);T為溫度。p,T均為破片飛行高度的函數(shù),空氣壓強(qiáng)、密度和溫度的變化均為破片飛行高度的函數(shù),所參照的標(biāo)準(zhǔn)大氣壓為0.1MPa,標(biāo)準(zhǔn)溫度為288.9K。上述參數(shù)的詳細(xì)求解方程見(jiàn)文獻(xiàn)[12-13]。
在動(dòng)態(tài)破片的分散區(qū)和破片速度衰減的條件下研究各個(gè)破片包圍球的碰撞檢測(cè),即在戰(zhàn)斗部爆炸后,首先遍歷破片包圍球與目標(biāo)模型的全局包圍球的碰撞檢測(cè),這里調(diào)用XNA中的BoundingSphere.Intersects的方法檢測(cè)破片的包圍球和模型的全局包圍球是否相交。若相交,再遍歷此時(shí)該破片的包圍球和模型各個(gè)部件包圍球的碰撞檢測(cè)。若破片的包圍球與模型部件的包圍球相交,此時(shí)記錄破片的速度并將該速度轉(zhuǎn)換成一條Ray射線,并同時(shí)存儲(chǔ)模型部件中所有的三角形面元。之后用該Ray射線遍歷模型部件的所有三角形面元精確求解破片的命中參數(shù)。由于目標(biāo)模型部件的包圍球數(shù)量有限,這樣就不需要破片從戰(zhàn)斗部爆炸開(kāi)始就遍歷目標(biāo)三角形面元,而是先遍歷破片包圍球和模型部件包圍球的碰撞檢測(cè),由此可顯著提高程序的運(yùn)行效率。
2.2.1 Ray-3D射線的創(chuàng)建
通過(guò)包圍球碰撞檢測(cè)計(jì)算模型得到創(chuàng)建Ray射線的基本參數(shù),即破片的運(yùn)動(dòng)方向和自上一幀以來(lái)運(yùn)動(dòng)的距離,用程序代碼表示為
Vector3direction=currentPosition-lastPosition;
float distanceCovered=direction.Length();
direction.Normalize(); //ray方向歸一化
Ray ray=new ray(lastPosition,direction);
其中,direction為此時(shí)Ray射線的方向(即破片的包圍球與目標(biāo)模型發(fā)生碰撞后破片的方向賦值給了Ray射線),這里進(jìn)行單位化;currentPosition為Ray射線當(dāng)前的位置坐標(biāo);lastPosition為Ray射線上一幀的位置坐標(biāo);distanceCovered為Ray射線運(yùn)動(dòng)方向和自上一幀以來(lái)運(yùn)動(dòng)的距離。獲得了Ray射線的一個(gè)點(diǎn)和它的方向,創(chuàng)建一條Ray射線,并且檢測(cè)Ray射線與模型部件包圍球的碰撞。
2.2.2 Ray-Triangle碰撞檢測(cè)模型
該計(jì)算模型分成2部分。首先找到射線與模型部件三角形面元的碰撞點(diǎn)。由于三角形面元和此相交點(diǎn)在同一個(gè)平面內(nèi),所以就轉(zhuǎn)換成了2D問(wèn)題,如圖3所示。接下來(lái)要檢測(cè)碰撞點(diǎn)是否在三角形的內(nèi)部。
圖3 3DRay-Triangle射線碰撞交點(diǎn)轉(zhuǎn)換為2D
運(yùn)用2個(gè)方法處理圖3所示問(wèn)題:①RayPlaneIntersection,給定一個(gè)Plane(目標(biāo)模型某個(gè)三角形面元)和一條Ray射線相關(guān)參數(shù),計(jì)算出射線與三角形面元之間的交點(diǎn)。②PointInsideTriangle,給定三角形面元的3個(gè)坐標(biāo)和1個(gè)額外碰撞點(diǎn)參數(shù),確定該碰撞點(diǎn)是否在三角形內(nèi)部。如果在三角形面元內(nèi)部就檢測(cè)到了射線和模型的碰撞。下面具體介紹以上2個(gè)方法的實(shí)現(xiàn)。
2.2.3 Ray射線與Plane之間的碰撞點(diǎn)模型
這里模型的計(jì)算方法采用了基于矢量的方法,如圖4所示。
由此時(shí)的Ray射線和1個(gè)三角形面元平面,可以得到ray.Direction和collisionPoint兩點(diǎn)間的距離,圖4中給出了該方法中的變量長(zhǎng)度。
圖4 Ray射線上碰撞點(diǎn)的位置
通過(guò)Ray射線的投影長(zhǎng)度d2(位于三角形平面法線上)和三角形面元平面法線的距離d3易求得Ray射線起始點(diǎn)到平面的距離d1:
設(shè)Ray射線在平面法線上投影長(zhǎng)度為d4,通過(guò)式(6)由Ray射線投影長(zhǎng)度與Ray射線起始點(diǎn)到碰撞點(diǎn)向量投影長(zhǎng)度,可得Ray射線與碰撞點(diǎn)之間的比例因子k:
Ray射線的方向?yàn)镽rayDir=(RrayDirxRrayDiryRrayDirz)。
至此,由Ray射線的起始點(diǎn)A(之前破片包圍球與目標(biāo)模型部件包圍球發(fā)生碰撞時(shí)破片的坐標(biāo))和式(7)可求得Ray射線與三角形面元碰撞點(diǎn)G的坐標(biāo):
2.2.4 碰撞點(diǎn)是否在三角形內(nèi)部的檢測(cè)模型
使用基于向量的方法檢測(cè)碰撞點(diǎn)是否在三角形內(nèi)部,如圖5所示。
圖5 檢測(cè)碰撞點(diǎn)是否在三角形內(nèi)部的示意圖
圖5 中,N0,N1,N2為某一個(gè)三角形面元的3個(gè)頂點(diǎn),碰撞點(diǎn)為G,得到碰撞點(diǎn)G與N0的向量A=(AxAyAz),則A的分量為
設(shè)向量B=(BxByBz),為三角形面元頂點(diǎn)N0與N1之間的向量,則有
向量A和向量B的矢量積為向量n,用來(lái)判斷碰撞點(diǎn)在三角形邊界的哪一邊,則n的分量為
當(dāng)逆時(shí)針旋轉(zhuǎn)向量A到向量B時(shí),法向量指向三角形面元的上方,此時(shí)對(duì)應(yīng)的碰撞點(diǎn)在三角形面元的外部,如圖5(a);同理,若順時(shí)針旋轉(zhuǎn)向量A到向量B,法向量指向三角形面元的下方,此時(shí)對(duì)應(yīng)的碰撞點(diǎn)在三角形面元的內(nèi)部,如圖5(b)。當(dāng)Ray射線與三角形面元平行時(shí),碰撞點(diǎn)不存在,可跳出程序,進(jìn)而循環(huán)遍歷與該部件其它三角形面元的交點(diǎn)。
2.2.5 射線與三角形面元的落角
通過(guò)上述計(jì)算模型求出射線與目標(biāo)模型部件的三角形面元的交點(diǎn),這里給出計(jì)算射線與三角形面元的落角的數(shù)學(xué)計(jì)算模型。由于一條射線和三角形面元的夾角并不能確定射線與三角形相交的唯一姿態(tài),如圖6所示,這里通過(guò)計(jì)算射線與三角形面元的夾角α和射線與三角形面元所在軸(目標(biāo)導(dǎo)彈的彈軸)的夾角β,可以唯一確定射線與三角形面元的姿態(tài)。
圖6 射線與三角形面元的夾角
由式(11)和Ray射線的方向可求得Ray射線與三角形面元法向量的夾角為
則Ray射線與三角形面元的夾角為
設(shè)此時(shí)目標(biāo)模型的軸的方向向量為l=(lxlylz),則Ray射線與軸的夾角為
至此,即可求出Ray射線與目標(biāo)面元的夾角和與目標(biāo)軸線的夾角,Ray射線與三角形目標(biāo)元的交點(diǎn)坐標(biāo)及擊中速度,從而根據(jù)破片的質(zhì)量求出擊中面元的動(dòng)能等。
求解破片命中目標(biāo)的計(jì)算流程主要由包圍球的碰撞檢測(cè)流程和Ray射線命中目標(biāo)計(jì)算流程組成,如圖7所示。
圖7 求解破片命中目標(biāo)的計(jì)算流程圖
通過(guò)以上破片擊中目標(biāo)的計(jì)算流程圖,實(shí)現(xiàn)了Ray射線局部遍歷目標(biāo)模型部件三角形面元,這樣可以盡可能地增加目標(biāo)上三角形面元的數(shù)目,使其保持在合理的范圍內(nèi),進(jìn)而可以精確地得到命中點(diǎn)參數(shù),提高了命中點(diǎn)參數(shù)的精度和程序的運(yùn)行效率。
根據(jù)破片命中點(diǎn)計(jì)算數(shù)學(xué)模型,基于XNA以可視化的方式動(dòng)態(tài)地顯示彈目遭遇、戰(zhàn)斗部起爆、破片動(dòng)態(tài)飛散和破片的命中點(diǎn)坐標(biāo)等。仿真程序采用Microsoft Visual Studio 2010語(yǔ)言編寫(xiě),使用XNA函數(shù)庫(kù)為圖形接口,精確計(jì)算并記錄破片命中點(diǎn)參數(shù)的數(shù)據(jù)。仿真軟件界面如圖8所示,由于篇幅有限,這里只顯示部分。
圖8(a)給出了初始化導(dǎo)彈和目標(biāo)的姿態(tài)角參數(shù),圖8(b)給出了目標(biāo)質(zhì)心在地面坐標(biāo)系下的坐標(biāo),圖8(c)給出了導(dǎo)彈在地面坐標(biāo)系下的坐標(biāo)、導(dǎo)彈的靜態(tài)飛散角和飛散方向角、破片數(shù)、破片的質(zhì)量,天線主瓣傾角和引信作用距離等,脫靶量和脫靶方位角隨機(jī)生成(計(jì)算中考慮了破片在不同高度時(shí)上述因素對(duì)破片速度衰減的影響),仿真實(shí)例生成的命中結(jié)果如圖9所示。
圖8 射線與三角形面元夾角的仿真計(jì)算
圖9 (a)生成了導(dǎo)彈戰(zhàn)斗部瞬間爆炸及其破片動(dòng)態(tài)飛散的可視化效果,圖9(b)顯示了破片命中目標(biāo)命中點(diǎn)分布情況,圖9(c)實(shí)時(shí)存儲(chǔ)了命中點(diǎn)的參數(shù)和落角(與目標(biāo)模型三角形面元的夾角和與目標(biāo)模型軸線的夾角)并最終以可視化的方式將上述命中點(diǎn)參數(shù)數(shù)據(jù)顯示出來(lái)。其中,命中目標(biāo)的破片數(shù)為615,占破片總數(shù)的20.5%,存儲(chǔ)所得到的數(shù)據(jù)以便進(jìn)一步分析和優(yōu)化。
本文提出了一種精確計(jì)算命中點(diǎn)參數(shù)的數(shù)學(xué)模型,可以有效地克服傳統(tǒng)計(jì)算方法的不足。該算法提高了計(jì)算精度和程序的執(zhí)行效率,從而所得到的仿真結(jié)果更加真實(shí)可靠;更好地滿足了引戰(zhàn)配合可視化仿真的需要,效果理想;為地空和空空導(dǎo)彈引戰(zhàn)配合仿真軟件的研制提供了參考。
圖9 破片命中結(jié)果
[1]張志鴻,周春生.防空導(dǎo)彈引信與戰(zhàn)斗部配合效率和戰(zhàn)斗部設(shè)計(jì)[M].北京:中國(guó)宇航出版社,1994:77-100.ZHANG Zhi-h(huán)ong,ZHOU Chun-sheng.Air defense missile fuze and warhead designed with efficiency[M].Beijing:China Astronautic Publishing House,1994:77-100.(in Chinese)
[2]李廷杰.導(dǎo)彈武器系統(tǒng)的效率及其分析[M].北京:國(guó)防工業(yè)出版社,2000.LI Ting-jie.The effectiveness of missile weapon system and its analysis[M].Beijing:National Defense Industry Press,2000.(in Chinese)
[3]BUSH J T.Visualization and animation of a missile/target encounter[D].USA:Air Force Institute of Technology,USAF,1997.
[4]王宏波,莊志洪,張京國(guó),等.引戰(zhàn)配合可視化仿真命中點(diǎn)參數(shù)精確計(jì)算[J].系統(tǒng)仿真學(xué)報(bào),2010,22(4):1 071-1 074.WANG Hong-bo,ZHUANG Zhi-h(huán)ong,ZHANG Jing-guo,et al.Accurate calculation of hitting point parameters in visual simulation of fuze-warhead coordination[J].Journal of System Simulation,2010,22(4):1 071-1 074.(in Chinese)
[5]王馬法,李翔宇,盧芳云,等.彈目交會(huì)中破片命中點(diǎn)參數(shù)計(jì)算模型研究[J].彈道學(xué)報(bào),2012,24(2):50-54.WANG Ma-fa,LI Xiang-yu,LU Fang-yun,et al.A model of calculating hitting point parameters of fragment in waehead/target encounter[J].Journal of Ballistics,2012,24(2):50-54.(in Chinese)
[6]MILES R,MUSGRAVE D.Microsoft XNA game studio 4.0[M].USA:A Division of Corporation One Microsoft Way,2011:300-500.
[7]MILLER T,JOHSON D.XNA game studio 4.0programming[M].USA:U.S.Corporate and Government Sales,2011:400-482.
[8]耿肇英.Direct 3D與XNA游戲開(kāi)發(fā)基礎(chǔ)[M].北京:清華大學(xué)出版社,2008.GENG Zhao-ying.Direct and XNA game development foundation[M].Beijing:Tsinghua University Press,2008.(in Chinese)
[9]AaronReed.學(xué)習(xí)XNA游戲編程[M].北京:清華大學(xué)出版社,2011.AaronReed.Learning XNA game programming[M].Beijng:Tsinghua University Press,2011.(in Chinese)
[10]劉彤.防空戰(zhàn)斗部殺傷威力評(píng)估方法研究[D].南京:南京理工大學(xué),2004.LIU Tong.Research on the lethality assessment method of anti-air warhead[D].Nanjing:Nanjing University of Science and Technology,2004.(in Chinese)
[11]莊志洪,路建偉,張清泰,等.破片速度衰減對(duì)命中目標(biāo)部位的影響[J].彈道學(xué)報(bào),1999.11(2):5-8.ZHUANG Zhi-h(huán)ong.LU Jian-wei,ZHANG Qing-tai,et al.Effects of fragments velocity fade on hitting point[J].Journal of Ballistics,1999,11(2):5-8.(in Chinese)
[12]盧永剛,錢(qián)立新,楊云斌,等.目標(biāo)易損性/戰(zhàn)斗部威力評(píng)估方法[J].彈道學(xué)報(bào),2005,17(1):46-52.LU Yong-gang,QIAN Li-xin,YANG Yun-bin,et al.Vulnerability/lethality assessment method based on virtual model[J].Journal of Ballistics.2005,17(1):46-52.(in Chinese)
[13]魏暄蓀,劉昌禮,黃長(zhǎng)強(qiáng).導(dǎo)彈/彈丸飛行力學(xué)[M].西安:空軍工程學(xué)院,1996.WEI Xuan-sun,LIU Chang-li,HUANG Chang-qiang.Missile/projectile flight mechanics[M].Xi’an:Air Force Engineering Institute,1996.(in Chinese)