在浏览器环境中构建交互式 N 体模拟器,是处理天体力学中三体问题等混沌系统的一种高效方式。三体问题缺乏解析解,只能依赖数值积分模拟其动力学演化,而浏览器的高性能 Web 技术如 Canvas 和 WebGL,能实现实时渲染与用户交互,避免了原生应用的部署门槛。
核心挑战在于计算效率与数值稳定性。N 体模拟需计算每对天体间的引力:F = G × m₁ × m₂ / (r² + ε²),其中 ε 为软化参数(典型 0.01~0.1),防止近距离奇异崩溃。对于 N=3 的三体,O (N²)=3 对力计算负担轻,但混沌敏感性要求高精度积分。Velocity Verlet 算法是首选:其对称积分结构保持能量守恒,公式为 v_{t+dt/2} = v_t + (dt/2) a_t;x_{t+dt} = x_t + dt v_{t+dt/2};a_{t+dt} = force (x_{t+dt});v_{t+dt} = v_{t+dt/2} + (dt/2) a_{t+dt}。相比 Euler 方法,Verlet 的共轭(symplectic)性质确保长时模拟轨道不漂移,能量误差 < 0.1%/ 周期。
实际参数调优:dt=0.01~0.05(归一单位,G=1,尺度视场景),过大会导致能量漂移 > 5%(红色警报);Verlet 优于 RK4 在长时稳定性,RK4 虽短期精度高(4 阶误差 O (dt^5)),但非共轭导致相位累积误差,轨道渐扩 / 缩。监控总能量 E=∑(½m v² - G m_i m_j /r_ij),初始负值表示束缚系统,漂移率 < 1% 为绿灯。浏览器中,requestAnimationFrame 循环每帧 step ():计算力→积分更新→渲染轨迹。
为实时性,优化渲染管道:Three.js 或自定义 WebGL 着色器绘制粒子 / 轨迹,尾迹用几何缓冲(Geometry Buffer)。交互设计:暂停拖拽初始位置 / 速度,预设如 Figure-8 轨道(三等质量体追逐 8 字形,Cris Moore 1993 发现),Lagrange 三角形,或 3D 钢琴三重奏(Li and Liao 2025,10k + 周期解)。时间线回放缓冲最近 1000 步,支持分享 URL 编码状态(位置、速度、质量 JSON)。
工程落地清单:
- 初始化:3 体默认质量 m=[1,1,1],初始位 x=[(-1,0,0),(1,0,0),(0,0,√3)],速度 v=[(0.30689,0.1251,0),(0.30689,0.1251,0),(-0.61378,-0.2502,0)](Figure-8 归一)。
- 积分循环:dt=0.02,ε=0.01;每步 clamp 速度防逃逸(|v|>10 重置)。
- 渲染:WebGL 点精灵,轨迹线条(LineSegments),相机轨道控制(OrbitControls)。
- 性能阈值:N≤100@60fps(Chrome),>N 用 WebWorker offload 力计算,postMessage arrBodies [float32array: x,y,z,vx,vy,vz,mass* N]。
- 监控面板:实时 E、drift%、FPS;阈值:drift>5% 提示减 dt,回滚至稳定预设。
- 边缘 case:混沌爆发(初始微扰 Lyapunov 指数 > 0),用 RK4 短期高解;碰撞检测(r<ε*2 合并质量)。
风险控制:浏览器浮点精度(double fallback Float64Array),长模拟(>10^4 步)能量漂移用自适应 dt(drift>1% halving)。测试:Figure-8 应周期~6.3 单位时间稳定 > 100 周期无崩。
此方案已在 trisolarchaos.com 演示,支持 2D/3D 预设、RK4 切换,能量绿灯验证稳定性。扩展可 GPU(WebGPU compute shader Barnes-Hut O (N log N) 树码),N>10k 实时。
资料来源:trisolarchaos.com N-Body Simulator;Hacker News 帖子(2025-12-01)。