首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何创建卫星的轨道,并使用SGP4模型对其进行动画处理?

如何创建卫星的轨道,并使用SGP4模型对其进行动画处理?
EN

Stack Overflow用户
提问于 2019-04-06 16:56:20
回答 2查看 1.9K关注 0票数 4

我是of和Javascript代码的初学者。我需要创建一个卫星(ESEO)环绕地球的轨道。卫星必须按照SGP4模型运动。如何在in沙堡中创建它?我遇到了麻烦,因为我在网上找不到任何教程或示例来解释如何做到这一点。现在我只把地面站放在地球上我想要的地方。

代码语言:javascript
复制
var viewer = new Cesium.Viewer ('cesiumContainer', {
    scene3DOnly: false,
    selectionIndication: false,
    baseLayerPicker: true
                                });

Cesium.Ion.defaultAccessToken = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiI4ODY0ZjkwMy03YmZlLTRlNGEtYmNhOS0xMDBlZGVmNDRkZGMiLCJpZCI6OTE4MSwic2NvcGVzIjpbImFzciIsImdjIl0sImlhdCI6MTU1MzYxMjM5Mn0.aYYX1f1MQfg9zLFu0vnP3A56Neo4Y_N3G2O5tuTS0XM';

// Enable lighting based on sun/moon positions
viewer.scene.globe.enableLighting = true;

//Stazione di terra
var entity = viewer.entities.add({
  position: Cesium.Cartesian3.fromDegrees(12.04, 44.23),
  ellipse : {
    semiMinorAxis : 150000.0,
    semiMajorAxis : 150000.0,
    material : Cesium.Color.YELLOW.withAlpha(0.5)
  }
});
var ellipse = entity.ellipse;
ellipse.material = new Cesium.GridMaterialProperty({
  color : Cesium.Color.YELLOW,
  cellAlpha : 0.2,
  lineCount : new Cesium.Cartesian2(8, 8),
  lineThickness : new Cesium.Cartesian2(2.0, 2.0)
});


var GroundStation = viewer.entities.add({
    name : 'Ground Station',
    position : Cesium.Cartesian3.fromDegrees(12.07, 44.23),
    point : {
        pixelSize : 5,
        color : Cesium.Color.RED,
        outlineColor : Cesium.Color.WHITE,
        outlineWidth : 2
    },
    label : {
        text : 'Ground Station',
        font : '14pt monospace',
        style: Cesium.LabelStyle.FILL_AND_OUTLINE,
        outlineWidth : 2,
        verticalOrigin : Cesium.VerticalOrigin.BOTTOM,
        pixelOffset : new Cesium.Cartesian2(0, -9)
    }
});
EN

回答 2

Stack Overflow用户

发布于 2019-07-26 21:50:42

当人们在of中绘制轨道时,他们通常使用折线而不是您使用的椭圆实体。

链接到多段线/多段线集合:https://cesiumjs.org/Cesium/Build/Documentation/Polyline.html

现在关于SGP4,这个传播器接受一个NORAD两行元素。所以如果你有自己的轨道参数,你可以创建你自己的TLE。这应该很容易在外部python程序中完成,并将其写入JSON文件,该文件可以读取到javascript中,然后传递给传播器。有关TLE的更多信息,维基百科对它的格式有很好的描述。

TLE信息:https://en.wikipedia.org/wiki/Two-line_element_set

对于实际的SGP4实现,有一个Satellite.js包,其github链接如下。他们能够正确地实现一个传播器,该传播器接收NORAD TLE并输出弹道信息。

Satellite.js github:https://github.com/shashwatak/satellite-js

我非常确定您必须将TLE转换为不同的参数,然后将其传递给传播它的satellite-js模块。

当你这样做的时候,我强烈建议为代码创建一个工作线程来执行,因为它的开销很大。您不希望所有的数学重量级操作都与of的图形渲染一起完成。

另一个重要的注意事项是:如果可以避免,您绝对不应该使用SGP4。您应该创建适合您的项目需求的自己的propagator。轨道确定可能是棘手的,但与使用用于北美防空司令部卫星跟踪的传播器相比,这是一种更好的做法。

票数 3
EN

Stack Overflow用户

发布于 2020-09-09 01:11:23

你可以在这个项目中查看aaastro答案中列出的一些项目的演示。

jspredict

你也可以查看这篇很棒的论文和支持源码,以获得关于TLE,SGP4,on的进一步解释。

Spacemission

Visualization of Orbital Debris with Cesium and Satellite-js

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55547442

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档