原文来自本人博客:三体模拟器(python)

vpython

vpython库是一个能做3D动画的第三方库,安装起来很容易,利用anacanda或者pycharm都能简单安装

导入vpython

from vpython import *

设置画布参数

scene.forward = vector(0, -0.5, 1) # 视角角度
scene.width = 1280                 # 宽
scene.height = 720                 # 高
scene.background = color.white     # 背景颜色

定义物理参数

G = 6.672e-11  # 万有引力常数
# 某个物体的参数
body1 = sphere(pos=vector(2e11, 0, 2e11), radius=2e10, color=color.red,make_trail=True, interval=10, retain=50) # 位置、半径、颜色。。。
body1.mass = 4.001e30  # 质量
body1.p = vector(0, 2e4, 0) * body1.mass  # 动量

物理帧间隔

这里利用微元思想,设置一个物理帧间隔参数,并假定在这一小段时间内,力的作用效果不变

dt = 1e4  # 物理帧间隔

动量定理

利用动量定理,得到天体位置的变化

body1.p = body1.p + F1 * dt - F3 * dt  # 动量定理
body2.p = body2.p - F1 * dt - F2 * dt
body3.p = body3.p + F2 * dt + F3 * dtbody1.pos = body1.pos + (body1.p / body1.mass) * dt
body2.pos = body2.pos + (body2.p / body2.mass) * dt
body3.pos = body3.pos + (body3.p / body3.mass) * dt

完整代码示例

from vpython import *scene.forward = vector(0, -0.5, 1)
scene.width = 1280
scene.height = 720
scene.background = color.whiteG = 6.672e-11  # 万有引力常数body1 = sphere(pos=vector(2e11, 0, 2e11), radius=2e10, color=color.red,make_trail=True, interval=10, retain=50)
body1.mass = 4.001e30  # 质量
body1.p = vector(0, 2e4, 0) * body1.mass  # 动量body2 = sphere(pos=vector(-1.3e11, (3 ** 0.5) * 1e11, 0), radius=1e10, color=color.blue,make_trail=True, interval=10, retain=50)
body2.mass = 2e30
body2.p = vector(-(3 ** 0.5) * 1e4, -1e4, -0.4e4) * body2.massbody3 = sphere(pos=vector(-1e11, 3e11, -1e11), radius=3e10, color=color.yellow,make_trail=True, interval=10, retain=50)
body3.mass = 6e30
body3.p = -body1.p - body2.p  # 保证整体动量为0,防止球飞到屏外dt = 1e4  # 物理帧间隔while True:rate(1000)r1 = body2.pos - body1.posF1 = G * body1.mass * body2.mass * r1.hat / mag2(r1)  # 万有引力定律r2 = body2.pos - body3.posF2 = G * body2.mass * body3.mass * r2.hat / mag2(r2)r3 = body1.pos - body3.posF3 = G * body1.mass * body3.mass * r3.hat / mag2(r3)body1.p = body1.p + F1 * dt - F3 * dt  # 动量定理body2.p = body2.p - F1 * dt - F2 * dtbody3.p = body3.p + F2 * dt + F3 * dtbody1.pos = body1.pos + (body1.p / body1.mass) * dtbody2.pos = body2.pos + (body2.p / body2.mass) * dtbody3.pos = body3.pos + (body3.p / body3.mass) * dt

