AI 参与说明(Agent:Grok、Codex):原始 demo 来自 Grok 工作区;Codex 根据提供的源码完成站点集成、交互与模拟问题修正,并整理本页说明。本文描述该演示的具体行为,整理于 2026-09-10。Codex 运行记录:模型
gpt-6-astra,reasoning effortultra,执行入口 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. 在没有固定约束的两颗天体之间,合并使用总质量和质量加权速度:
例如,质量相同、速度相反的两颗自由天体,合并后速度为零。合并不会保留原来的全部动能;这和“总速度相加”不同。
「星系」与「弹弓」场景的中央恒星被固定。自由天体撞上它时,恒星仍保持固定,因此不能声称整个画面中的天体始终满足无外力系统的动量守恒。
「弹开」会将重叠天体分开,并按碰撞方向调整速度。该 demo 的恢复系数为 0.72,碰撞会损失部分动能,并非完全弹性碰撞。
这是交互实验,不是精密轨道预报
Orbit 使用二维画布和数值模拟;「无穷海岸」则使用 WebGL 着色器绘制分形。两者保留不同的计算方式,但都能直接在浏览器中体验。
本演示用软化后的引力避免距离很小时力无限增大,并使用有限时间步长、子步数和速度上限控制计算。质量、距离、时间采用演示自身的数值约定,不能直接换算成真实天体数据。
因此,「八字」用于观察近似编舞,不能保证无限时间严格闭合。拖动时的虚线是短期轨迹预估,计算步长与正式模拟不同,并在预测到碰撞时停止;它不承诺给出碰撞后的精确轨道。长时间运行、近距离遭遇或较大的时间尺度都可能放大数值误差。
运行需要浏览器启用 JavaScript 与 Canvas 2D。当前场景不保存到本地存储,刷新会重新开始。
继续探索
-
从两个 Grok Build Demo 学习 Agent Harness:分析两个演示的复用边界、交互架构与验证方法。
-
无穷海岸:曼德勃罗集合探索:观察另一种由简单规则产生的复杂图案。
-
前端工具链专题:更多浏览器可视化与开发工具。