Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Python_超人
宇宙模拟器
提交
4c67a8b1
宇宙模拟器
项目概览
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看板
提交
4c67a8b1
编写于
11月 06, 2023
作者:
三月三net
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Python超人-宇宙模拟器
上级
bb8249a1
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
54 addition
and
27 deletion
+54
-27
sim_lab/wormhole_sim.py
sim_lab/wormhole_sim.py
+54
-27
未找到文件。
sim_lab/wormhole_sim.py
浏览文件 @
4c67a8b1
...
@@ -16,7 +16,7 @@ from bodies import Body
...
@@ -16,7 +16,7 @@ from bodies import Body
from
simulators.ursina.ursina_event
import
UrsinaEvent
from
simulators.ursina.ursina_event
import
UrsinaEvent
ours_cosmic_bg
=
"bg_pan.jpg"
ours_cosmic_bg
=
"bg_pan.jpg"
worms_cosmic_bg
=
"
cosmic3
.jpg"
worms_cosmic_bg
=
"
bg_pan_red
.jpg"
class
UniverseBody
(
Body
):
class
UniverseBody
(
Body
):
...
@@ -93,32 +93,33 @@ if __name__ == '__main__':
...
@@ -93,32 +93,33 @@ if __name__ == '__main__':
"""
"""
# 代码案例如下:
# 代码案例如下:
SIZE_SCALE
=
1
e1
# 生成的太阳放大 50 倍
SIZE_SCALE
=
1
# 生成的太阳放大 50 倍
RUN_DIAMETER
=
1.392e6
RUN_DIAMETER
=
1.392e6
velocity_rate
=
22
velocity_rate
=
22
camera_target
=
CoreValagaClas
(
name
=
"摄像机目标"
,
mass
=
1e30
,
color
=
(
111
,
140
,
255
),
camera_target
=
CoreValagaClas
(
name
=
"摄像机目标"
,
mass
=
1e30
,
color
=
(
111
,
140
,
255
),
init_position
=
[
0
,
0
,
-
AU
],
# init_position=[0, 0, 0],
init_position
=
[
0
,
0
,
AU
/
10
],
init_velocity
=
[
0
,
0
,
0
],
init_velocity
=
[
0
,
0
,
0
],
size_scale
=
SIZE_SCALE
*
1e1
)
# .set_ignore_gravity(True)
size_scale
=
SIZE_SCALE
*
1e1
)
# .set_ignore_gravity(True)
ours_universe
=
OursUniverse
(
ours_universe
=
OursUniverse
(
# size_scale=SIZE_SCALE * 1e3,
# size_scale=SIZE_SCALE * 1e3,
size_scale
=
SIZE_SCALE
,
size_scale
=
SIZE_SCALE
,
init_position
=
[
0
,
0
,
-
AU
],
init_position
=
[
0
,
0
,
-
AU
/
120
],
init_velocity
=
[
0
,
0
,
0
],
init_velocity
=
[
0
,
0
,
0
],
).
set_ignore_gravity
(
True
)
).
set_ignore_gravity
(
True
)
worm_hole
=
WormHole
(
worm_hole
=
WormHole
(
# init_position=[RUN_DIAMETER, RUN_DIAMETER, 0],
# init_position=[RUN_DIAMETER, RUN_DIAMETER, 0],
init_position
=
[
0
,
0
,
AU
],
init_position
=
[
0
,
0
,
AU
/
120
],
init_velocity
=
[
0
,
0
,
0
],
init_velocity
=
[
0
,
0
,
0
],
size_scale
=
SIZE_SCALE
)
#
.set_ignore_gravity(True)
size_scale
=
SIZE_SCALE
)
.
set_ignore_gravity
(
True
)
bodies
=
[
bodies
=
[
#
camera_target,
camera_target
,
ours_universe
,
ours_universe
,
worm_hole
worm_hole
]
]
camera_position
=
[
0
,
0
,
0
]
#
camera_position = [0, 0, 0]
def
on_ready
():
def
on_ready
():
...
@@ -134,33 +135,57 @@ if __name__ == '__main__':
...
@@ -134,33 +135,57 @@ if __name__ == '__main__':
# camera.scale = 1000
# camera.scale = 1000
# camera.parent = camera_target.planet
# camera.parent = camera_target.planet
# camera.rotation_x = 90
# camera.rotation_x = 90
camera_look_at
(
worm_hole
)
camera
.
collider
=
"sphere"
worm_hole
.
planet
.
rotation_y
=
30
worm_hole
.
planet
.
collider
=
"sphere"
ours_universe
.
planet
.
rotation_y
=
130
ours_universe
.
planet
.
init_scale
=
SIZE_SCALE
*
1000
camera_look_at
(
camera_target
)
camera
.
collider
=
"sphere"
worm_hole
.
planet
.
collider
=
"sphere"
ours_universe
.
planet
.
init_scale
=
SIZE_SCALE
*
1000
# camera_position = camera.position
# camera_position = camera.position
def
on_timer_changed
(
time_data
):
def
on_timer_changed
(
time_data
):
global
camera_position
global
camera_position
# return
# pass
# pass
# camera_look_at(camera_target)
# camera_look_at(camera_target)
# camera.rotation_x -= 2
# camera.rotation_x -= 2
#
camera_target.planet.look_at(worm_hole.planet)
camera_target
.
planet
.
look_at
(
worm_hole
.
planet
)
if
camera
.
intersects
(
worm_hole
.
planet
).
hit
:
if
camera
.
intersects
(
worm_hole
.
planet
).
hit
:
# worm_hole.planet.init_scale = SIZE_SCALE * 1000
ours_universe
.
planet
.
init_scale
=
SIZE_SCALE
if
worm_hole
.
planet
.
init_scale
<
SIZE_SCALE
*
1000
:
if
worm_hole
.
planet
.
init_scale
<
SIZE_SCALE
*
1000
:
worm_hole
.
planet
.
init_scale
*=
1.1
worm_hole
.
planet
.
init_scale
*=
1.1
if
ours_universe
.
planet
.
init_scale
>
SIZE_SCALE
:
# if ours_universe.planet.init_scale > SIZE_SCALE:
ours_universe
.
planet
.
init_scale
/=
1.1
# ours_universe.planet.init_scale /= 1.1
camera
.
rotation_y
+=
0.1
if
not
hasattr
(
camera
,
"init_rotation_y"
):
camera
.
init_rotation_y
=
camera
.
rotation_y
camera
.
rotation_y_v
=
0.01
if
abs
(
camera
.
init_rotation_y
-
camera
.
rotation_y
)
<
10
:
camera
.
rotation_y_v
+=
0.005
elif
abs
(
camera
.
init_rotation_y
-
camera
.
rotation_y
)
<
90
:
camera
.
rotation_y_v
+=
0.01
elif
abs
(
camera
.
init_rotation_y
-
camera
.
rotation_y
)
<
120
:
camera
.
rotation_y_v
-=
0.01
elif
abs
(
camera
.
init_rotation_y
-
camera
.
rotation_y
)
<
180
:
camera
.
rotation_y_v
-=
0.01
if
camera
.
rotation_y_v
<
0.1
:
camera
.
rotation_y_v
=
0.1
else
:
camera
.
rotation_y_v
=
0
camera
.
rotation_y
+=
camera
.
rotation_y_v
# camera_look_at(ours_universe)
# camera_look_at(ours_universe)
else
:
# else:
# if two_bodies_colliding(camera_target, worm_hole):
# if two_bodies_colliding(camera_target, worm_hole):
# camera_target.stop_and_ignore_gravity()
# camera_target.stop_and_ignore_gravity()
# print(1,camera_target.planet.position)
# print(1,camera_target.planet.position)
# camera_target.planet.position = lerp(camera_target.planet.position, worm_hole.planet.position, 1e-2)
# camera_target.planet.position = lerp(camera_target.planet.position, worm_hole.planet.position, 1e-2)
# print(2,camera_target.planet.position)
# print(2,camera_target.planet.position)
camera
.
position
=
lerp
(
camera
.
position
,
worm_hole
.
planet
.
position
,
1e-2
)
# camera.position = (camera.position[0],camera.position[1],camera.position[2]) #
camera
.
position
=
lerp
(
camera
.
position
,
camera_target
.
planet
.
position
,
0.3e-2
)
# camera_position = [camera_position[0], camera_position[1], camera_position[2] - 0.01]
# camera_position = [camera_position[0], camera_position[1], camera_position[2] - 0.01]
# camera.position = camera_position
# camera.position = camera_position
...
@@ -177,6 +202,8 @@ if __name__ == '__main__':
...
@@ -177,6 +202,8 @@ if __name__ == '__main__':
# position = 左-右+、上+下-、前+后-
# position = 左-右+、上+下-、前+后-
ursina_run
(
bodies
,
SECONDS_PER_DAY
/
24
,
ursina_run
(
bodies
,
SECONDS_PER_DAY
/
24
,
# position=(0, AU / 1200, -1.003 * AU),
# position=(0, AU / 1200, -1.003 * AU),
# position=[-AU/100, 0, 0],
position
=
[
0
,
0
,
-
AU
/
10
],
cosmic_bg
=
''
,
cosmic_bg
=
''
,
# gravity_works=False,
# gravity_works=False,
timer_enabled
=
True
,
timer_enabled
=
True
,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录