Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Python_超人
太阳系三体模拟器
提交
2db1f77c
太阳系三体模拟器
项目概览
Python_超人
/
太阳系三体模拟器
通知
1075
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看板
提交
2db1f77c
编写于
3月 12, 2023
作者:
三月三net
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
太阳系三体模拟器
上级
2a9b4b79
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
36 addition
and
12 deletion
+36
-12
scenes/sun_earth_moon.py
scenes/sun_earth_moon.py
+1
-1
simulators/ursina_simulator.py
simulators/ursina_simulator.py
+31
-8
simulators/views/ursina_view.py
simulators/views/ursina_view.py
+4
-3
未找到文件。
scenes/sun_earth_moon.py
浏览文件 @
2db1f77c
...
...
@@ -32,4 +32,4 @@ if __name__ == '__main__':
# mayavi_run(bodies, SECONDS_PER_HALF_DAY / 2, view_azimuth=-45)
# 使用 ursina 查看的运行效果
ursina_run
(
bodies
,
SECONDS_PER_
DAY
,
position
=
(
AU
,
0
,
0
))
ursina_run
(
bodies
,
SECONDS_PER_
WEEK
,
position
=
(
0
,
0
,
0
))
simulators/ursina_simulator.py
浏览文件 @
2db1f77c
...
...
@@ -26,7 +26,7 @@ class WorldGrid(Entity): # Entity # 定义构造方法
def
__init__
(
self
):
super
().
__init__
()
s
=
100
grid
=
Entity
(
model
=
Grid
(
s
,
s
),
scale
=
s
*
20
,
color
=
color
.
rgba
(
255
,
255
,
255
,
20
),
rotation_x
=
90
,
grid
=
Entity
(
model
=
Grid
(
s
,
s
),
scale
=
s
*
20
,
color
=
color
.
rgba
(
255
,
255
,
255
,
20
),
rotation_x
=
90
,
position
=
(
0
,
-
80
,
0
))
# 坐标轴
# vertsx = ((0, 0, 0), (10, 0, 0))
...
...
@@ -170,10 +170,23 @@ class UrsinaSimulator(Simulator):
EditorCamera
()
pause_handler
=
Entity
(
ignore_paused
=
True
)
# 加载中文字体文件
Text
.
default_font
=
'simsun.ttc'
# text_time_scale = "1"
text_time_scale_info
=
None
def
show_text_time_scale_info
():
nonlocal
text_time_scale_info
if
text_time_scale_info
is
not
None
:
text_time_scale_info
.
disable
()
text_time_scale
=
"控制倍率:"
+
str
(
application
.
time_scale
).
ljust
(
4
,
" "
)
text_time_scale_info
=
Text
(
text
=
text_time_scale
,
position
=
(
-
0.8
,
0.5
),
origin
=
(
-
1
,
1
),
background
=
True
)
# 按空格键则暂停
def
pause_handler_input
(
key
):
time_scales
=
[
1
,
10
,
20
,
30
]
nonlocal
text_time_scale_info
time_scales
=
[
0.05
,
0.1
,
0.2
,
0.5
,
1
,
5
,
10
,
20
,
30
]
print
(
key
)
if
key
==
'space'
:
application
.
paused
=
not
application
.
paused
# Pause/unpause the game.
elif
key
==
'tab'
:
...
...
@@ -181,18 +194,28 @@ class UrsinaSimulator(Simulator):
# 具体来说,它是一个浮点数,用于调整游戏时间流逝速度的比例,其默认值为 1.0,表示正常速度。
# 当你将它设置为小于 1.0 的值时,游戏时间会变慢,而设置为大于 1.0 的值时,游戏时间则会变快。
for
idx
,
time_scale
in
enumerate
(
time_scales
):
if
in
t
(
application
.
time_scale
)
==
time_scale
:
if
floa
t
(
application
.
time_scale
)
==
time_scale
:
if
idx
<
len
(
time_scales
)
-
1
:
application
.
time_scale
=
time_scales
[
idx
+
1
]
break
else
:
application
.
time_scale
=
1
print
(
application
.
time_scale
)
application
.
time_scale
=
time_scales
[
0
]
elif
key
==
'+'
or
key
==
"= up"
:
if
application
.
time_scale
in
time_scales
:
idx
=
time_scales
.
index
(
application
.
time_scale
)
if
idx
<
len
(
time_scales
)
-
1
:
application
.
time_scale
=
time_scales
[
idx
+
1
]
elif
key
==
'-'
or
key
==
"- up"
:
if
application
.
time_scale
in
time_scales
:
idx
=
time_scales
.
index
(
application
.
time_scale
)
if
idx
>
0
:
application
.
time_scale
=
time_scales
[
idx
-
1
]
show_text_time_scale_info
()
pause_handler
.
input
=
pause_handler_input
# 加载中文字体文件
Text
.
default_font
=
'simsun.ttc'
key_info_str
=
"方位控制[QWEASD + 鼠标] 暂停控制[空格] 摄像机移动速度[Tab]"
show_text_time_scale_info
()
key_info_str
=
"退出[按2次ESC] 方位控制[鼠标QWEASD] 开始暂停[空格] 控制倍率[Tab - +]"
key_info
=
Text
(
text
=
key_info_str
,
position
=
(
-
0.8
,
0.5
),
origin
=
(
-
1
,
1
),
background
=
True
)
self
.
app
.
run
()
...
...
simulators/views/ursina_view.py
浏览文件 @
2db1f77c
...
...
@@ -50,12 +50,13 @@ class UrsinaPlayer(FirstPersonController):
#
# camera.add_script(SmoothFollow(targets_parent, offset=(0, 8, -20)))
pos
=
np
.
array
(
position
)
*
SCALE_FACTOR
self
.
position
=
Vec3
(
pos
[
0
],
pos
[
1
],
pos
[
2
])
#
self.position = Vec3(pos[0], pos[1], pos[2])
# 将摄像机位置设置为 x=0、y=1、z=0 的位置
#
camera.position = Vec3(pos[0], pos[1], pos[2])
camera
.
position
=
Vec3
(
pos
[
0
],
pos
[
1
],
pos
[
2
])
# self.position = Vec3(pos[0], pos[1], pos[2])
# 将摄像机的观察角度绕 x 轴旋转 45 度,绕 y 轴旋转 0 度,绕 z 轴旋转 0 度
camera
.
rotation
=
Vec3
(
45
,
90
,
0
)
# camera.rotation = Vec3(45, 90, 0)
camera
.
rotation
=
Vec3
(
0
,
0
,
0
)
# self.gravity = 0
# self.vspeed = 400
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录