Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Python_超人
宇宙模拟器
提交
15270931
宇宙模拟器
项目概览
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看板
提交
15270931
编写于
6月 23, 2023
作者:
三月三net
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Python超人-宇宙模拟器
上级
54dc0e89
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
33 addition
and
23 deletion
+33
-23
sim_scenes/fiction/earth_orbit_stopped.py
sim_scenes/fiction/earth_orbit_stopped.py
+10
-19
sim_scenes/func.py
sim_scenes/func.py
+4
-0
simulators/ursina/entities/world_grid.py
simulators/ursina/entities/world_grid.py
+8
-3
simulators/ursina_simulator.py
simulators/ursina_simulator.py
+11
-1
未找到文件。
sim_scenes/fiction/earth_orbit_stopped.py
浏览文件 @
15270931
...
@@ -10,7 +10,7 @@ from bodies import Sun, Earth, Moon
...
@@ -10,7 +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
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
,
camera_look_at
,
two_bodies_colliding
,
set_camera_parent
from
sim_scenes.func
import
mayavi_run
,
ursina_run
,
camera_look_at
,
two_bodies_colliding
,
set_camera_parent
from
bodies.body
import
AU
from
bodies.body
import
AU
from
simulators.ursina.entities.body_timer
import
BodyTimer
from
simulators.ursina.entities.body_timer
import
BodyTimer
,
TimeData
from
simulators.ursina.ui.control_ui
import
ControlUI
from
simulators.ursina.ui.control_ui
import
ControlUI
from
simulators.ursina.ursina_event
import
UrsinaEvent
from
simulators.ursina.ursina_event
import
UrsinaEvent
from
ursina
import
application
,
camera
,
Vec3
from
ursina
import
application
,
camera
,
Vec3
...
@@ -27,9 +27,8 @@ if __name__ == '__main__':
...
@@ -27,9 +27,8 @@ if __name__ == '__main__':
"""
"""
# 地球的Y方向初始速度
# 地球的Y方向初始速度
EARTH_INIT_VELOCITY
=
0
# 0km/s
EARTH_INIT_VELOCITY
=
0
# 0km/s
sun
=
Sun
(
init_position
=
[
AU
/
math
.
sqrt
(
2
),
0
,
AU
/
math
.
sqrt
(
2
)],
size_scale
=
1
)
sun
=
Sun
(
init_position
=
[
0
,
0
,
0
],
size_scale
=
1
)
sun
=
Sun
(
init_position
=
[
0
,
0
,
AU
],
size_scale
=
1
)
earth
=
Earth
(
init_position
=
[
0
,
0
,
-
AU
],
earth
=
Earth
(
init_position
=
[
0
,
0
,
0
],
init_velocity
=
[
0
,
EARTH_INIT_VELOCITY
,
0
],
init_velocity
=
[
0
,
EARTH_INIT_VELOCITY
,
0
],
size_scale
=
1
).
set_light_disable
(
True
)
size_scale
=
1
).
set_light_disable
(
True
)
bodies
=
[
bodies
=
[
...
@@ -40,29 +39,21 @@ if __name__ == '__main__':
...
@@ -40,29 +39,21 @@ if __name__ == '__main__':
def
on_ready
():
def
on_ready
():
# 运行前触发
# 运行前触发
application
.
time_scale
=
0.01
application
.
time_scale
=
0.0
000
1
camera
.
fov
=
50
camera
.
fov
=
50
def
on_timer_changed
(
time_data
):
def
on_timer_changed
(
time_data
:
TimeData
):
if
time_data
.
total_days
<
18
:
camera_look_at
(
earth
,
rotation_z
=
0
)
fov_offset
=
0.1
earth_pos
=
earth
.
planet
.
world_position
elif
time_data
.
total_days
<
30
:
camera
.
world_position
=
Vec3
(
earth_pos
[
0
],
earth_pos
[
1
]
+
0.01
,
earth_pos
[
2
]
-
0.1
)
fov_offset
=
0.04
elif
time_data
.
total_days
<
40
:
fov_offset
=
0.02
else
:
fov_offset
=
0
if
time_data
.
total_minutes
%
3
==
0
and
camera
.
fov
>
1.5
:
camera
.
fov
-=
fov_offset
camera_look_at
(
earth
,
rotation_z
=
0
)
if
two_bodies_colliding
(
sun
,
earth
):
if
two_bodies_colliding
(
sun
,
earth
):
ControlUI
.
current_ui
.
show_message
(
"地球已到达太阳表面"
,
close_time
=-
1
)
ControlUI
.
current_ui
.
show_message
(
"地球已到达太阳表面"
,
close_time
=-
1
)
application
.
pause
()
application
.
pause
()
# 设置计时器的最小时间单位为分钟
# 设置计时器的最小时间单位为分钟
BodyTimer
().
min_unit
=
BodyTimer
.
MIN_UNIT_HOURS
BodyTimer
().
min_unit
=
BodyTimer
.
MIN_UNIT_HOURS
...
@@ -76,6 +67,6 @@ if __name__ == '__main__':
...
@@ -76,6 +67,6 @@ if __name__ == '__main__':
# 常用快捷键: P:运行和暂停 O:重新开始 I:显示天体轨迹
# 常用快捷键: P:运行和暂停 O:重新开始 I:显示天体轨迹
# position = 左-右+、上+下-、前+后-
# position = 左-右+、上+下-、前+后-
# position=(0, 0, 0) 的位置是站在地球视角,可以观看月相变化的过程
# position=(0, 0, 0) 的位置是站在地球视角,可以观看月相变化的过程
ursina_run
(
bodies
,
SECONDS_PER_DAY
,
position
=
(
0
,
0.00
2
*
AU
,
-
0.002
*
AU
),
ursina_run
(
bodies
,
SECONDS_PER_DAY
,
position
=
(
0
,
0.00
01
*
AU
,
-
0.002
*
AU
),
show_timer
=
True
,
show_timer
=
True
,
show_grid
=
True
)
show_grid
=
True
)
sim_scenes/func.py
浏览文件 @
15270931
...
@@ -112,6 +112,8 @@ def ursina_run(bodies,
...
@@ -112,6 +112,8 @@ def ursina_run(bodies,
cosmic_bg
=
None
,
cosmic_bg
=
None
,
bg_music
=
None
,
bg_music
=
None
,
show_grid
=
True
,
show_grid
=
True
,
grid_position
=
None
,
grid_scale
=
None
,
show_trail
=
False
,
show_trail
=
False
,
show_name
=
False
,
show_name
=
False
,
show_timer
=
False
,
show_timer
=
False
,
...
@@ -179,6 +181,8 @@ def ursina_run(bodies,
...
@@ -179,6 +181,8 @@ def ursina_run(bodies,
simulator
.
run
(
dt
,
simulator
.
run
(
dt
,
cosmic_bg
=
cosmic_bg
,
cosmic_bg
=
cosmic_bg
,
show_grid
=
show_grid
,
show_grid
=
show_grid
,
grid_position
=
grid_position
,
grid_scale
=
grid_scale
,
show_timer
=
show_timer
,
show_timer
=
show_timer
,
timer_enabled
=
timer_enabled
,
timer_enabled
=
timer_enabled
,
bg_music
=
bg_music
,
bg_music
=
bg_music
,
...
...
simulators/ursina/entities/world_grid.py
浏览文件 @
15270931
...
@@ -26,11 +26,16 @@ class WorldGrid(Singleton, Entity):
...
@@ -26,11 +26,16 @@ class WorldGrid(Singleton, Entity):
arrow_y
,
line_y
,
text_y
=
create_arrow_line
((
0
,
0
,
0
),
(
0
,
10
,
0
),
label
=
"Y"
,
color
=
color
.
green
)
arrow_y
,
line_y
,
text_y
=
create_arrow_line
((
0
,
0
,
0
),
(
0
,
10
,
0
),
label
=
"Y"
,
color
=
color
.
green
)
arrow_z
,
line_z
,
text_z
=
create_arrow_line
((
0
,
0
,
0
),
(
0
,
0
,
10
),
label
=
"Z"
,
color
=
color
.
yellow
)
arrow_z
,
line_z
,
text_z
=
create_arrow_line
((
0
,
0
,
0
),
(
0
,
0
,
10
),
label
=
"Z"
,
color
=
color
.
yellow
)
def
__init__
(
self
):
def
__init__
(
self
,
position
=
None
,
scale
=
None
):
super
().
__init__
()
super
().
__init__
()
s
=
120
if
scale
is
None
:
s
=
120
else
:
s
=
scale
if
position
is
None
:
position
=
(
0
,
-
80
,
0
)
grid
=
Entity
(
model
=
Grid
(
s
,
s
),
scale
=
s
*
60
,
color
=
color
.
rgba
(
255
,
255
,
255
,
20
),
rotation_x
=
90
,
grid
=
Entity
(
model
=
Grid
(
s
,
s
),
scale
=
s
*
60
,
color
=
color
.
rgba
(
255
,
255
,
255
,
20
),
rotation_x
=
90
,
position
=
(
0
,
-
80
,
0
)
)
position
=
position
)
grid
.
set_light_off
()
grid
.
set_light_off
()
# self.draw_axises()
# self.draw_axises()
...
...
simulators/ursina_simulator.py
浏览文件 @
15270931
...
@@ -302,7 +302,17 @@ class UrsinaSimulator(Simulator):
...
@@ -302,7 +302,17 @@ class UrsinaSimulator(Simulator):
if
"show_grid"
in
kwargs
:
if
"show_grid"
in
kwargs
:
if
kwargs
[
"show_grid"
]:
if
kwargs
[
"show_grid"
]:
WorldGrid
()
if
"grid_scale"
in
kwargs
:
grid_scale
=
kwargs
[
"grid_scale"
]
else
:
grid_scale
=
None
if
"grid_position"
in
kwargs
:
grid_position
=
kwargs
[
"grid_position"
]
else
:
grid_position
=
None
WorldGrid
(
grid_position
,
grid_scale
)
if
"cosmic_bg"
in
kwargs
:
if
"cosmic_bg"
in
kwargs
:
cosmic_bg
=
kwargs
[
"cosmic_bg"
]
cosmic_bg
=
kwargs
[
"cosmic_bg"
]
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录