弹目交会可视化命中点参数的精确计算

2015-12-26 06:36卢旭东
弹道学报 2015年3期
关键词:碰撞检测破片射线

陈 峰,卢旭东,丁 勇

(沈阳理工大学1.装备工程学院;2.信息工程学院 沈阳110159)

引战配合是武器系统中的一个重要环节,目的是使战斗部最大程度地杀伤目标。近些年随着目标导弹的复杂性提高和数字计算机技术特别是高分辨率显卡技术的快速发展,计算机可视化仿真成为研究引战配合问题的重要手段。传统的仿真系统一般通过概率密度积分的方法求解命中点的参数[1-3],此方法计算精度较差,而且无法精确计算破片命中点的坐标、命中数目、落角、击中动能等。王宏波等[4]基于目标三维实体模型提出了一种计算命中点参数的方法,但是未能考虑破片的速度衰减对命中点参数的影响,且该方法在程序的每个时间步长内要对所有的命中点进行遍历判断,导致程序的执行效率不高。王马法等[5]给出了破片命中点参数的理论计算模型,但是对命中点参数并没有给出具体的仿真实例进行验证。

本文基于三维可视化仿真系统,对破片命中点参数算法进行了深入的研究,在地面坐标系下,综合考虑了不同高度的大气压强和温度等因素对破片速度的影响。将破片的运动轨迹视作一条3D射线(通称Ray射线,具体参见下文),局部遍历求解命中点参数,即先为每个破片创建一个包围球[6-7],为目标模型的每个部件创建各自的包围球,遍历检测破片包围球与目标模型的全局包围球的碰撞是否相交;若相交,再检测破片的包围球,遍历与模型的各部件包围球的碰撞是否相交。之后通过程序存储发生碰撞的目标模型部件,同时将此时发生碰撞的每个破片包围球的方向矢量赋值给每条3D射线,局部遍历检测每条3D射线与所存储包围球的碰撞,存储目标模型部件三角形面元命中点参数。本文仿真实例表明:该算法极大地提高了程序的执行效率,计算精度更高(可遍历目标部件更多的三角形面元);有效地避免了传统算法因三角形数目过多导致计算量更大的不足;所得到的命中点参数数据对引战配合中毁伤概率的研究具有一定的参考价值。

1 目标模型

通过3DSMax建立目标三维几何模型(包括所需的各种纹理材质等),之后导入到XNA(Xbox/DirectX New Generation Architecture,基 于 DirectX游戏开发环境)[8-9],图1所示为目标模型和目标面元模型。

图1 目标导弹模型

在XNA中,首先导出目标模型所有的顶点位置坐标,存储目标模型各部件的三角形面元顶点信息,即以模型各个组成的部件为单元,采用分别定义的三角形集合存储每个部件的三角形面元信息。算法如下:

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); // }其中:参数i表示该目标面元每个三角形面元的信息;TriangleNum为模型每个部件的三角形面元的数目;arrayMeshIndices为每个部件顶点的索引数组;每 个 三 角 形 面 元 顶 点 为vi0(v0x,v0y,v0z),vi1(v1x,v1y,v1z),vi2(v2x,v2y,v2z),即每个三角形在地面坐标系中顶点的坐标值;hisNewTriangle为模型部件中每个三角形位置信息;Meshtriangle为模型每个部件三角形面元信息的集合数组。

2 破片命中点参数计算模型

本文的破片命中参数计算模型分成2部分,即破片包围球碰撞检测模型和检测后的破片Ray射线命中点参数计算模型。这里用球形破片近似代表模型的破片,通过给出战斗部静止状态下爆炸后产生破片群的空间飞散规律以及破片的初始速度,得出战斗部动态爆炸时破片动态的飞散特性。破片在动态飞散角内近似服从正态分布,算法很成熟,这里不再详述[10-11]

2.1 破片的包围球碰撞检测模型

在战斗部动态爆炸时,为每个破片和目标模型的各个部件创建各自的包围球,包围球的运动轨迹方程与所对应的动态破片运动方程一样。下面介绍破片包围球碰撞检测的计算模型。

