跳轉到內容

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"
}
華夏公益教科書