osgearth 仿真平台之卫星仿真(实现STK卫星仿真基本功能)

卫星工具软件 STK(Satellite Tool Kit,STK)是航天领域中先进的系统分析软件,由美国分析图形有限公司(Analytical Graphics Inc,AGI)研制,用于分析复杂的陆地、海洋、航空及航天任务。它可提供逼真的2维、3维可视化动态场景以及精确的图表、报告等多种分析结果。支持卫星寿命的全过程,在航天飞行任务的系统分析、设计制造,测试发射以及在轨运行等各个环节中都有广泛的应用,对于军事遥感卫星的战场监测、覆盖分析、打击效果评估等方面同样具有极大的应用潜力。

主要功能:

1)分析能力:计算卫星在任何时刻的位置和姿态,卫星或地面站遥感器的覆盖区域;

2)生成轨道:提供卫星轨道生成向导,帮助用户建立常见轨道,如地球同步轨道、近地轨道等;

3)可见性分析:计算空间对象间的访问时间并在二维地图窗口中动画显示,可以在对象间增加几何约束条件(如可视范围、最小仰角等)来进行细节上的仿真;

4)可视化计算结果:可以显示所有以时间为单位的信息,对任务场景变化等具备多窗口实时显示能力;

5)全面的数据报告:STK可以提供超过一百种的文字或图表形式的报告信息,用户可以为自己关心的对象定制报告。

osgearth 仿真平台模拟了STK卫星仿真基本功能,可以加载多达上万颗卫星,也可以加载STK仿真轨迹来加载卫星。仿真效果如下图所示:、

osgearth 仿真平台之卫星仿真(实现STK卫星仿真基本功能)_第1张图片

 图1 stk仿真图像

osgearth 仿真平台之卫星仿真(实现STK卫星仿真基本功能)_第2张图片

图2 osgearth仿真三维

osgearth 仿真平台之卫星仿真(实现STK卫星仿真基本功能)_第3张图片

图3 osgearth 仿真二维

osgearth 仿真平台之卫星仿真(实现STK卫星仿真基本功能)_第4张图片

 图4 osgearth 仿真三维

 osgearth 仿真平台之卫星仿真(实现STK卫星仿真基本功能)_第5张图片

图5 二维

osgearth 仿真平台之卫星仿真(实现STK卫星仿真基本功能)_第6张图片

图6 三维

 osgearth 仿真平台之卫星仿真(实现STK卫星仿真基本功能)_第7张图片

 图7 2维

关键代码:

osg::Geode* line_gnode = new osg::Geode;
    osg::ref_ptrvectex = new osg::Vec3Array;
    osg::ref_ptrcolor = new osg::Vec4Array;
    osg::ref_ptrgemo = new osg::Geometry;

    double delta = 25;
    //在两点间插25个值
    for (int i = 0; i <= delta; i++)
    {
        osg::Vec3d temp;
        //经纬度
        temp.x() = start.x() + (end.x() - start.x()) * (i / delta);
        temp.y() = start.y() + (end.y() - start.y()) * (i / delta);
        temp.z() = start.z() + (end.z() - start.z()) * (i / delta);
        vectex->push_back(LngLatHeight2XYZ(temp));
    }

    for (int i = 0; i < vectex->size(); i++)
    {
        color->push_back(Color);
    }

    //画线
    gemo->setVertexArray(vectex);
    gemo->setColorArray(color);
    //此句影响绘制效率
    gemo->setColorBinding(osg::Geometry::BIND_OVERALL);
    gemo->addPrimitiveSet(new osg::DrawArrays(GL_LINE_STRIP, 0, vectex->size()));
    //灯光
    gemo->getOrCreateStateSet()->setAttribute(new osg::LineWidth(3.0), osg::StateAttribute::ON);
    gemo->getOrCreateStateSet()->setMode(GL_LIGHTING, osg::StateAttribute::OFF);
    line_gnode->addDrawable(gemo);

你可能感兴趣的:(osgearth,仿真,OSG,c++)