三体模拟器(python)相关推荐

  1. python模拟按键_python 模拟按键放在模拟器Python初学者的17个技巧

    Python初学者的17个技巧,有需要的朋友可以参考下. W WW.002pc .COM认为此文章对<python 模拟按键放在模拟器Python初学者的17个技巧>说的很在理. 交换变量 ...

  2. 教你如何用python制作平面直角坐标系模拟器 python项目小发明 【安安教具】-【数学】-【平面直角坐标系】模拟器

    平面直角坐标系和之前的数轴模拟器有异曲同工之妙,但是作为一个二维的软件,肯定是要难一些的... [安安教具]-[数学]-[数轴]模拟器 教你如何用python制作数轴模拟器 python 小项目创作_ ...

  3. 传感器模拟器——python

    传感器模拟器--python 上综合实践课程做物联网应用的时候需要用到传感器,但在这个阶段调试简单的传感器未免过于浪费时间 在需要使用传感器的情况下可以用这个来模拟(调试简单的传感器未免过于浪费时间) ...

  4. 三体运动python模拟(代码能直接运行)

    三体运动python模拟(代码能直接运行) 原理说明 程序代码(可直接运行) 代码结果示例 原理说明 很高兴撰写CSDN首篇文章!写了一个简单的程序对三体运动进行了模拟以验证其运动的复杂性.难以预测性 ...

  5. 教你如何用python制作黑板模拟器 python 项目小发明 【安安教具】-【工具】-【黑板】模拟器

    黑板模拟器是一个多线程控制尝试,需要做到通过tkinter实现对鼠标的控制和监督.鼠标在移动时会有一个线程来检测鼠标的位置,计算窗口的位置,计算出鼠标在窗口中的位置,结合canvas画布实现对黑板的涂 ...

  6. 如何用python制作温度计模拟器 python项目小发明 【安安教具】-【物理】-【温度计】模拟器

    温度计测量水温的过程要满足如下条件: 1.不能碰烧杯底. 2.不能碰烧杯壁. 设计一款动手实践上面过程的软件,就是接下来要完成的~ 我们先看一下效果: 如何用python制作温度计模拟器 python ...

  7. 三体模拟器(nodejs)

    原文来自本人的博客:三体模拟器(nodejs) 鸣谢:bilibili用户Ele实验室 模拟网站地址已发布至华为云服务器,地址: http://121.36.164.109/ 大家直接打开这个网址就可 ...

  8. 雷电模拟器python编程接口_【Python】雷电模拟器说明[附代码]

    [Python] 纯文本查看 复制代码class Dnconsole: # 请根据自己电脑配置 console = 'D:\\Changzhi\\dnplayer2\\dnconsole.exe ' ...

  9. 教你如何用python制作三角形模拟器 python项目小发明 【安安教具】-【数学】-【三角形】模拟器

    三角形的三个点互相连接组成了一个平面图形,我们如何用python制作一个可以展示各种三角形的软件呢? 我们先看看效果: 这个东西要如何使用呢?我们看一下视频: 三角形模拟器 可以看到,控制三角形的三个 ...

最新文章

  1. Swing基础知识(更新中)
  2. PPT插入文本框但是字体并不是想要的
  3. Win32SDK中(串行)通信资源概要(不断更新)
  4. mysql主从同步_utf8_MySQL主从同步
  5. 为什么L1稀疏,L2平滑?
  6. jHipster入门,第1部分
  7. 高通芯片曾被发现一重大漏洞 影响骁龙845等30多款芯片
  8. 安装mysql的一些小问题
  9. LIS 最长递增子序列问题
  10. Java扫雷游戏的设计与实现毕业设计论文
  11. Xmind 中附件的存放位置
  12. 计算机常用单位的换算方法,常用单位的换算(含温度长度计算机单位面积以及数量含义).doc...
  13. OpenCV使用BGR而非RGB格式
  14. 【游戏开发实战】Unity从零做一个任务系统,人生如梦,毕业大学生走上人生巅峰(含源码工程 | 链式任务 | 主线支线)
  15. exit( )和_exit()的区别(https://blog.csdn.net/lwj10386)
  16. layuiadmin配置mysql_layuiAdmin 后台管理模板
  17. 用Python复现机器学习中12种经典降维算法
  18. 热点综述 | 单细胞+空间转录组的整合分析方法总结
  19. 思考“手绘家谱”的算法
  20. tds与oracle,oracle和sqlserver找不到字段的错误

热门文章

  1. 如何利用百度云下载BT或磁力链等资源,而不用迅雷
  2. Android远程桌面deepin,deepin官方论坛-深度科技官网旗下网站
  3. 考勤助手——学生查询出勤用例图
  4. 网络学习day04_VLSM、子网划分
  5. 计算机导论课程论文标题大全,《计算机导论》课程论文.doc
  6. 3.2.6 Set接口及其实现类
  7. 如何在网页实现自己的划词搜索
  8. 关于VS无法下载扩展的解决办法
  9. unable to connect to mks:Failed to connect to server XXXXXX:902
  10. Python之数据结构深度校验