提交 f679c8f7 编写于 作者: 三月三net's avatar 三月三net

Python超人-宇宙模拟器

上级 2a1021d7
# -*- coding:utf-8 -*-
# title :两体场景模拟01
# description :两体场景模拟01(2个太阳、1个地球)
# author :Python超人
# date :2023-02-11
# link :https://gitcode.net/pythoncr/
# python_version :3.8
# ==============================================================================
from bodies import Sun, Earth
from common.consts import SECONDS_PER_WEEK, SECONDS_PER_YEAR, SECONDS_PER_DAY, AU, G
from sim_scenes.func import mayavi_run, mpl_run, ursina_run
import math
if __name__ == '__main__':
r2 = 0.5 * AU
r1 = 2 * r2
# A、B 质量
mA = 5.97237e24
mB = 2 * mA
pxA, pyA = 0, r1
pxB, pyB = r1 + r2, r1
# A、B 坐标
pA, pB = [pxA, pyA, 0], [pxB, pyB, 0]
vxA, vxB = 0, 0
# 万有引力常量 *mA * mB/ math.pow(r1+r2,2) = mA*math.pow(vyA,2)/r1
vyA = -math.sqrt((G * mA * mB) / math.pow(r1 * 1000 + r2 * 1000, 2) * r1 * 1000 / mA)
# 万有引力常量 *mA * mB/ math.pow(r1+r2,2) = mB*math.pow(vyB,2)/r2
vyB = math.sqrt((G * mA * mB) / math.pow(r1 * 1000 + r2 * 1000, 2) * r2 * 1000 / mB)
vA, vB = [vxA, vyA / 1000, 0], [vxB, vyB / 1000, 0]
# vA, vB = [0,0,0],[0,0,0]
bodies = [
Sun(name="A", rotation_speed=1, mass=mA,
init_position=pA, init_velocity=vA, size_scale=1.5e3, distance_scale=1).trail_color((255, 0, 0)),
Sun(name="B", rotation_speed=1, mass=mB,
init_position=pB, init_velocity=vB, size_scale=1.5e3, distance_scale=1)
]
# 使用 ursina 查看的运行效果
# 常用快捷键: P:运行和暂停 O:重新开始 I:显示天体轨迹
# position = 左-右+、上+下-、前+后-
ursina_run(bodies, SECONDS_PER_YEAR * 50, position=(r1, r1, -7 * r2), show_trail=True)
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册