时间异常:天体位置不对、航天器飞到轨道外
症状
跳转到某个日期(比如未来 10000 年),发现:
- 行星不在正确轨道上
- 航天器飞到轨道外
- 时间倍率调得太大画面"冻结"或"跳跃"
先搞清楚 Celestia 的时间精度边界
| 时间范围 | Celestia 精度 |
|---|---|
| 1600 ~ 2200 年 | JPL DE 星历表精确,天体位置计算准确(米级误差) |
| 2200 ~ 5000 年 | 基于开普勒方程外推,大致位置正确,但细节(如小行星被引力扰动)可能不准 |
| 5000 年 ~ 未来几亿年 | Celestia 不再用 DE 星历表,简化为开普勒轨道近似(忽略行星间引力相互作用) |
| 公元前 | 反向近似,精度逐年下降 |
未来几亿年的"时间异常"
跳到 5 亿年后,Celestia 里的行星还在椭圆轨道上平稳运行——但实际上 5 亿年内:
- 太阳氦闪膨胀到红巨星,会吞掉水星、金星、地球
- 火星可能被弹射出去
- 木星和土星轨道会因为相互引力而变乱
Celestia 的默认星历表不模拟太阳演化——它假设太阳会永远保持稳定。所以未来几十亿年的行星位置在 Celestia 里是"假"的开普勒近似,而不是真实情况。
这是正常现象,不是 bug——Celestia 里有"红巨星太阳"添加件可以模拟太阳膨胀过程。
航天器飞到轨道外
跳转到 Cassini 坠毁之后(2017 年 9 月 15 日),搜索 Cassini——Celestia 会把它显示在某个位置(SSC 里定义的最后位置),但它不"继续飞"了。因为 SSC 数据里航天器的轨道参数定义到坠毁那一刻就结束了。
这也是正常的。让航天器消失需要在 SSC 里定义时间段:
Craft "Cassini" {
Radius 2
...
EndDate "2017 09 15 18 00 00" -- 从这一刻起消失
}
SSC 里没写 EndDate → 航天器会永远停在最后一个已知位置,或者在某些版本里继续飞开普勒近似轨道(不对的)。
时间倍率太大导致"冻结"或"跳跃"
- 跳到 1000 年以后加速到 1000000x,画面可能冻结几秒然后突然跳到一个遥远的未来位置——Celestia 在计算大量轨道时被卡住了
- 正常现象。把时间倍率降回合理范围(1000x 以内),或者分几次调大(每次 3 倍)
修复方法
| 问题 | 修复 |
|---|---|
| 未来太远天体位置不准 | 正常。用 Motherlode 的 "Solar System Evolution" 添加件 |
| 航天器坠毁后还在 | 正常。需要在 SSC 里加 EndDate |
| 时间倍率太大冻结 | 正常。降倍率或分多次调 |
| 2200 年前的位置明显错 | 检查 DE 星历表版本——Celestia 1.7.0 用 DE441 精度最好 |
验证时间精度
跳到 2024 年 4 月 8 日 17:18 UTC(2024 日全食最大时刻),搜索 Moon 并跟随它,zoom 到能看到月球在太阳圆面上——如果能精确看到月球正好覆盖太阳最大部分,说明 Celestia 的时间计算是正确的。
如果月球偏了、多了几秒的误差——检查 Celestia 的 JPL DE 星历表是否正确加载。
Select { object "Moon" }
Follow { }
SetTime { Date "2024 04 08 17 18 00" }
SetTimeRate { Value 0.001 } -- 几乎静止看