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"
}