Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Python_超人
宇宙模拟器
提交
27e3bd56
宇宙模拟器
项目概览
Python_超人
/
宇宙模拟器
通知
19
Star
2
Fork
0
代码
文件
提交
分支
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看板
提交
27e3bd56
编写于
4月 08, 2023
作者:
三月三net
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Python超人-宇宙模拟器
上级
08b7690f
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
22 addition
and
13 deletion
+22
-13
bodies/earth.py
bodies/earth.py
+2
-1
bodies/moon.py
bodies/moon.py
+2
-2
sim_scenes/solar_system/sun_earth_moon.py
sim_scenes/solar_system/sun_earth_moon.py
+18
-10
未找到文件。
bodies/earth.py
浏览文件 @
27e3bd56
...
...
@@ -22,7 +22,8 @@ class Earth(Body):
天体质量: 5.97237✕10²⁴ kg
平均密度: 5507.85 kg/m³
"""
def
__init__
(
self
,
name
=
"地球"
,
mass
=
5.97237e24
,
rotate_angle
=
0
,
def
__init__
(
self
,
name
=
"地球"
,
mass
=
5.97237e24
,
rotate_angle
=
23.44
,
init_position
=
[
0
,
0
,
1
*
AU
],
init_velocity
=
[
-
29.79
,
0
,
0
],
texture
=
"earth1.jpg"
,
size_scale
=
1.0
,
distance_scale
=
1.0
,
...
...
bodies/moon.py
浏览文件 @
27e3bd56
...
...
@@ -24,9 +24,9 @@ class Moon(Body):
def
__init__
(
self
,
name
=
"月球"
,
mass
=
7.342e22
,
init_position
=
[
0
,
0
,
363104
+
1.12
*
AU
],
init_velocity
=
[
-
(
29.79
+
1.0
2
3
),
0
,
0
],
init_velocity
=
[
-
(
29.79
+
1.03
),
0
,
0
],
texture
=
"moon.jpg"
,
size_scale
=
1.0
,
distance_scale
=
1.0
,
rotation_speed
=
0.
5487
,
ignore_mass
=
False
,
trail_color
=
None
,
show_name
=
False
):
rotation_speed
=
0.
25
,
ignore_mass
=
False
,
trail_color
=
None
,
show_name
=
False
):
params
=
{
"name"
:
name
,
"mass"
:
mass
,
...
...
sim_scenes/solar_system/sun_earth_moon.py
浏览文件 @
27e3bd56
...
...
@@ -10,6 +10,7 @@ from bodies import Sun, Earth, Moon
from
common.consts
import
SECONDS_PER_HOUR
,
SECONDS_PER_HALF_DAY
,
SECONDS_PER_DAY
,
SECONDS_PER_WEEK
,
SECONDS_PER_MONTH
from
sim_scenes.func
import
mayavi_run
,
ursina_run
from
bodies.body
import
AU
from
simulators.ursina.ursina_event
import
UrsinaEvent
if
__name__
==
'__main__'
:
"""
...
...
@@ -24,26 +25,33 @@ if __name__ == '__main__':
# 观看月相变化的过程:分别是 新月、蛾眉月、上弦月、盈凸、满月、亏凸、下弦月、残月
# 参考:images/moon/月相变化过程.jpeg
# TODO: 月球在摄像机的前方(从 “新月” 开始)
moon_pos
,
moon_vel
=
[
0
,
0
,
384400
],
[
-
(
EARTH_INIT_VELOCITY
+
1.0
2
3
),
0
,
0
]
moon_pos
,
moon_vel
=
[
0
,
0
,
384400
],
[
-
(
EARTH_INIT_VELOCITY
+
1.03
),
0
,
0
]
# TODO: 月球在摄像机的右方(从 “下弦月” 开始),将会从右方出现
# moon_pos, moon_vel = [384400, 0, 0], [-EARTH_INIT_VELOCITY, 0, 1.023]
# TODO: 月球在摄像机的左方(从 “上弦月” 开始)
# moon_pos, moon_vel = [-384400, 0, 0], [EARTH_INIT_VELOCITY, 0, -1.023]
moon
=
Moon
(
init_position
=
moon_pos
,
# 距地距离约: 363104 至 405696 km
init_velocity
=
moon_vel
,
size_scale
=
2e1
)
# 月球放大 20 倍,距离保持不变
bodies
=
[
sun
,
Earth
(
init_position
=
[
0
,
0
,
0
],
init_velocity
=
[
0
,
EARTH_INIT_VELOCITY
,
0
],
size_scale
=
1e1
),
# 地球放大 10 倍,距离保持不变
Moon
(
init_position
=
moon_pos
,
# 距地距离约: 363104 至 405696 km
init_velocity
=
moon_vel
,
size_scale
=
2e1
)
# 月球放大 20 倍,距离保持不变
size_scale
=
1e1
),
# 地球放大 10 倍,距离保持不变
moon
]
def
on_timer_changed
(
time_data
):
from
ursina
import
camera
,
Vec3
camera
.
look_at
(
moon
.
planet
)
camera
.
rotation_z
=
0
# 订阅计时器事件(记录已到达天体列表)
UrsinaEvent
.
on_timer_changed_subscription
(
on_timer_changed
)
# 使用 ursina 查看的运行效果
# 常用快捷键: P:运行和暂停 O:重新开始 I:显示天体轨迹
# position = 左-右+、上+下-、前+后-
# position=(0, 0, 0) 的位置是站在地球视角,可以观看月相变化的过程
ursina_run
(
bodies
,
SECONDS_PER_DAY
,
position
=
(
0
,
0
,
0
))
# 使用 mayavi 查看的运行效果
# mayavi_run(bodies, SECONDS_PER_HALF_DAY / 2, view_azimuth=-45)
ursina_run
(
bodies
,
SECONDS_PER_DAY
,
position
=
(
0
,
0
,
0
),
show_timer
=
True
)
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录