使用 TLE 在围绕地球的 3D 空间中绘制轨道
我正在尝试在 JS/React 中创建一个 3D 场景,在其中可以绘制国际空间站绕地球的轨道,我目前已经分叉了这个 repo https://github.com/dsuarezv/satellite-tracker
我注意到这似乎只显示地面跟踪轨道,我想做的是显示没有地面跟踪的完整轨道,即它是一个圆并且起点和终点相交。这样我还将以适当的速度旋转地球以复制实时精度。路径的所有数据都是使用 Satellite.js 传播函数从 tle 文件生成的,以获取要显示的 xyz 坐标。
如何将显示为地面轨道的轨道转换为带有旋转地球仪的完整轨道?
从此:
为此:
Im trying to create a 3D scene in JS/React where I can plot the orbit of the ISS around earth, I've currently forked this repo https://github.com/dsuarezv/satellite-tracker
Ive noticed that this only seems to display ground tracked orbits, what I want to do is display a full orbit which isnt ground tracked i.e. its a circle and the start and end meet. With this I will also rotate the earth at an appropriate speed to replicate real time accuracy. All data for path are generated from a tle file using satellite.js propagate function to get xyz coordinates to display.
How would you convert an orbit displayed as a ground track to a full orbit with a rotating globe?
From this:
To this:
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我不熟悉 Satellite.js,但您遇到的问题是您想要在地心惯性 (ECI) 框架而不是地心固定 (ECF) 框架中绘制轨道。每次获得卫星的位置时,您都需要将其放入 J2000 或 ICRF 等 ECI 框架中。如果您要为 ISS 传播 TLE,则 SGP4 传播器的输出是日期的 TEME,也是惯性系。使用 ECI 坐标绘制您的点/线,您应该可以开始了。
I'm not familiar with satellite.js, but the issue you are having is that you want to draw the orbit in an Earth Centered Inertial (ECI) frame and not Earth Centered Fixed (ECF). Each time you get the position of the satellite you need to get it in an ECI frame like J2000 or ICRF. If you are propagating a TLE for the ISS then the output of the SGP4 propagator is TEME of Date, also an inertial frame. Draw your points/lines using the ECI coordinates and you should be good to go.
关键是,您需要 ISS 在 ECF 参考系中的位置。第一张图像上的轨道是正确的,显示了国际空间站在相应时间点的位置。
技巧是使用预测的轨道时间传播轨道,但使用场景的当前时间将其转换为 ECF(通过对整个轨道使用相同的 gsmt 时间)。
这样您将获得旋转轨道平面,而不是国际空间站位置的预测。
请注意,除非地球在旋转,否则该轨道不会显示航天器的正确路径。这就是为什么轨道会随着 SC 的每次运动而变化。
The point is, that you need the ISS' position in ECF reference frame. The Orbit on your first image is correct and shows the position of the ISS at the corresponding point in time.
The trick is to propagate the orbit using the predicted orbit time but convert it to ECF using the current time of the scene (by using the same gsmt time for the whole orbit).
This way you'll get a rotating orbital plane instead of a prediction of the ISS' positions.
Be aware that this orbit does NOT show the correct path of the spacecraft unless the earth is rotating. This is why the orbit is changing with every movement of the SC.