跳转到内容

Celestia/JPL 星历表

来自维基教科书,开放的世界,开放的书籍

在 Celestia 中使用 JPL 星历表

[编辑 | 编辑源代码]

注意:此信息不适用于 1.5.0 之前的 Celestia 版本。

可以使用 JPL 的 DE405/406 星历表与 Celestia,以比默认的 VSOP87 理论更准确地计算行星的位置。权衡的是,由于 JPL 的星历表文件本质上是大型查找表,因此需要大量内存才能覆盖与 VSOP87 相同的时间跨度。

首先,您需要下载星历表文件。它们可以在此处找到

ftp://ssd.jpl.nasa.gov/pub/eph/planets/unix/de406/

名为 unxpNNNN.406 的文件可能最令人感兴趣。它们包含从 +NNNN 年开始的 DE406 星历表的 300 年块。文件名为 unxmNNNN.406,涵盖了公元前 1 年之前的年份。每个块约为 9 兆字节,因此整个 DE406 的总大小约为 180 兆字节。您不需要使用多个块,但如果您需要超过 300 年的星历表,则 JPL FTP 站点上提供了一套工具。C 语言工具可以在这里找到

ftp://ssd.jpl.nasa.gov/pub/eph/planets/C-versions/hoffman/

DE405 比 DE406 更大,精度也略高,但 DE406 对于大多数用途来说应该足够精确了。文档中解释了差异

ftp://ssd.jpl.nasa.gov/pub/eph/planets/README.txt

要使用 JPL 星历表,您需要将其放置在 Celestia 的数据目录中,并将其命名为“jpleph.dat”。然后,您应该修改 solarsys.ssc 中定义的行星的 CustomOrbits,以使用 JPL 星历表代替默认的 VSOP87 轨道。以下是可用的 CustomOrbit 名称

  • 行星的日心轨道
jpl-mercury-sun
jpl-venus-sun
jpl-earth-sun
jpl-mars-sun
jpl-jupiter-sun
jpl-saturn-sun
jpl-uranus-sun
jpl-neptune-sun
jpl-pluto-sun
  • 相对于太阳系质心的行星轨道
jpl-mercury-ssb
jpl-venus-ssb
jpl-earth-ssb
jpl-mars-ssb
jpl-jupiter-ssb
jpl-saturn-ssb
jpl-uranus-ssb
jpl-neptune-ssb
jpl-pluto-ssb
  • 地球-月球质心相对于太阳和 SSB 的位置
jpl-emb-sun
jpl-emb-ssb
  • 地球相对于地球-月球质心的位置
jpl-earth-emb
  • 月球的地心和质心位置
jpl-moon-earth
jpl-moon-emb
  • 太阳相对于 SSB 的位置
jpl-sun-ssb

为 jpl-mars、jpl-jupiter、jpl-saturn、jpl-uranus、jpl-neptune 和 jpl-pluto 计算的位置是系统的质心。金星和水星没有卫星,因此质心正好是行星的中心。尽管火星有卫星,但它们相对于火星来说太小了,因此 Horizons 似乎将火星系统质心和火星中心视为相同。jpl-earth 存在轻微的不一致:它提供了地球的位置。如果您想要地球-月球质心,请使用 jpl-emb。

如果您好奇巨行星的位置与它们的系统质心偏离了多少,那么天王星和天卫五的粗略计算结果约为 20 公里。伽利略卫星与木星的质量比类似,尽管它们离木星更远,因此会使质心更远。

参考系

[编辑 | 编辑源代码]

尽管 JPL 星历表的本机参考系是 J2000.0 的地球平均赤道和春分点,但 Celestia 在内部(通过固定旋转)将它们转换为 J2000 黄道系。这使得默认的 VSOP87 轨道可以通过简单地更改 CustomOrbit 来替换为 JPL 轨道。唯一的例外是月球。卫星的默认参考平面是卫星所围绕行星的当日赤道平面。因此,当更改月球轨道以使用 JPL 星历表时,必须覆盖轨道系。

OrbitFrame {
    EclipticJ2000 { Center "Sol/Earth" }
}

有两种方法可以从使用 VSOP87 级数切换到使用 JPL 星历表来计算行星的位置。您可以直接修改 data/solarsys.ssc,或者您可以创建一个简单的插件,利用 SSC 对象的 Modify 属性。以下示例替换了太阳系所有行星和月球的轨道。将此示例复制粘贴到 extras 目录中的一个新的 .ssc 文件中,然后下次您启动 Celestia 时,行星的位置将根据 data/jpleph.dat 中的 JPL 星历表计算。

Modify "Mercury" "Sol"
{
    CustomOrbit "jpl-mercury-sun"
}

Modify "Venus" "Sol"
{
    CustomOrbit "jpl-venus-sun"
}

Modify "Earth" "Sol"
{
    CustomOrbit "jpl-earth-sun"
}

Modify "Moon" "Sol/Earth"
{
    OrbitFrame
    {
        EclipticJ2000 { Center "Sol/Earth" }
    }
    CustomOrbit "jpl-moon-earth"
}

Modify "Mars" "Sol"
{
    CustomOrbit "jpl-mars-sun"
}

Modify "Jupiter" "Sol"
{
    CustomOrbit "jpl-jupiter-sun"
}

Modify "Saturn" "Sol"
{
    CustomOrbit "jpl-saturn-sun"
}

Modify "Uranus" "Sol"
{
    CustomOrbit "jpl-uranus-sun"
}

Modify "Neptune" "Sol"
{
    CustomOrbit "jpl-neptune-sun"
}

Modify "Pluto" "Sol"
{
    CustomOrbit "jpl-pluto-sun"
}
华夏公益教科书