Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Python_超人
宇宙模拟器
提交
504dc7e4
宇宙模拟器
项目概览
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看板
提交
504dc7e4
编写于
7月 02, 2023
作者:
三月三net
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Python超人-宇宙模拟器
上级
2b8f6bb4
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
49 addition
and
8 deletion
+49
-8
sim_scenes/science/speed_of_light_3d.py
sim_scenes/science/speed_of_light_3d.py
+49
-8
未找到文件。
sim_scenes/science/speed_of_light_3d.py
浏览文件 @
504dc7e4
...
@@ -12,6 +12,10 @@ from common.consts import LIGHT_SPEED
...
@@ -12,6 +12,10 @@ from common.consts import LIGHT_SPEED
from
sim_scenes.science.speed_of_light_init
import
SpeedOfLightInit
from
sim_scenes.science.speed_of_light_init
import
SpeedOfLightInit
# TODO: 三种不同的摄像机视角
# TODO: 三种不同的摄像机视角
from
simulators.ursina.entities.body_timer
import
TimeData
from
simulators.ursina.entities.entity_utils
import
get_value_direction_vectors
from
simulators.ursina.ursina_event
import
UrsinaEvent
camera_follow_light
=
None
# 摄像机固定,不会跟随光
camera_follow_light
=
None
# 摄像机固定,不会跟随光
camera_follow_light
=
'ForwardView'
# 摄像机跟随光,方向是向前看
camera_follow_light
=
'ForwardView'
# 摄像机跟随光,方向是向前看
...
@@ -22,8 +26,8 @@ init = SpeedOfLightInit(camera_follow_light)
...
@@ -22,8 +26,8 @@ init = SpeedOfLightInit(camera_follow_light)
# 创建太阳系天体(忽略质量,引力无效,初速度全部为0)
# 创建太阳系天体(忽略质量,引力无效,初速度全部为0)
bodies
=
create_solar_system_bodies
(
ignore_mass
=
True
,
init_velocity
=
[
0
,
0
,
0
])
bodies
=
create_solar_system_bodies
(
ignore_mass
=
True
,
init_velocity
=
[
0
,
0
,
0
])
camera_pos
=
"left"
#
camera_pos = "left"
#
camera_pos = "right"
camera_pos
=
"right"
camera_l2r
=
0.01
*
AU
camera_l2r
=
0.01
*
AU
if
camera_pos
==
"right"
:
# 摄像机右眼
if
camera_pos
==
"right"
:
# 摄像机右眼
...
@@ -46,19 +50,56 @@ init.light_ship = light_ship
...
@@ -46,19 +50,56 @@ init.light_ship = light_ship
init
.
bodies
=
bodies
init
.
bodies
=
bodies
init
.
event_subscription
()
init
.
event_subscription
()
UrsinaEvent
.
on_reset_unsubscription
(
init
.
on_reset
)
def
on_reset
():
init
.
on_reset
init
.
arrived_info
=
"距离[太阳中心]:${distance}
\n\n
"
init
.
arrived_info
=
"距离[太阳中心]:${distance}
\n\n
光速飞船速度:${speed}
\n\n
"
def
on_timer_changed
(
time_data
:
TimeData
):
velocity
,
_
=
get_value_direction_vectors
(
light_ship
.
velocity
)
distance
=
round
(
init
.
light_ship
.
position
[
2
]
/
AU
,
4
)
text
=
init
.
arrived_info
.
replace
(
"${distance}"
,
"%.4f AU"
%
distance
)
init
.
text_panel
.
text
=
text
.
replace
(
"${speed}"
,
str
(
round
(
velocity
/
LIGHT_SPEED
,
1
))
+
"倍光速"
)
# 订阅重新开始事件
# 按键盘的 “O” 重置键会触发 on_reset
UrsinaEvent
.
on_reset_subscription
(
on_reset
)
# 订阅计时器事件(记录已到达天体列表)
# 运行中,每时每刻都会触发 on_timer_changed
UrsinaEvent
.
on_timer_changed_subscription
(
on_timer_changed
)
def
body_arrived
(
body
):
def
body_arrived
(
body
):
if
body
.
name
==
"火星"
:
# 到达每个行星都会触发,对光速飞船进行加速,超光速前进(使用未来曲率引擎技术)
if
body
.
name
==
"火星"
:
# 到达火星,加速前进,并进行攀升
light_ship
.
acceleration
=
[
0
,
35
,
300
]
light_ship
.
acceleration
=
[
0
,
35
,
300
]
elif
body
.
name
==
"木星"
:
elif
body
.
name
==
"木星"
:
# 到达木星,加速前进,并进行下降
light_ship
.
acceleration
=
[
0
,
-
100
,
200
]
light_ship
.
acceleration
=
[
0
,
-
100
,
200
]
elif
body
.
name
==
"土星"
:
elif
body
.
name
==
"土星"
:
# 到达土星,加速前进,并进行攀升
light_ship
.
acceleration
=
[
0
,
55
,
200
]
light_ship
.
acceleration
=
[
0
,
55
,
200
]
elif
body
.
name
==
"天王星"
:
elif
body
.
name
==
"天王星"
:
# 到达天王星,加速前进,并进行下降
light_ship
.
acceleration
=
[
0
,
-
50
,
200
]
light_ship
.
acceleration
=
[
0
,
-
50
,
200
]
elif
body
.
name
==
"海王星"
:
elif
body
.
name
==
"海王星"
:
# 到达海王星,加速前进,并进行攀升
light_ship
.
acceleration
=
[
-
3
,
48
,
300
]
light_ship
.
acceleration
=
[
-
3
,
48
,
300
]
print
(
body
)
# print(body)
# def body_arrived(body):
# # 到达每个行星都会触发,对光速飞船进行加速,超光速前进(使用未来曲率引擎技术)
# if body.name == "火星": # 到达火星,加速前进,并进行攀升
# light_ship.acceleration = [0, 35000, 300000]
# elif body.name == "木星": # 到达木星,加速前进,并进行下降
# light_ship.acceleration = [0, -100000, 200000]
# elif body.name == "土星": # 到达土星,加速前进,并进行攀升
# light_ship.acceleration = [0, 55000, 200000]
# elif body.name == "天王星": # 到达天王星,加速前进,并进行下降
# light_ship.acceleration = [0, -50000, 200000]
# elif body.name == "海王星": # 到达海王星,加速前进,并进行攀升
# light_ship.acceleration = [-3, 48000, 300000]
init
.
body_arrived
=
body_arrived
init
.
body_arrived
=
body_arrived
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录