又开始写博客了,懒了一段时间,决定还是要从新开始,记录学习和工作中的心得体会。
本篇主要是总结下RCS数据可视化的开发思路和需要注意的问题。
RCS的概念:
RCS就是雷达截面积,这里不探讨专业知识,仅仅是来说明下如何进行RCS仿真文件的可视化。
仿真文件分析:
仿真文件的一般格式为:
theta, fa E(theta) E(fa)
例如
0 10 3.12 4.18 xx xx
0 15 xx xx xx xx
.............................................
.............................................
这样的文件,其中0表示theta角度,范围是0-PI , 10表示fa角度,范围是0-2PI。后面的3.12是E(theta), 4.18是E(fa)。
假设有这样的仿真文件,每间隔5度或者10度,来记录E(theta)和E(fa)。
基本的可视化思路:
Step1:
对于E(theta)和E(fa) 计算E(total)的DB数值
利用 E(total)的最大值和最小值来进行色标的定义,然后计算所有的仿真结果的E(total)对应的Color颜色数值。
Step2:
选取合适的半径,如果想绘制出比较好的RCS效果,半径的选取就很重要了。
一般可以 对于E(theta)和E(fa)计算功率,然后对功率power去log,并进行线性放大和太高。这个过程不好量化。有机会需要找一个比较好的描述方法把这个过程量化:基本上 R= a*log10(Power)+b; 至于a,b如何选取需要一些技巧。
Step3: 球体方式绘制可视化数据
主要好了数据,就按照绘制球体的方式来进行数据的可视化就可以了。我是按照GL_QUAD_STRIP的方式绘制的,即
纬度为a和纬度为a+delta的绘制为一个GL_QUAD_STRIP来绘制。
基本的伪代码是:
for(lat =0; lat <PI, lat+step)
{
glBegin(GL_QUAD_STRIP);
for(lon=0;lon<2PI,lon+step)
{
x=Rsin(lat)cos(lon);
y= Rsin(lat)sin(lon);
z=Rcos(lat);
glVertex(x,y,z);
x=Rsin(latNext)cos(lon);
y= Rsin(latNext)sin(lon);
z=Rcos(latNext);
glVertex(x,y,z);
}
glEnd();
}
需要注意的问题:绘制时候,对经度和纬度要进行约束,即纬度的PI和经度的2Pi,否则会出现缺口。
需要改进:
这块可以选取用顶点数据的方式进行会更好,即glDrawArrays的方式