这是一个基于 Flask 和 Three.js 的三体运动模拟 Web 应用。它实现了三体问题的物理模拟,包括三个恒星和一个地球,并在浏览器中以3D形式实时展示。
- 基于牛顿万有引力定律的精确物理模拟
- 使用 Three.js 实现实时 3D 可视化
- 包含三个不同质量的恒星系统和一个地球
- 实时显示天体运动轨迹
- 支持视角自由旋转和缩放
- 带有物理参数实时显示面板
- 完全响应式设计,支持移动端访问
- 可调节的时间步长
- 支持重置视角和初始位置
-
后端:
- Python Flask 框架提供 Web 服务
- NumPy 进行科学计算
- 精确的物理模型实现
-
前端:
- Three.js 进行 3D 渲染
- 响应式界面设计
- WebGL 加速
- 运动轨迹实时绘制
- Python 3.8+
- Flask 2.0.1+
- NumPy 1.21.0+
- 支持 WebGL 的现代浏览器
-
克隆或下载本项目
-
安装依赖:
pip install -r requirements.txt
-
运行应用:
python run.py
或
python app.py
-
在浏览器中访问:
http://localhost:5000
- 鼠标拖拽:旋转视角
- 鼠标滚轮:缩放画面
- 右侧控制台:显示物理参数
- 底部按钮:
- 重置视角:恢复到初始视角
- 重置位置:恢复天体初始位置
系统包含四个天体:
- 三个不同质量的恒星(1.5-2.5倍太阳质量)
- 一个地球(约为恒星质量的1/3000)
物理参数:
- 引力常数:6.67e-11 N⋅m²/kg²
- 时间步长:默认为1天(86400秒)
- 距离单位:千米(km)
-
系统使用真实物理参数,模拟结果反映了三体运动的混沌特性
-
生产环境部署时请确保关闭调试模式
-
建议使用支持硬件加速的现代浏览器以获得最佳体验
-
移动端访问时注意控制台位置可能会随屏幕尺寸自适应调整
python app.py方式二:使用启动脚本(自动安装依赖)
python run.py -
在浏览器中访问
http://localhost:5000
app.py: Flask 应用主文件,包含物理模拟逻辑templates/index.html: Three.js 可视化界面requirements.txt: Python 依赖列表
本项目实现了经典的牛顿万有引力定律来计算天体间的相互作用:
- 使用万有引力常数 G = 6.67e-11
- 计算每个天体受到的合力和加速度
- 通过数值积分更新天体的速度和位置
天体的初始位置和速度可以根据需要在 app.py 中修改。