Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Python_超人
太阳系三体模拟器
提交
52574dec
太阳系三体模拟器
项目概览
Python_超人
/
太阳系三体模拟器
通知
1074
Star
131
Fork
128
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
太阳系三体模拟器
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
52574dec
编写于
3月 19, 2023
作者:
三月三net
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
太阳系三体模拟器
上级
c1e37fd0
变更
12
隐藏空白更改
内联
并排
Showing
12 changed file
with
22 addition
and
16 deletion
+22
-16
scenes/demo.py
scenes/demo.py
+8
-5
scenes/earth_moon.py
scenes/earth_moon.py
+2
-0
scenes/gravity_slingshot.py
scenes/gravity_slingshot.py
+2
-2
scenes/solar_system_1.py
scenes/solar_system_1.py
+1
-1
scenes/solar_system_2.py
scenes/solar_system_2.py
+1
-1
scenes/sun_earth.py
scenes/sun_earth.py
+1
-1
scenes/sun_earth_jupiter.py
scenes/sun_earth_jupiter.py
+1
-1
scenes/sun_earth_moon.py
scenes/sun_earth_moon.py
+1
-1
scenes/three_body_01.py
scenes/three_body_01.py
+1
-1
scenes/three_body_03.py
scenes/three_body_03.py
+1
-1
scenes/two_body_01.py
scenes/two_body_01.py
+1
-1
scenes/ursina_json_sim.py
scenes/ursina_json_sim.py
+2
-1
未找到文件。
scenes/demo.py
浏览文件 @
52574dec
...
@@ -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.1
2
*
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
))
scenes/earth_moon.py
浏览文件 @
52574dec
...
@@ -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
))
scenes/gravity_slingshot.py
浏览文件 @
52574dec
...
@@ -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
))
scenes/solar_system_1.py
浏览文件 @
52574dec
...
@@ -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
))
scenes/solar_system_2.py
浏览文件 @
52574dec
...
@@ -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
))
scenes/sun_earth.py
浏览文件 @
52574dec
...
@@ -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
))
scenes/sun_earth_jupiter.py
浏览文件 @
52574dec
...
@@ -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
))
scenes/sun_earth_moon.py
浏览文件 @
52574dec
...
@@ -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 查看的运行效果
...
...
scenes/three_body_01.py
浏览文件 @
52574dec
...
@@ -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
scenes/three_body_03.py
浏览文件 @
52574dec
...
@@ -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
))
scenes/two_body_01.py
浏览文件 @
52574dec
...
@@ -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
scenes/ursina_json_sim.py
浏览文件 @
52574dec
...
@@ -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.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录