Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Python_超人
宇宙模拟器
提交
57b9da45
宇宙模拟器
项目概览
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看板
提交
57b9da45
编写于
10月 26, 2023
作者:
三月三net
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Python超人-宇宙模拟器
上级
e9ab9d0a
变更
3
显示空白变更内容
内联
并排
Showing
3 changed file
with
35 addition
and
27 deletion
+35
-27
sim_scenes/fiction/earth_orbit_stopped.py
sim_scenes/fiction/earth_orbit_stopped.py
+2
-2
sim_scenes/solar_system/halley_comet_sim.py
sim_scenes/solar_system/halley_comet_sim.py
+18
-15
simulators/ursina/ursina_mesh.py
simulators/ursina/ursina_mesh.py
+15
-10
未找到文件。
sim_scenes/fiction/earth_orbit_stopped.py
浏览文件 @
57b9da45
...
@@ -146,7 +146,7 @@ class EarthOrbitStoppedSim:
...
@@ -146,7 +146,7 @@ class EarthOrbitStoppedSim:
if
mercury_range
[
0
]
-
2
<
time_data
.
total_days
<
mercury_range
[
1
]:
if
mercury_range
[
0
]
-
2
<
time_data
.
total_days
<
mercury_range
[
1
]:
self
.
mercury_orbit_line
.
enabled
=
True
self
.
mercury_orbit_line
.
enabled
=
True
# 由于天体运行不是标准的圆形,则需要动态调整轨道的大小,保证轨道线始终在天体的中心位置
# 由于天体运行不是标准的圆形,则需要动态调整轨道的大小,保证轨道线始终在天体的中心位置
self
.
mercury_orbit_line
.
auto_adj
_scale
()
self
.
mercury_orbit_line
.
auto_adj
ust
()
else
:
else
:
self
.
mercury_orbit_line
.
enabled
=
False
self
.
mercury_orbit_line
.
enabled
=
False
...
@@ -154,7 +154,7 @@ class EarthOrbitStoppedSim:
...
@@ -154,7 +154,7 @@ class EarthOrbitStoppedSim:
if
venus_range
[
0
]
-
2
<
time_data
.
total_days
<
venus_range
[
1
]:
if
venus_range
[
0
]
-
2
<
time_data
.
total_days
<
venus_range
[
1
]:
self
.
venus_orbit_line
.
enabled
=
True
self
.
venus_orbit_line
.
enabled
=
True
# 由于天体运行不是标准的圆形,则需要动态调整轨道的大小,保证轨道线始终在天体的中心位置
# 由于天体运行不是标准的圆形,则需要动态调整轨道的大小,保证轨道线始终在天体的中心位置
self
.
venus_orbit_line
.
auto_adj
_scale
()
self
.
venus_orbit_line
.
auto_adj
ust
()
else
:
else
:
self
.
venus_orbit_line
.
enabled
=
False
self
.
venus_orbit_line
.
enabled
=
False
...
...
sim_scenes/solar_system/halley_comet_sim.py
浏览文件 @
57b9da45
...
@@ -33,15 +33,15 @@ class HalleyCometSim:
...
@@ -33,15 +33,15 @@ class HalleyCometSim:
def
build_solar_system
(
self
):
def
build_solar_system
(
self
):
# region 构建太阳系
# region 构建太阳系
self
.
sun
=
Sun
(
size_scale
=
0.8e2
,
show_trail
=
False
)
self
.
sun
=
Sun
(
size_scale
=
0.8e2
,
show_trail
=
False
)
self
.
earth
=
Earth
(
size_scale
=
8e3
,
rotate_angle
=
0
,
show_trail
=
False
)
self
.
mercury
=
Mercury
(
size_scale
=
5e3
,
show_trail
=
False
)
self
.
mercury
=
Mercury
(
size_scale
=
4
e3
,
show_trail
=
False
)
self
.
venus
=
Venus
(
size_scale
=
5
e3
,
show_trail
=
False
)
self
.
venus
=
Venus
(
size_scale
=
4e3
,
show_trail
=
False
)
self
.
earth
=
Earth
(
size_scale
=
5e3
,
rotate_angle
=
0
,
show_trail
=
False
)
self
.
mars
=
Mars
(
size_scale
=
4
e3
,
show_trail
=
False
)
self
.
mars
=
Mars
(
size_scale
=
5
e3
,
show_trail
=
False
)
self
.
jupiter
=
Jupiter
(
size_scale
=
1.68
e3
,
show_trail
=
False
)
self
.
jupiter
=
Jupiter
(
size_scale
=
2.5
e3
,
show_trail
=
False
)
self
.
saturn
=
Saturn
(
size_scale
=
1.68
e3
,
show_trail
=
False
)
self
.
saturn
=
Saturn
(
size_scale
=
2.5
e3
,
show_trail
=
False
)
self
.
uranus
=
Uranus
(
size_scale
=
3.5
e3
,
show_trail
=
False
)
self
.
uranus
=
Uranus
(
size_scale
=
6
e3
,
show_trail
=
False
)
self
.
neptune
=
Neptune
(
size_scale
=
3.5
e3
,
show_trail
=
False
)
self
.
neptune
=
Neptune
(
size_scale
=
6
e3
,
show_trail
=
False
)
self
.
pluto
=
Pluto
(
size_scale
=
1
.5
e5
,
show_trail
=
False
)
self
.
pluto
=
Pluto
(
size_scale
=
1e5
,
show_trail
=
False
)
self
.
bodies
=
[
self
.
bodies
=
[
self
.
sun
,
# 太阳
self
.
sun
,
# 太阳
self
.
mercury
,
# 水星
self
.
mercury
,
# 水星
...
@@ -71,7 +71,7 @@ class HalleyCometSim:
...
@@ -71,7 +71,7 @@ class HalleyCometSim:
# [3.33, 0, 10.655] 68
# [3.33, 0, 10.655] 68
# [3.33, 0, 10.66] 69
# [3.33, 0, 10.66] 69
self
.
halley_comet
=
HalleComet
(
# size_scale=4e7,
self
.
halley_comet
=
HalleComet
(
# size_scale=4e7,
size_scale
=
0.5
e8
,
size_scale
=
1
e8
,
init_velocity
=
[
3.34
,
0
,
10.7
],
# [3.33, 0, 10.6] < ? <[3.34, 0, 10.7]
init_velocity
=
[
3.34
,
0
,
10.7
],
# [3.33, 0, 10.6] < ? <[3.34, 0, 10.7]
init_position
=
[
0
,
0.5
*
AU
,
-
10
*
AU
])
\
init_position
=
[
0
,
0.5
*
AU
,
-
10
*
AU
])
\
.
set_light_disable
(
True
)
.
set_light_disable
(
True
)
...
@@ -90,6 +90,8 @@ class HalleyCometSim:
...
@@ -90,6 +90,8 @@ class HalleyCometSim:
# 创建天空
# 创建天空
from
ursina
import
scene
from
ursina
import
scene
UrsinaConfig
.
trail_type
=
"line"
UrsinaConfig
.
trail_type
=
"line"
UrsinaConfig
.
trail_length
=
91
UrsinaConfig
.
trail_thickness_factor
=
3
# camera.clip_plane_near = 0.1
# camera.clip_plane_near = 0.1
camera
.
clip_plane_far
=
1000000
camera
.
clip_plane_far
=
1000000
create_sphere_sky
(
scale
=
200000
)
create_sphere_sky
(
scale
=
200000
)
...
@@ -111,21 +113,22 @@ class HalleyCometSim:
...
@@ -111,21 +113,22 @@ class HalleyCometSim:
@param time_data:
@param time_data:
@return:
@return:
"""
"""
#
原始方形二向箔
飞行的翻转效果
#
哈雷彗星
飞行的翻转效果
if
self
.
halley_comet
.
planet
.
enabled
:
if
self
.
halley_comet
.
planet
.
enabled
:
self
.
halley_comet
.
planet
.
rotation_x
+=
0.1
self
.
halley_comet
.
planet
.
rotation_x
+=
0.1
self
.
halley_comet
.
planet
.
rotation_y
+=
1
self
.
halley_comet
.
planet
.
rotation_y
+=
1
# 摄像机始终看向
二向箔
# 摄像机始终看向
哈雷彗星
# camera_look_at(self.halley_comet)
# camera_look_at(self.halley_comet)
d
=
calculate_distance
(
self
.
halley_comet
.
position
,
self
.
sun
.
position
)
d
=
calculate_distance
(
self
.
halley_comet
.
position
,
self
.
sun
.
position
)
self
.
text_panel
.
text
=
"哈雷彗星距离太阳:%.3f AU"
%
(
d
/
AU
)
self
.
text_panel
.
text
=
"哈雷彗星距离太阳:%.3f AU"
%
(
d
/
AU
)
for
i
,
orbit_line
in
enumerate
(
self
.
orbit_lines
):
for
i
,
orbit_line
in
enumerate
(
self
.
orbit_lines
):
if
i
<
4
:
if
i
<
4
:
# 近日的天体绕行非常快,不调整轨道大小
adj_scale
=
False
continue
else
:
adj_scale
=
True
# 由于天体运行不是标准的圆形,则需要动态调整轨道的大小,保证轨道线始终在天体的中心位置
# 由于天体运行不是标准的圆形,则需要动态调整轨道的大小,保证轨道线始终在天体的中心位置
orbit_line
.
auto_adj
_scale
(
)
orbit_line
.
auto_adj
ust
(
adj_scale
=
adj_scale
)
if
__name__
==
'__main__'
:
if
__name__
==
'__main__'
:
...
...
simulators/ursina/ursina_mesh.py
浏览文件 @
57b9da45
...
@@ -197,19 +197,24 @@ def get_obj_planet_position(obj):
...
@@ -197,19 +197,24 @@ def get_obj_planet_position(obj):
return
pos1
return
pos1
def
adj_orbit_line_scale
(
center_obj
,
orbiting_obj
,
orbit_line
):
def
adj_orbit_line_scale
(
center_obj
,
orbiting_obj
,
orbit_line
,
adj_center_pos
=
True
,
adj_scale
=
True
):
"""
"""
由于天体运行不是标准的圆形,则需要动态调整轨道的大小,保证轨道线始终在天体的中心位置
由于天体运行不是标准的圆形,则需要动态调整轨道的大小,保证轨道线始终在天体的中心位置
@param center_obj: 中心天体,一般为恒星天体
@param center_obj: 中心天体,一般为恒星天体
@param orbiting_obj: 绕行天体,一般为行星天体
@param orbiting_obj: 绕行天体,一般为行星天体
@param orbit_line: 绕行天体轨道,一般为行星轨道
@param orbit_line: 绕行天体轨道,一般为行星轨道
@param adj_center_pos: 是否调整轨道线的中心位置
@param adj_scale: 是否调整轨道线的缩放
@return:
@return:
"""
"""
#
#
if
adj_scale
:
# 根据距离调整缩放
distance
=
calculate_distance
(
center_obj
.
position
-
orbiting_obj
.
position
)
distance
=
calculate_distance
(
center_obj
.
position
-
orbiting_obj
.
position
)
scale_rate
=
distance
*
UrsinaConfig
.
SCALE_FACTOR
/
orbit_line
.
radius
scale_rate
=
distance
*
UrsinaConfig
.
SCALE_FACTOR
/
orbit_line
.
radius
# 根据距离调整缩放
orbit_line
.
scale
=
scale_rate
orbit_line
.
scale
=
scale_rate
if
adj_center_pos
:
# 保证轨道中心的位置始终是中心天体的位置
# 保证轨道中心的位置始终是中心天体的位置
orbit_line
.
position
=
center_obj
.
planet
.
position
orbit_line
.
position
=
center_obj
.
planet
.
position
...
@@ -248,10 +253,10 @@ def create_orbit_line(center_obj, orbiting_obj, thickness=5, line_color=None, al
...
@@ -248,10 +253,10 @@ def create_orbit_line(center_obj, orbiting_obj, thickness=5, line_color=None, al
if
rotation_z
is
not
None
:
if
rotation_z
is
not
None
:
orbit_line
.
rotation_z
=
rotation_z
orbit_line
.
rotation_z
=
rotation_z
def
a
dj_scale
(
):
def
a
uto_adjust
(
adj_center_pos
=
True
,
adj_scale
=
True
):
adj_orbit_line_scale
(
center_obj
,
orbiting_obj
,
orbit_line
)
adj_orbit_line_scale
(
center_obj
,
orbiting_obj
,
orbit_line
,
adj_center_pos
,
adj_scale
)
orbit_line
.
auto_adj
_scale
=
adj_scale
orbit_line
.
auto_adj
ust
=
auto_adjust
# orbit_line.enabled = False # 默认不显示
# orbit_line.enabled = False # 默认不显示
return
orbit_line
return
orbit_line
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录