Swift - 如何根据当前时间和位置更正星空图?

Swift - how can i correct sky map according to current time and location?

我是 Swift 的新手,现在我正在尝试像应用程序 "star chart" 一样构建天空地图应用程序。

我已经从 NASA 得到了一张天空图图像并将其覆盖在 SCNsphere 上,也已经在这个球体的中心设置了相机节点,使它看起来像 360 度。此外,我使用加速器来检查相机正在看的方向。

我知道像“星图”这样的天空图不需要互联网来更新数据。所以现在最大的问题是我不知道如何根据人们当前的时间和位置来校正我的天空地图的位置。

有什么好的建议和帮助吗?提前致谢!!!因为我费了很大力气才找到一些相关信息,但还是卡在这里三个星期。

您只需要将地图旋转 time+longitude 围绕 地球 的旋转轴并 latitude 围绕轴 longitude=90 degrees 而地球被放置在你的球体的中心。对于恒星,偏移量无关紧要,因此您可以忽略 日地 距离以及 地球 的半径。

时间轮换必须一起[=13​​=]轮转。最重要的是,如果你想获得更高的精度,你必须应用进动和章动。

当然,恒星也在移动,所以如果你需要非常高的精度和/或高时间间隔来覆盖(数百年或数千年),那么这种方法并不好,你应该使用恒星目录和实施的运动。

有关更多信息,请参阅相关内容:

  • How to draw sky chart

如果您想使用目录和真实颜色,那么您还需要

  • Star B-V color index to apparent RGB color
  • simplified atmospheric scattering GLSL shader

最后,这里有一些针对此类应用程序的提示: