日食与月食模拟:Celestia 里精确到分钟的天体事件
Celestia 怎么算日食月食
Celestia 依赖 JPL DE(NASA 喷气推进实验室开发的行星/月球星历表)——目前使用 DE441 或更新版本,精度是米级的。这意味着 Celestia 可以精确到分钟甚至秒级地知道:
- 月球什么时候进入地球阴影区(月食)
- 月球什么时候从太阳面前掠过(日食)
- 卡西尼号什么时候会飞入土星大气(终场演出模拟)
2024 年 4 月 8 日日全食(最近一次跨越墨西哥→美国→加拿大)
跳过去看
@cel
-- 跳到 2024 年 4 月 8 日全食开始前一小时
SetTime { Date "2024 04 08 17 00 00" }
-- 选中地球、跟随,飞到能看到北美洲的位置
Select { object "Earth" }
Follow { }
Lander { Latitude 30 Longitude -100 Duration 5 } -- 着陆到德克萨斯州
Wait { Duration 2 }
-- 加速时间观察日食发展
SetTimeRate { Value 0.1 } -- 慢一点看
Print { "2024 日全食开始" }
Wait { Duration 600 } -- 等待 10 分钟(1 分钟模拟时间 = 10 分钟现实)
运行后你会看到:月球圆面从太阳面前掠过,太阳被逐渐"咬"出一个缺口——先是偏食,然后月球完全覆盖太阳(全食),然后退出全食阶段、偏食恢复、最后日食结束。全过程大约 2 小时(现实时间)。
关键时间点(JPL 精确值)
| 事件 | UTC 时间 | Celestia 模拟时间 |
|---|---|---|
| 偏食开始 | 15:42 | 可精确匹配 |
| 全食开始 | 16:38 | 可精确匹配 |
| 全食最大 | 17:18 | 可精确匹配 |
| 全食结束 | 17:55 | 可精确匹配 |
| 偏食结束 | 18:52 | 可精确匹配 |
跳到这些时刻附近(SetTime),把时间倍率调到 0.1x(放慢看细节),你会看到 Celestia 的模拟画面和 JPL 预测的精确吻合。
2024 年 9 月 18 日的月偏食
SetTime { Date "2024 09 18 02 30 00" } -- 偏食开始时刻 UTC
Select { object "Moon" }
Follow { }
这次月偏食全食阶段很短(只有几分钟),所以加速倍率不要太高(0.5x 左右就行)。
在地球上不同位置看日食效果
日食的可观测范围(本影/半影区)取决于你在地球上的位置。用 Celestia 的 Lander 模式着陆到不同地点:
- 日全食带内(墨西哥、美国中部、加拿大东部):能看到完整全食
- 日偏食带内(美国西部、欧洲):只能看到偏食
- 全食带外:几乎看不到
跳过去着陆就能"站在那个位置"亲眼确认你所在地能看到什么。
Celestia 日食月食的精度限制
Celestia 的星历表精度确实很高,但:
- 日食的精确开始时刻依赖月球位置精度(毫米级)——Celestia 用的 JPL DE 做到了
- 日食的精确结束时刻依赖地球自转精度(毫秒级)——Celestia 有考虑极移影响(ΔUT1)
- 但 Celestia 不模拟大气折射——所以在贴近地平线时,现实中的月亮/太阳会"看起来更扁",Celestia 不渲染这个效果(小误差,不影响日食月食教学)
脚本化日食演示
可以把未来几年的全部日食月食做成一个循环脚本:
@cel
events = {
"2025 03 29 10 00 00", -- 2025 年日偏食
"2025 09 21 14 30 00", -- 2025 年日偏食
"2026 08 12 16 00 00", -- 2026 年日全食
"2026 02 17 20 00 00", -- 2026 年日环食
...
}
for i = 1, #events do
SetTime { Date events[i] }
Select { object "Sun" }
Goto { Duration 2 }
SetTimeRate { Value 0.05 } -- 放慢到能看清细节
Wait { Duration 60 }
Print { "事件 " .. i .. " 完成" }
end