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

太阳系三体模拟器

上级 c1e37fd0
...@@ -23,10 +23,10 @@ if __name__ == '__main__': ...@@ -23,10 +23,10 @@ if __name__ == '__main__':
# 纹理图片路径为 texture/douyin.jpg # 纹理图片路径为 texture/douyin.jpg
# 放大倍数为 120 倍 # 放大倍数为 120 倍
# 距离保持不变 # 距离保持不变
Sun(name="太阳", mass=1.9891e30, Sun(name="抖音", mass=1.9891e30,
init_position=[0, 0, 0], init_position=[0, 0, 0],
init_velocity=[0, 0, 0], init_velocity=[0, 0, 0],
texture="douyin.jpg", size_scale=1.2e2, distance_scale=1.0), texture="douyin.jpg", size_scale=8e1, distance_scale=1.0),
# 地球的质量为 5.97237✕10²⁴ kg # 地球的质量为 5.97237✕10²⁴ kg
# 初始位置 x=1.12天文单位, y=0, z=0 # 初始位置 x=1.12天文单位, y=0, z=0
...@@ -34,9 +34,10 @@ if __name__ == '__main__': ...@@ -34,9 +34,10 @@ if __name__ == '__main__':
# 纹理图片路径为 texture/pythoncr.jpg # 纹理图片路径为 texture/pythoncr.jpg
# 放大倍数为 5000 倍 # 放大倍数为 5000 倍
# 距离保持不变 # 距离保持不变
Earth(name="地球", mass=5.97237e24, Earth(name="超人", mass=5.97237e24,
init_position=[1.12 * AU, 0, 0], init_position=[2 * AU, 0, 0],
init_velocity=[0, 29.79, 0], init_velocity=[0, 29.79, 0],
rotation_speed=1.5,
texture="pythoncr.jpg", size_scale=5e3, distance_scale=1.0), texture="pythoncr.jpg", size_scale=5e3, distance_scale=1.0),
] ]
# 使用 mayavi 查看的运行效果 # 使用 mayavi 查看的运行效果
...@@ -46,4 +47,6 @@ if __name__ == '__main__': ...@@ -46,4 +47,6 @@ if __name__ == '__main__':
# mpl_run(bodies, SECONDS_PER_WEEK) # mpl_run(bodies, SECONDS_PER_WEEK)
# 使用 ursina 查看的运行效果 # 使用 ursina 查看的运行效果
ursina_run(bodies, SECONDS_PER_WEEK, position=(0, 0, 0)) # 常用快捷键: P:运行和暂停 O:重新开始 I:显示天体轨迹
# position = 左-右+、上+下-、前+后-
ursina_run(bodies, SECONDS_PER_WEEK, position=(0, AU, -5 * AU))
...@@ -27,4 +27,6 @@ if __name__ == '__main__': ...@@ -27,4 +27,6 @@ if __name__ == '__main__':
# mayavi_run(bodies, SECONDS_PER_HALF_DAY / 2, view_azimuth=-45) # mayavi_run(bodies, SECONDS_PER_HALF_DAY / 2, view_azimuth=-45)
# 使用 ursina 查看的运行效果 # 使用 ursina 查看的运行效果
# 常用快捷键: P:运行和暂停 O:重新开始 I:显示天体轨迹
# position = 左-右+、上+下-、前+后-
ursina_run(bodies, SECONDS_PER_MONTH, position=(0, 0, 0)) ursina_run(bodies, SECONDS_PER_MONTH, position=(0, 0, 0))
...@@ -30,6 +30,6 @@ if __name__ == '__main__': ...@@ -30,6 +30,6 @@ if __name__ == '__main__':
# mayavi_run(bodies, SECONDS_PER_WEEK, view_azimuth=-45) # mayavi_run(bodies, SECONDS_PER_WEEK, view_azimuth=-45)
# 使用 ursina 查看的运行效果 # 使用 ursina 查看的运行效果
# position = 左-右+、上+下-、前+后-
# 常用快捷键: P:运行和暂停 O:重新开始 I:显示天体轨迹 # 常用快捷键: P:运行和暂停 O:重新开始 I:显示天体轨迹
ursina_run(bodies, SECONDS_PER_MONTH, position=(0, AU, -3 * AU), save_as_json='../data/gravity_slingshot.json') # position = 左-右+、上+下-、前+后-
ursina_run(bodies, SECONDS_PER_MONTH, position=(0, AU, -3 * AU))
...@@ -40,6 +40,6 @@ if __name__ == '__main__': ...@@ -40,6 +40,6 @@ if __name__ == '__main__':
# mayavi_run(bodies, SECONDS_PER_WEEK, view_azimuth=-45) # mayavi_run(bodies, SECONDS_PER_WEEK, view_azimuth=-45)
# 使用 ursina 查看的运行效果 # 使用 ursina 查看的运行效果
# position = 左-右+、上+下-、前+后-
# 常用快捷键: P:运行和暂停 O:重新开始 I:显示天体轨迹 # 常用快捷键: P:运行和暂停 O:重新开始 I:显示天体轨迹
# position = 左-右+、上+下-、前+后-
ursina_run(bodies, SECONDS_PER_YEAR, position=(0, 2 * AU, -11 * AU)) ursina_run(bodies, SECONDS_PER_YEAR, position=(0, 2 * AU, -11 * AU))
...@@ -42,6 +42,6 @@ if __name__ == '__main__': ...@@ -42,6 +42,6 @@ if __name__ == '__main__':
# mayavi_run(bodies, SECONDS_PER_WEEK, view_azimuth=-45, view_distance=3e9, view_focalpoint=[5e2, 5e2, 5e2]) # mayavi_run(bodies, SECONDS_PER_WEEK, view_azimuth=-45, view_distance=3e9, view_focalpoint=[5e2, 5e2, 5e2])
# 使用 ursina 查看的运行效果 # 使用 ursina 查看的运行效果
# position = 左-右+、上+下-、前+后-
# 常用快捷键: P:运行和暂停 O:重新开始 I:显示天体轨迹 # 常用快捷键: P:运行和暂停 O:重新开始 I:显示天体轨迹
# position = 左-右+、上+下-、前+后-
ursina_run(bodies, SECONDS_PER_YEAR, position=(0, 2 * AU, -11 * AU)) ursina_run(bodies, SECONDS_PER_YEAR, position=(0, 2 * AU, -11 * AU))
...@@ -23,6 +23,6 @@ if __name__ == '__main__': ...@@ -23,6 +23,6 @@ if __name__ == '__main__':
# mayavi_run(bodies, SECONDS_PER_WEEK, view_azimuth=-45) # mayavi_run(bodies, SECONDS_PER_WEEK, view_azimuth=-45)
# 使用 ursina 查看的运行效果 # 使用 ursina 查看的运行效果
# position = 左-右+、上+下-、前+后-
# 常用快捷键: P:运行和暂停 O:重新开始 I:显示天体轨迹 # 常用快捷键: P:运行和暂停 O:重新开始 I:显示天体轨迹
# position = 左-右+、上+下-、前+后-
ursina_run(bodies, SECONDS_PER_WEEK, position=(0, AU, -3 * AU)) ursina_run(bodies, SECONDS_PER_WEEK, position=(0, AU, -3 * AU))
...@@ -24,6 +24,6 @@ if __name__ == '__main__': ...@@ -24,6 +24,6 @@ if __name__ == '__main__':
# mayavi_run(bodies, SECONDS_PER_WEEK, view_azimuth=-45) # mayavi_run(bodies, SECONDS_PER_WEEK, view_azimuth=-45)
# 使用 ursina 查看的运行效果 # 使用 ursina 查看的运行效果
# position = 左-右+、上+下-、前+后-
# 常用快捷键: P:运行和暂停 O:重新开始 I:显示天体轨迹 # 常用快捷键: P:运行和暂停 O:重新开始 I:显示天体轨迹
# position = 左-右+、上+下-、前+后-
ursina_run(bodies, SECONDS_PER_WEEK, position=(0, AU, -3 * AU)) ursina_run(bodies, SECONDS_PER_WEEK, position=(0, AU, -3 * AU))
...@@ -40,9 +40,9 @@ if __name__ == '__main__': ...@@ -40,9 +40,9 @@ if __name__ == '__main__':
size_scale=2e1) # 月球放大 20 倍,距离保持不变 size_scale=2e1) # 月球放大 20 倍,距离保持不变
] ]
# 使用 ursina 查看的运行效果 # 使用 ursina 查看的运行效果
# 常用快捷键: P:运行和暂停 O:重新开始 I:显示天体轨迹
# position = 左-右+、上+下-、前+后- # position = 左-右+、上+下-、前+后-
# position=(0, 0, 0) 的位置是站在地球视角,可以观看月相变化的过程 # position=(0, 0, 0) 的位置是站在地球视角,可以观看月相变化的过程
# 常用快捷键: P:运行和暂停 O:重新开始 I:显示天体轨迹
ursina_run(bodies, SECONDS_PER_DAY, position=(0, 0, 0), save_as_json="../data/sun_earth_moon.json") ursina_run(bodies, SECONDS_PER_DAY, position=(0, 0, 0), save_as_json="../data/sun_earth_moon.json")
# 使用 mayavi 查看的运行效果 # 使用 mayavi 查看的运行效果
......
...@@ -32,6 +32,6 @@ if __name__ == '__main__': ...@@ -32,6 +32,6 @@ if __name__ == '__main__':
# mayavi_run(bodies, SECONDS_PER_WEEK, view_azimuth=0) # mayavi_run(bodies, SECONDS_PER_WEEK, view_azimuth=0)
# 使用 ursina 查看的运行效果 # 使用 ursina 查看的运行效果
# position = 左-右+、上+下-、前+后-
# 常用快捷键: P:运行和暂停 O:重新开始 I:显示天体轨迹 # 常用快捷键: P:运行和暂停 O:重新开始 I:显示天体轨迹
# position = 左-右+、上+下-、前+后-
ursina_run(bodies, SECONDS_PER_DAY, position=(3 * AU, AU, -4 * AU)) ursina_run(bodies, SECONDS_PER_DAY, position=(3 * AU, AU, -4 * AU))
\ No newline at end of file
...@@ -57,6 +57,6 @@ if __name__ == '__main__': ...@@ -57,6 +57,6 @@ if __name__ == '__main__':
# mpl_run(bodies, SECONDS_PER_WEEK) # mpl_run(bodies, SECONDS_PER_WEEK)
# 使用 ursina 查看的运行效果 # 使用 ursina 查看的运行效果
# position = 左-右+、上+下-、前+后-
# 常用快捷键: P:运行和暂停 O:重新开始 I:显示天体轨迹 # 常用快捷键: P:运行和暂停 O:重新开始 I:显示天体轨迹
# position = 左-右+、上+下-、前+后-
ursina_run(bodies, SECONDS_PER_YEAR, position=(3 * AU, 3 * AU, -20 * AU)) ursina_run(bodies, SECONDS_PER_YEAR, position=(3 * AU, 3 * AU, -20 * AU))
...@@ -31,6 +31,6 @@ if __name__ == '__main__': ...@@ -31,6 +31,6 @@ if __name__ == '__main__':
# mayavi_run(bodies, SECONDS_PER_WEEK, view_azimuth=0) # mayavi_run(bodies, SECONDS_PER_WEEK, view_azimuth=0)
# 使用 ursina 查看的运行效果 # 使用 ursina 查看的运行效果
# position = 左-右+、上+下-、前+后-
# 常用快捷键: P:运行和暂停 O:重新开始 I:显示天体轨迹 # 常用快捷键: P:运行和暂停 O:重新开始 I:显示天体轨迹
# position = 左-右+、上+下-、前+后-
ursina_run(bodies, SECONDS_PER_YEAR, position=(0, 2 * AU, -5 * AU)) ursina_run(bodies, SECONDS_PER_YEAR, position=(0, 2 * AU, -5 * AU))
\ No newline at end of file
...@@ -25,8 +25,9 @@ if __name__ == '__main__': ...@@ -25,8 +25,9 @@ if __name__ == '__main__':
dt = params["dt"] if "dt" in params else SECONDS_PER_YEAR dt = params["dt"] if "dt" in params else SECONDS_PER_YEAR
position = params["position"] if "position" in params else (0, 0, 0) position = params["position"] if "position" in params else (0, 0, 0)
# 使用 ursina 查看的运行效果 # 使用 ursina 查看的运行效果
# position = 左-右+、上+下-、前+后-
# 常用快捷键: P:运行和暂停 O:重新开始 I:显示天体轨迹 # 常用快捷键: P:运行和暂停 O:重新开始 I:显示天体轨迹
# position = 左-右+、上+下-、前+后-
json_file = None # 指定 json_file 保存路径,则会将模拟环境天体数据保存到该json文件中 json_file = None # 指定 json_file 保存路径,则会将模拟环境天体数据保存到该json文件中
ursina_run(bodies, dt, position=position, save_as_json=json_file) ursina_run(bodies, dt, position=position, save_as_json=json_file)
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册