Javascript 铯地球:在ECI坐标系中显示卫星

Javascript 铯地球:在ECI坐标系中显示卫星,javascript,cesium,Javascript,Cesium,我正在使用铯地球开发卫星跟踪应用程序 现在,卫星坐标在地球固定系统中,工作正常 然而,我还需要在ECI坐标系中显示它们,为此,我必须使地球自转 如何做到这一点?首先,我要提到铯经常使用ICRF这个名称作为ECI的同义词或替代词,因此,如果您正在搜索文档,您将有更好的运气查找ICRF 图中显示了一些绕地球轨道运行的卫星,其路径如惯性系所示。这是通过做两件事: 在位置部分设置值“referenceFrame”:“惯性” 所有实际位置值本身必须以惯性而非固定帧表示 你可以知道路径是惯性的,因为它是

我正在使用
铯地球
开发卫星跟踪应用程序

现在,卫星坐标在地球固定系统中,工作正常

然而,我还需要在ECI坐标系中显示它们,为此,我必须使地球自转


如何做到这一点?

首先,我要提到铯经常使用ICRF这个名称作为ECI的同义词或替代词,因此,如果您正在搜索文档,您将有更好的运气查找ICRF

图中显示了一些绕地球轨道运行的卫星,其路径如惯性系所示。这是通过做两件事:

  • 位置
    部分设置值
    “referenceFrame”:“惯性”
  • 所有实际
    位置
    值本身必须以惯性而非固定帧表示
你可以知道路径是惯性的,因为它是一个椭圆。如果它被固定在地球上,它看起来就像一个螺旋,疯狂地绕着地球旋转。随着时间的推移,轨道椭圆当然应该与恒星保持在惯性系中,而不是固定在地球上任何一块陆地的上方

然而,我还需要在ECI坐标系中显示它们,为此,我必须使地球自转

这是两个不同的问题。在铯中,地球的固定框架已经相对于ICRF框架(内部)旋转。但默认情况下,相机保持在地球固定(ECF)状态。因此,用户看到地球看起来是静止的,恒星和卫星轨道似乎围绕地球旋转。这实际上是一种有效的观察系统的方式,就好像相机只是卡在一个非常高的附在地球上的杆子上,扫过不同的轨道

要使地球随着时间的推移在屏幕上视觉上旋转,必须更新相机的位置,使其在ICRF帧中保持静止,而不是默认的固定帧

政府有一个活生生的例子。单击下拉列表并从列表中选择查看ICRF。此代码从左侧实时编辑窗口中的第119行开始:

function icrf(scene, time) {
    if (scene.mode !== Cesium.SceneMode.SCENE3D) {
        return;
    }

    var icrfToFixed = Cesium.Transforms.computeIcrfToFixedMatrix(time);
    if (Cesium.defined(icrfToFixed)) {
        var camera = viewer.camera;
        var offset = Cesium.Cartesian3.clone(camera.position);
        var transform = Cesium.Matrix4.fromRotationTranslation(icrfToFixed);
        camera.lookAtTransform(transform, offset);
    }
}

viewer.scene.postUpdate.addEventListener(icrf);

此代码只会随着时间的推移更新相机的位置,这样相机在ICRF框架中与恒星和卫星轨道保持静止,地球本身也会旋转。

刚刚注意到您的
webgl Earth
标签。我下面的答案是关于核心铯,而不是webgl地球。我认为webgl earth删除或隐藏了卫星和ECI所需的一些铯元素。我使用铯元素,删除了标记,这是一个伟大的答案!谢谢!
icrf()
功能在启用时设置新的摄影机视图。如果通过复选框启用/禁用,也会更改相机视图。这也与
viewer.flyTo()
冲突。我怎样才能解决这个问题?