如图2(a)所示,在3DSMax中建模时,目标模型由多个部件构成。在将模型导成供XNA调用的X文件后,在XNA中通过调用函数库中的骨骼矩阵将模型的各部分连接起来并在屏幕中进行显示。调用 XNA中BoundingSphere.CreateMerged(组合)方法将图2(a)中的模型各个部件的包围球组合成模型的全局包围球,如图2(b)所示。同理,创建破片的包围球(由于破片在建模时已经用球形破片代替,建模时破片只由一个部件构成,所以破片的部件包围球也为破片的全局包围球)。由于其原理与目标模型的包围球相同,这里不再给出破片包围球的示意图。

图2 目标模型的各部件包围球和全局包围球示意图

战斗部爆炸后,在地面坐标系,假设目标作匀速直线运动,破片的运动为一条射线,故起始阶段破片的包围球的运动方程为

式中:φ为飞散方向角,θ为位偏角,L表示包围球在空中飞行的距离。破片在飞行的过程中会受到空气阻力和重力的作用,由于破片的速度较高、质量较小,因此这里忽略重力的影响。空气阻力使破片的速度减小,衰减过程与空气的密度、破片的迎风面积以及阻力系数有关,根据牛顿运动定律,其运动微分方程为

式中:m为破片的质量;ρ为空气密度;v为破片的速度;Cx为空气阻力系数;S为破片的迎风面积,对于直径为D的球形破片,S=πD2/4。当破片的初速和飞行距离为v0和x时,由式(2)得到破片的运动衰减特性方程:

式中:Kα为破片的速度衰减系数,表征破片飞行过程中保存速度的能力。式(4)表明,破片的衰减系数与自身的质量、空气密度及空气阻力系数有关(空气阻力系数为马赫数的函数,经查阅相关资料,空气阻力系数近似取值为0.97)。由理想气体状态方程知,空气密度是压力和温度的函数,即

式中:R为气体常数,其值为287.04J/(kg·K);p为压强;T为温度。p,T均为破片飞行高度的函数,空气压强、密度和温度的变化均为破片飞行高度的函数,所参照的标准大气压为0.1MPa,标准温度为288.9K。上述参数的详细求解方程见文献[12-13]。

在动态破片的分散区和破片速度衰减的条件下研究各个破片包围球的碰撞检测,即在战斗部爆炸后,首先遍历破片包围球与目标模型的全局包围球的碰撞检测,这里调用XNA中的BoundingSphere.Intersects的方法检测破片的包围球和模型的全局包围球是否相交。若相交,再遍历此时该破片的包围球和模型各个部件包围球的碰撞检测。若破片的包围球与模型部件的包围球相交,此时记录破片的速度并将该速度转换成一条Ray射线,并同时存储模型部件中所有的三角形面元。之后用该Ray射线遍历模型部件的所有三角形面元精确求解破片的命中参数。由于目标模型部件的包围球数量有限,这样就不需要破片从战斗部爆炸开始就遍历目标三角形面元,而是先遍历破片包围球和模型部件包围球的碰撞检测,由此可显著提高程序的运行效率。

2.2 破片命中点参数的计算模型

2.2.1 Ray-3D射线的创建

通过包围球碰撞检测计算模型得到创建Ray射线的基本参数,即破片的运动方向和自上一帧以来运动的距离,用程序代码表示为

Vector3direction=currentPosition-lastPosition;

float distanceCovered=direction.Length();

direction.Normalize(); //ray方向归一化

Ray ray=new ray(lastPosition,direction);

其中,direction为此时Ray射线的方向(即破片的包围球与目标模型发生碰撞后破片的方向赋值给了Ray射线),这里进行单位化;currentPosition为Ray射线当前的位置坐标;lastPosition为Ray射线上一帧的位置坐标;distanceCovered为Ray射线运动方向和自上一帧以来运动的距离。获得了Ray射线的一个点和它的方向,创建一条Ray射线,并且检测Ray射线与模型部件包围球的碰撞。

2.2.2 Ray-Triangle碰撞检测模型

该计算模型分成2部分。首先找到射线与模型部件三角形面元的碰撞点。由于三角形面元和此相交点在同一个平面内,所以就转换成了2D问题,如图3所示。接下来要检测碰撞点是否在三角形的内部。

