当前位置: 首页 > news >正文

太阳系三体模拟器

介绍

《三体》是刘慈欣创作的长篇科幻小说,文中提到的三体问题比较复杂和无解。 该项目代码就是利用 Python 来模拟三体的运行,此项目代码完全共享,欢迎下载。

我们可以自己通过调整天体的初始坐标、质量和矢量速度等等参数来自定义各种场景来控制天体的运行效果。

三个模拟器效果图

 

 

 

 

目录说明

bodies 天体类、包含太阳以及太阳系中的所有行星

common 公共库代码

data 构建天体的 JSON 数据

scenes 各种天体系统运行场景 演示入口

textures 天体纹理图片

simulators 天体系统运行模拟器

images 图片

安装 Python 库

# 先安装基础包
pip install -i http://pypi.douban.com/simple/ --trusted-host=pypi.douban.com ursina pyqt5 pyglet mayavi

支持三种模拟器

# 进入当前代码的根目录
cd e:\three_body_sim\
SET PYTHONPATH=%CD%# matplotlib 模拟器(支持动画和导出 gif 文件)
python simulators\mpl_simulator.py# mayavi模拟器
python simulators\mayavi_simulator.py# ursina模拟器
python simulators\ursina_simulator.py

模拟场景运行

# 进入当前代码的根目录
cd e:\three_body_sim\
SET PYTHONPATH=%CD%# 场景
# 从运行demo开始
python scenes/demo.py# 三体场景
# 3个太阳、1个地球(效果1)
python scenes/three_body_01.py# 3个太阳、1个地球(效果2)
python scenes/three_body_02.py# 太阳系场景
# 以下展示的效果为太阳系真实的距离
# 由于宇宙空间尺度非常大,如果按照实际的天体大小,则无法看到天体,因此需要对天体的尺寸进行放大
python scenes/solar_system_1.py# 以下展示的效果非太阳系真实的距离和大小
# 1、由于宇宙空间尺度非常大,如果按照实际的天体大小,则无法看到天体,因此需要对天体的尺寸进行放大
# 2、为了达到最佳的显示效果,对每个行星天体的距离进行了缩放
python scenes/solar_system_2.py# 以下展示的效果非太阳系真实的距离和大小
# 1、由于宇宙空间尺度非常大,按照实际的大小无法看到行星天体,因此需要对天体的尺寸进行放大
# 2、为了达到最佳的显示效果,对每个行星天体的距离进行了缩放
# 3、加入了小行星的演示效果
python scenes/solar_system_3.py# 太阳、地球运行效果
python scenes/sun_earth.py# 太阳、地球、木星运行效果
python scenes/sun_earth_jupiter.py 
太阳系三体模拟器项目地址https://gitee.com/smgc/Three-Body-Simulator-of-the-Solar-System 

相关文章:

  • PHP序列化总结1--序列化和反序列化的基础知识
  • UEFI模拟环境搭建——windows+EDKII
  • TiDB 7.1 多租户在中泰证券中的应用
  • Django框架:入门指南与常用命令
  • 状态模式-概述
  • 网络交换机端口管理会面临的问题
  • 在线客服选择要点分析:如何挑选适合您需求的客服解决方案
  • Zookeeper-Zookeeper应用场景实战(二)
  • ElementUI的Table组件行合并上手指南
  • 玩转MYSQL|详细分析mysql-MGR集群搭建
  • 基于SpringBoot的客户关系管理系统
  • 为什么深度学习神经网络可以学习任何东西
  • SElinux工作原理简介并演示chcon、semanage、restorecon的使用方法
  • 微信小程序与vue区别
  • 手动创建idea SpringBoot 项目
  • 收藏网友的 源程序下载网
  • [笔记] php常见简单功能及函数
  • [译] React v16.8: 含有Hooks的版本
  • Apache的80端口被占用以及访问时报错403
  • CSS实用技巧干货
  • FastReport在线报表设计器工作原理
  • JavaScript对象详解
  • mysql 5.6 原生Online DDL解析
  • Objective-C 中关联引用的概念
  • Spring Boot快速入门(一):Hello Spring Boot
  • SpringCloud集成分布式事务LCN (一)
  • Wamp集成环境 添加PHP的新版本
  • 分布式事物理论与实践
  • 微信开源mars源码分析1—上层samples分析
  • 详解NodeJs流之一
  • 正则学习笔记
  • k8s使用glusterfs实现动态持久化存储
  • 你学不懂C语言,是因为不懂编写C程序的7个步骤 ...
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • ​Java并发新构件之Exchanger
  • ​sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块​
  • ​二进制运算符:(与运算)、|(或运算)、~(取反运算)、^(异或运算)、位移运算符​
  • #162 (Div. 2)
  • #传输# #传输数据判断#
  • $().each和$.each的区别
  • $.each()与$(selector).each()
  • (11)工业界推荐系统-小红书推荐场景及内部实践【粗排三塔模型】
  • (MATLAB)第五章-矩阵运算
  • (Redis使用系列) Springboot 实现Redis 同数据源动态切换db 八
  • (非本人原创)我们工作到底是为了什么?​——HP大中华区总裁孙振耀退休感言(r4笔记第60天)...
  • (附源码)ssm跨平台教学系统 毕业设计 280843
  • (强烈推荐)移动端音视频从零到上手(上)
  • (已解决)Bootstrap精美弹出框模态框modal,实现js向modal传递数据
  • .net core开源商城系统源码,支持可视化布局小程序
  • .NET Framework与.NET Framework SDK有什么不同?
  • .Net MVC4 上传大文件,并保存表单
  • .NET Remoting学习笔记(三)信道
  • .NET 指南:抽象化实现的基类
  • .NET:自动将请求参数绑定到ASPX、ASHX和MVC(菜鸟必看)
  • [ vulhub漏洞复现篇 ] ThinkPHP 5.0.23-Rce