又开始写博客了,懒了一段时间,决定还是要从新开始,记录学习和工作中的心得体会。

     本篇主要是总结下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的方式