图3 3DRay-Triangle射线碰撞交点转换为2D

运用2个方法处理图3所示问题:①RayPlaneIntersection,给定一个Plane(目标模型某个三角形面元)和一条Ray射线相关参数,计算出射线与三角形面元之间的交点。②PointInsideTriangle,给定三角形面元的3个坐标和1个额外碰撞点参数,确定该碰撞点是否在三角形内部。如果在三角形面元内部就检测到了射线和模型的碰撞。下面具体介绍以上2个方法的实现。

2.2.3 Ray射线与Plane之间的碰撞点模型

这里模型的计算方法采用了基于矢量的方法,如图4所示。

由此时的Ray射线和1个三角形面元平面,可以得到ray.Direction和collisionPoint两点间的距离,图4中给出了该方法中的变量长度。

图4 Ray射线上碰撞点的位置

通过Ray射线的投影长度d2(位于三角形平面法线上)和三角形面元平面法线的距离d3易求得Ray射线起始点到平面的距离d1:

设Ray射线在平面法线上投影长度为d4,通过式(6)由Ray射线投影长度与Ray射线起始点到碰撞点向量投影长度,可得Ray射线与碰撞点之间的比例因子k:

Ray射线的方向为RrayDir=(RrayDirxRrayDiryRrayDirz)。

至此,由Ray射线的起始点A(之前破片包围球与目标模型部件包围球发生碰撞时破片的坐标)和式(7)可求得Ray射线与三角形面元碰撞点G的坐标:

2.2.4 碰撞点是否在三角形内部的检测模型

使用基于向量的方法检测碰撞点是否在三角形内部,如图5所示。

图5 检测碰撞点是否在三角形内部的示意图

图5 中,N0,N1,N2为某一个三角形面元的3个顶点,碰撞点为G,得到碰撞点G与N0的向量A=(AxAyAz),则A的分量为

设向量B=(BxByBz),为三角形面元顶点N0与N1之间的向量,则有

向量A和向量B的矢量积为向量n,用来判断碰撞点在三角形边界的哪一边,则n的分量为

当逆时针旋转向量A到向量B时,法向量指向三角形面元的上方,此时对应的碰撞点在三角形面元的外部,如图5(a);同理,若顺时针旋转向量A到向量B,法向量指向三角形面元的下方,此时对应的碰撞点在三角形面元的内部,如图5(b)。当Ray射线与三角形面元平行时,碰撞点不存在,可跳出程序,进而循环遍历与该部件其它三角形面元的交点。

2.2.5 射线与三角形面元的落角

通过上述计算模型求出射线与目标模型部件的三角形面元的交点,这里给出计算射线与三角形面元的落角的数学计算模型。由于一条射线和三角形面元的夹角并不能确定射线与三角形相交的唯一姿态,如图6所示,这里通过计算射线与三角形面元的夹角α和射线与三角形面元所在轴(目标导弹的弹轴)的夹角β,可以唯一确定射线与三角形面元的姿态。

图6 射线与三角形面元的夹角

由式(11)和Ray射线的方向可求得Ray射线与三角形面元法向量的夹角为

则Ray射线与三角形面元的夹角为

设此时目标模型的轴的方向向量为l=(lxlylz),则Ray射线与轴的夹角为

至此,即可求出Ray射线与目标面元的夹角和与目标轴线的夹角,Ray射线与三角形目标元的交点坐标及击中速度,从而根据破片的质量求出击中面元的动能等。

3 计算流程

求解破片命中目标的计算流程主要由包围球的碰撞检测流程和Ray射线命中目标计算流程组成,如图7所示。

图7 求解破片命中目标的计算流程图

通过以上破片击中目标的计算流程图,实现了Ray射线局部遍历目标模型部件三角形面元,这样可以尽可能地增加目标上三角形面元的数目,使其保持在合理的范围内,进而可以精确地得到命中点参数,提高了命中点参数的精度和程序的运行效率。

4 仿真实例

