Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Python_超人
宇宙模拟器
提交
1f719328
宇宙模拟器
项目概览
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看板
提交
1f719328
编写于
4月 08, 2023
作者:
三月三net
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Python超人-宇宙模拟器
上级
c1b791b5
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
41 addition
and
13 deletion
+41
-13
sim_scenes/func.py
sim_scenes/func.py
+19
-0
sim_scenes/solar_system/earth_moon.py
sim_scenes/solar_system/earth_moon.py
+17
-7
sim_scenes/solar_system/sun_earth_moon.py
sim_scenes/solar_system/sun_earth_moon.py
+5
-6
未找到文件。
sim_scenes/func.py
浏览文件 @
1f719328
...
...
@@ -56,6 +56,25 @@ def mayavi_run(bodies, dt=SECONDS_PER_WEEK,
mlab
.
show
()
def
camera_look_at
(
body
,
rotation_x
=
None
,
rotation_y
=
None
,
rotation_z
=
None
):
"""
让摄像机看向指定天体
@param body: 天体
@param rotation_x: x轴旋转角度(None表示不旋转)
@param rotation_y: y轴旋转角度(None表示不旋转)
@param rotation_z: z轴旋转角度(None表示不旋转)
@return:
"""
from
ursina
import
camera
camera
.
look_at
(
body
.
planet
)
if
rotation_x
is
not
None
:
camera
.
rotation_x
=
rotation_x
if
rotation_y
is
not
None
:
camera
.
rotation_y
=
rotation_y
if
rotation_z
is
not
None
:
camera
.
rotation_z
=
rotation_z
def
ursina_run
(
bodies
,
dt
=
SECONDS_PER_HALF_DAY
,
position
=
(
0
,
0
,
0
),
...
...
sim_scenes/solar_system/earth_moon.py
浏览文件 @
1f719328
...
...
@@ -8,25 +8,35 @@
# ==============================================================================
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
sim_scenes.func
import
mayavi_run
,
ursina_run
,
camera_look_at
from
bodies.body
import
AU
from
simulators.ursina.ursina_event
import
UrsinaEvent
if
__name__
==
'__main__'
:
"""
地球、月球
"""
# 地球的Y方向初始速度
EARTH_INIT_VELOCITY
=
0
OFFSETTING
=
0
# TODO: 抵消月球带动地球的力
# OFFSETTING = 0.01265
bodies
=
[
# sun,
Earth
(
init_position
=
[
0
,
0
,
0
],
texture
=
"earth_hd.jpg"
,
init_velocity
=
[
-
EARTH_INIT_VELOCITY
,
0
,
0
],
size_scale
=
0.5e1
),
# 地球放大 5 倍,距离保持不变
init_velocity
=
[
OFFSETTING
,
0
,
0
],
size_scale
=
0.5e1
),
# 地球放大 5 倍,距离保持不变
Moon
(
init_position
=
[
0
,
0
,
363104
],
# 距地距离约: 363104 至 405696 km
init_velocity
=
[
-
(
EARTH_INIT_VELOCITY
+
1.023
)
,
0
,
0
],
size_scale
=
1e1
)
# 月球放大 10 倍,距离保持不变
init_velocity
=
[
-
1.03
,
0
,
0
],
size_scale
=
1e1
)
# 月球放大 10 倍,距离保持不变
]
# mayavi_run(bodies, SECONDS_PER_HALF_DAY / 2, view_azimuth=-45)
def
on_ready
():
earth
=
bodies
[
0
]
camera_look_at
(
earth
)
UrsinaEvent
.
on_ready_subscription
(
on_ready
)
# 使用 ursina 查看的运行效果
# 常用快捷键: P:运行和暂停 O:重新开始 I:显示天体轨迹
# position = 左-右+、上+下-、前+后-
ursina_run
(
bodies
,
SECONDS_PER_MONTH
,
position
=
(
-
300000
,
200000
,
-
1300000
),
show_trail
=
True
)
ursina_run
(
bodies
,
SECONDS_PER_MONTH
,
position
=
(
-
300000
,
1500000
,
-
1000
),
show_timer
=
True
,
show_trail
=
True
)
sim_scenes/solar_system/sun_earth_moon.py
浏览文件 @
1f719328
...
...
@@ -8,7 +8,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
sim_scenes.func
import
mayavi_run
,
ursina_run
,
camera_look_at
from
bodies.body
import
AU
from
simulators.ursina.ursina_event
import
UrsinaEvent
...
...
@@ -41,17 +41,16 @@ if __name__ == '__main__':
moon
]
def
on_timer_changed
(
time_data
):
from
ursina
import
camera
,
Vec3
camera_look_at
(
moon
,
rotation_z
=
0
)
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
),
show_timer
=
True
)
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.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录