|
减小字体 增大字体
摘 要 本文介绍了在开发基于HLA的分布式电子对抗模拟仿真系统时实现电子对抗区域的传输和显示的原理和具体研究的重点。RTI实际上是一个中间件(Middleware),是HLA仿真目前,复杂区域的表示方法可以采用多边形链表方式和CRgn类表示方式。对于二者优缺点的比较,参考文献3已经进行了较为详细的分析,这里研究的电子对抗区域传输和显示方法使用的是CRgn类表示方式。 对于区域数据Windows提供的HRGN结构,在MFC中用CRgn类对该结构进行了封装,CRgn类支持圆形(椭圆形)、矩形以及多边形区域的创建和显示,同时支持区域之间的各种操作,如和、差、交、并、异或等。因此通过解析CRgn类的数据组织形式,便可以实现各种电子对抗区域的表示和传输。 在Window中,对区域的数据是通过如下结构表示的: typedef struct _RGNDATA { RGNDATAHEADER rdh; //区域数据的头信息 Char Buffer[1]; //区域数据指针,指向矩形结构(RECT) } RGNDATA; typedef struct _RGNDATAHEADER { DWORD dwSize; //区域结构头的大小 DWORD iType; //区域的类型,为RDH_RECTANGLES DWORD nCount; //构成区域的矩形数目 DWORD nRgnSize; //区域数据大小 RECT rcBound; //区域的外接矩形 }RGNDATAHEADER; 从上述的数据结构可以看出,Windows对区域的表示,无论是基本的图形,如圆、矩形、多边形等,还是各种复杂的合成区域,都是通过用有限个相互毗邻的矩形坐标点来完成的。 
图 2 如图2所示,这些矩形的坐标点(左上和右下)代表了区域的包络。同时需要注意的是尽管矩形的坐标点代表了区域的包络信息,但这些包络信息的排列顺序是按照对区域由上至下进行扫描时得到的,因此在由这些矩形坐标点反求区域时,不能简单地用多边形函数进行连接得到。 2.2 区域的产生方法 通过联邦成员的模型计算,可以得到不同电磁辐射单位作用区域以及相互之间的叠加、削减关系。以通信畅通区域为例,多个通信站同时工作时,联邦成员软件使用Windows GDI API函数CreateEllipticRgn()产生每个通信站的通信畅通区域,该函数的结构定义如下: HRGN CreateEllipticRgn ( int nLeftRect, // 椭圆外接矩形左上角x轴坐标 int nTopRect, // 椭圆外接矩形左上角y轴坐标 int nRightRect, // 椭圆外接矩形右下角x轴坐标 int nBottomRect // 椭圆外接矩形右下角y轴坐标 ); 当多个通信畅通区域相互叠加时,使用Windows GDI API函数CombineRgn()产生合成通信畅通区域,该函数的结构定义如下: int CombineRgn( HRGN hrgnDest, // 合成目标区域句柄 HRGN hrgnSrc1, // 源区域1句柄 HRGN hrgnSrc2, // 源区域2句柄 int fnCombineMode // 合成方法 ); 此时,第四个参数fnCombineMode为 RGN_OR,从而形成合成通信畅通区域,如图3中的浅蓝色区域所示。 图3干扰前的合成通信畅通区域 当通信站受到通信干扰压制后,其合成通信畅通区域大幅度缩小,同样,使用Windows GDI API函数CombineRgn()产生合成通信畅通区域,第四个参数fnCombineMode为 RGN_OR和RGN_DIFF,从而形成干扰后的合成通信畅通区域,如图4中的深蓝色区域所示,深蓝色区域中的空洞表示通信站受到抵近 转贴于 范文论文吧 http://www.fwlw8.com[1] [2] 下一页
|