根据破片命中点计算数学模型,基于XNA以可视化的方式动态地显示弹目遭遇、战斗部起爆、破片动态飞散和破片的命中点坐标等。仿真程序采用Microsoft Visual Studio 2010语言编写,使用XNA函数库为图形接口,精确计算并记录破片命中点参数的数据。仿真软件界面如图8所示,由于篇幅有限,这里只显示部分。

图8(a)给出了初始化导弹和目标的姿态角参数,图8(b)给出了目标质心在地面坐标系下的坐标,图8(c)给出了导弹在地面坐标系下的坐标、导弹的静态飞散角和飞散方向角、破片数、破片的质量,天线主瓣倾角和引信作用距离等,脱靶量和脱靶方位角随机生成(计算中考虑了破片在不同高度时上述因素对破片速度衰减的影响),仿真实例生成的命中结果如图9所示。

图8 射线与三角形面元夹角的仿真计算

图9 (a)生成了导弹战斗部瞬间爆炸及其破片动态飞散的可视化效果,图9(b)显示了破片命中目标命中点分布情况,图9(c)实时存储了命中点的参数和落角(与目标模型三角形面元的夹角和与目标模型轴线的夹角)并最终以可视化的方式将上述命中点参数数据显示出来。其中,命中目标的破片数为615,占破片总数的20.5%,存储所得到的数据以便进一步分析和优化。

5 结论

本文提出了一种精确计算命中点参数的数学模型,可以有效地克服传统计算方法的不足。该算法提高了计算精度和程序的执行效率,从而所得到的仿真结果更加真实可靠;更好地满足了引战配合可视化仿真的需要,效果理想;为地空和空空导弹引战配合仿真软件的研制提供了参考。

图9 破片命中结果

[1]张志鸿,周春生.防空导弹引信与战斗部配合效率和战斗部设计[M].北京:中国宇航出版社,1994:77-100.ZHANG Zhi-hong,ZHOU Chun-sheng.Air defense missile fuze and warhead designed with efficiency[M].Beijing:China Astronautic Publishing House,1994:77-100.(in Chinese)

[2]李廷杰.导弹武器系统的效率及其分析[M].北京:国防工业出版社,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]王宏波,庄志洪,张京国,等.引战配合可视化仿真命中点参数精确计算[J].系统仿真学报,2010,22(4):1 071-1 074.WANG Hong-bo,ZHUANG Zhi-hong,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]王马法,李翔宇,卢芳云,等.弹目交会中破片命中点参数计算模型研究[J].弹道学报,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游戏开发基础[M].北京:清华大学出版社,2008.GENG Zhao-ying.Direct and XNA game development foundation[M].Beijing:Tsinghua University Press,2008.(in Chinese)

[9]AaronReed.学习XNA游戏编程[M].北京:清华大学出版社,2011.AaronReed.Learning XNA game programming[M].Beijng:Tsinghua University Press,2011.(in Chinese)

[10]刘彤.防空战斗部杀伤威力评估方法研究[D].南京:南京理工大学,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]庄志洪,路建伟,张清泰,等.破片速度衰减对命中目标部位的影响[J].弹道学报,1999.11(2):5-8.ZHUANG Zhi-hong.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]卢永刚,钱立新,杨云斌,等.目标易损性/战斗部威力评估方法[J].弹道学报,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]魏暄荪,刘昌礼,黄长强.导弹/弹丸飞行力学[M].西安:空军工程学院,1996.WEI Xuan-sun,LIU Chang-li,HUANG Chang-qiang.Missile/projectile flight mechanics[M].Xi’an:Air Force Engineering Institute,1996.(in Chinese)

猜你喜欢
碰撞检测破片射线
角的度量错例分析
基于动力学补偿的机器人电机力矩误差碰撞检测
破片群作用下复合材料层合板近场动力学损伤模拟*
全新预测碰撞检测系统
一种基于LS-DYNA的炮弹破片极限穿透速度仿真方法∗
三棱柱形大长径比预制破片速度衰减规律研究
“直线、射线、线段”检测题
基于BIM的铁路信号室外设备布置与碰撞检测方法
半预制破片战斗部破片威力分析
基于Virtools的虚拟灭火系统碰撞检测设计与实现