跳至正文
Tooling — Orbit:轨道重力实验室

Orbit:轨道重力实验室

AI 参与说明(Agent:Grok、Codex):原始 demo 来自 Grok 工作区;Codex 根据提供的源码完成站点集成、交互与模拟问题修正,并整理本页说明。本文描述该演示的具体行为,整理于 2026-09-10。Codex 运行记录:模型 gpt-6-astra,reasoning effort ultra,执行入口 Codex Desktop;原始 Grok 的模型与 reasoning effort 未取得运行记录。

可交互演示页尚未发布到 /demos/2026/orbit/。 先读本页实现说明,或从 Labs 看现有演示。

先点击「开始探索」,再在空白位置向后拉、松手,抛出一颗行星。拖动时出现的虚线帮助你判断初始飞行方向;也可以轻点,放置初速度为零的天体。

英文术语中文名称简要解释
N-body simulation多体模拟同时计算多个天体之间的引力与运动
Canvas 2D二维画布接口本演示用于绘制天体、轨迹与星空的浏览器接口
momentum动量质量与速度的乘积,用来计算自由天体合并后的速度

怎么玩

操作效果
在空白处轻点放置初速度为零的天体;之后会受到引力影响
按下、向后拉、松手从按下位置向拖动的反方向抛出天体
轻点已有天体选中天体,查看质量与速度
拖动已有天体后松手重新设置它的发射速度
滚轮缩放视图
右键拖动平移视图
触屏双指移动或捏合平移或缩放,不放置新天体

左侧控件在手机上移到画面底部。质量从小到大分为 尘埃、卫星、行星、巨星、恒星,作用于下一次放置的天体;这些名称是实验里的质量档位,不是现实天文学的分类或单位。

时间尺度从 0.10× 到 3.00×,控制模拟时间的推进速度。「暂停」冻结运动,再点「继续」恢复;暂停时也能布置天体。「轨迹」控制历史运动轨迹的显示。「跟随」跟踪选中天体,没有选中对象时跟踪系统质心。「复位」重新居中并调整视图;「清除」删除当前全部天体,进入空白场景。

选中天体后可以点「删除选中」。键盘也可操作:空格 暂停/继续,1–5 选择质量,T 切换轨迹,F 切换跟随,M 切换碰撞方式,R 复位,C 清除,Delete / Backspace 删除选中。焦点位于控件上时,优先保留控件自己的键盘操作。

先看五个场景

场景可以观察什么
星系固定恒星附近的行星与卫星运动
双星两颗恒星互绕,外侧天体受到扰动
八字三个等质量天体的近似八字编舞
弹弓天体掠过运动中的巨星时,轨迹和速度怎样变化
空白自己放置恒星,再抛出其他天体

建议先选「八字」,让它运行一段时间,观察三条轨迹怎样形成相似的图案。再选「弹弓」,跟随一颗天体,观察掠过巨星前后的轨迹与速度;实际变化取决于接近方向、距离和其他天体,不能把每次掠过都理解为必然加速。

要自己搭一个星系,可以先选「空白」,暂停后放一颗恒星,再切回行星档,在远一些的位置向后拉出接近切线方向的初速度,最后继续运行。拉得太短容易落向恒星,太长则可能逃离视野;逐次调整即可看到不同结果。手工放置的恒星可以移动,和「星系」场景中固定在原点的恒星不同。

合并与弹开

Merging free bodies preserves their total momentum at the collision step. 在没有固定约束的两颗天体之间,合并使用总质量和质量加权速度:

m=m1+m2,v=m1v1+m2v2m1+m2. m = m_1 + m_2, \qquad \mathbf{v} = \frac{m_1\mathbf{v}_1 + m_2\mathbf{v}_2}{m_1 + m_2}.

例如,质量相同、速度相反的两颗自由天体,合并后速度为零。合并不会保留原来的全部动能;这和“总速度相加”不同。

「星系」与「弹弓」场景的中央恒星被固定。自由天体撞上它时,恒星仍保持固定,因此不能声称整个画面中的天体始终满足无外力系统的动量守恒。

「弹开」会将重叠天体分开,并按碰撞方向调整速度。该 demo 的恢复系数为 0.72,碰撞会损失部分动能,并非完全弹性碰撞。

这是交互实验,不是精密轨道预报

Orbit 使用二维画布和数值模拟;「无穷海岸」则使用 WebGL 着色器绘制分形。两者保留不同的计算方式,但都能直接在浏览器中体验。

本演示用软化后的引力避免距离很小时力无限增大,并使用有限时间步长、子步数和速度上限控制计算。质量、距离、时间采用演示自身的数值约定,不能直接换算成真实天体数据。

因此,「八字」用于观察近似编舞,不能保证无限时间严格闭合。拖动时的虚线是短期轨迹预估,计算步长与正式模拟不同,并在预测到碰撞时停止;它不承诺给出碰撞后的精确轨道。长时间运行、近距离遭遇或较大的时间尺度都可能放大数值误差。

运行需要浏览器启用 JavaScript 与 Canvas 2D。当前场景不保存到本地存储,刷新会重新开始。

继续探索

本文共 1550 字,创建于 Sep 10, 2026

相关标签:Frontend, 可视化, ByAI

博客助手

正在打开博客助手…