Skip to content

jacob-ayang/three_body_web

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

三体运动模拟 Web 应用

这是一个基于 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 的现代浏览器

安装和运行

  1. 克隆或下载本项目

  2. 安装依赖:

    pip install -r requirements.txt
  3. 运行应用:

    python run.py

    python app.py
  4. 在浏览器中访问:

    http://localhost:5000
    

使用说明

  • 鼠标拖拽:旋转视角
  • 鼠标滚轮:缩放画面
  • 右侧控制台:显示物理参数
  • 底部按钮:
    • 重置视角:恢复到初始视角
    • 重置位置:恢复天体初始位置

物理模型

系统包含四个天体:

  • 三个不同质量的恒星(1.5-2.5倍太阳质量)
  • 一个地球(约为恒星质量的1/3000)

物理参数:

  • 引力常数:6.67e-11 N⋅m²/kg²
  • 时间步长:默认为1天(86400秒)
  • 距离单位:千米(km)

注意事项

  1. 系统使用真实物理参数,模拟结果反映了三体运动的混沌特性

  2. 生产环境部署时请确保关闭调试模式

  3. 建议使用支持硬件加速的现代浏览器以获得最佳体验

  4. 移动端访问时注意控制台位置可能会随屏幕尺寸自适应调整

    python app.py
    

    方式二:使用启动脚本(自动安装依赖)

    python run.py
    
  5. 在浏览器中访问 http://localhost:5000

项目结构

  • app.py: Flask 应用主文件,包含物理模拟逻辑
  • templates/index.html: Three.js 可视化界面
  • requirements.txt: Python 依赖列表

物理模型

本项目实现了经典的牛顿万有引力定律来计算天体间的相互作用:

  • 使用万有引力常数 G = 6.67e-11
  • 计算每个天体受到的合力和加速度
  • 通过数值积分更新天体的速度和位置

天体的初始位置和速度可以根据需要在 app.py 中修改。

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors