Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Python_超人
宇宙模拟器
提交
e9ab9d0a
宇宙模拟器
项目概览
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看板
提交
e9ab9d0a
编写于
10月 26, 2023
作者:
三月三net
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Python超人-宇宙模拟器
上级
02655b81
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
50 addition
and
13 deletion
+50
-13
sim_scenes/fiction/earth_orbit_stopped.py
sim_scenes/fiction/earth_orbit_stopped.py
+4
-0
sim_scenes/solar_system/halley_comet_sim.py
sim_scenes/solar_system/halley_comet_sim.py
+1
-4
simulators/ursina/ursina_mesh.py
simulators/ursina/ursina_mesh.py
+45
-9
未找到文件。
sim_scenes/fiction/earth_orbit_stopped.py
浏览文件 @
e9ab9d0a
...
...
@@ -145,12 +145,16 @@ class EarthOrbitStoppedSim:
# 进入了水星轨道附近,才显示水星轨道线
if
mercury_range
[
0
]
-
2
<
time_data
.
total_days
<
mercury_range
[
1
]:
self
.
mercury_orbit_line
.
enabled
=
True
# 由于天体运行不是标准的圆形,则需要动态调整轨道的大小,保证轨道线始终在天体的中心位置
self
.
mercury_orbit_line
.
auto_adj_scale
()
else
:
self
.
mercury_orbit_line
.
enabled
=
False
# 进入了金星轨道附近,才显示金星轨道线
if
venus_range
[
0
]
-
2
<
time_data
.
total_days
<
venus_range
[
1
]:
self
.
venus_orbit_line
.
enabled
=
True
# 由于天体运行不是标准的圆形,则需要动态调整轨道的大小,保证轨道线始终在天体的中心位置
self
.
venus_orbit_line
.
auto_adj_scale
()
else
:
self
.
venus_orbit_line
.
enabled
=
False
...
...
sim_scenes/solar_system/halley_comet_sim.py
浏览文件 @
e9ab9d0a
...
...
@@ -124,11 +124,8 @@ class HalleyCometSim:
if
i
<
4
:
# 近日的天体绕行非常快,不调整轨道大小
continue
body
=
orbit_line
.
body
# 由于天体运行不是标准的圆形,则需要动态调整轨道的大小,保证轨道线始终在天体的中心位置
distance
=
calculate_distance
(
self
.
sun
.
position
-
body
.
position
)
scale_rate
=
distance
*
UrsinaConfig
.
SCALE_FACTOR
/
orbit_line
.
radius
orbit_line
.
scale
=
scale_rate
orbit_line
.
auto_adj_scale
()
if
__name__
==
'__main__'
:
...
...
simulators/ursina/ursina_mesh.py
浏览文件 @
e9ab9d0a
...
...
@@ -197,7 +197,37 @@ def get_obj_planet_position(obj):
return
pos1
def
create_orbit_line
(
center_obj
,
orbiting_obj
,
thickness
=
5
,
line_color
=
None
,
alpha
=
0.6
):
def
adj_orbit_line_scale
(
center_obj
,
orbiting_obj
,
orbit_line
):
"""
由于天体运行不是标准的圆形,则需要动态调整轨道的大小,保证轨道线始终在天体的中心位置
@param center_obj: 中心天体,一般为恒星天体
@param orbiting_obj: 绕行天体,一般为行星天体
@param orbit_line: 绕行天体轨道,一般为行星轨道
@return:
"""
#
distance
=
calculate_distance
(
center_obj
.
position
-
orbiting_obj
.
position
)
scale_rate
=
distance
*
UrsinaConfig
.
SCALE_FACTOR
/
orbit_line
.
radius
# 根据距离调整缩放
orbit_line
.
scale
=
scale_rate
# 保证轨道中心的位置始终是中心天体的位置
orbit_line
.
position
=
center_obj
.
planet
.
position
def
create_orbit_line
(
center_obj
,
orbiting_obj
,
thickness
=
5
,
line_color
=
None
,
alpha
=
0.6
,
rotation_x
=
90
,
rotation_y
=
None
,
rotation_z
=
None
):
"""
创建轨道
@param center_obj: 中心天体,一般为恒星天体
@param orbiting_obj: 绕行天体,一般为行星天体
@param thickness: 轨道线的粗细
@param line_color: 轨道线颜色,默认为绕行天体的拖尾颜色
@param alpha: 轨道线的透明度
@param rotation_x:
@param rotation_y:
@param rotation_z:
@return:
"""
if
isinstance
(
line_color
,
tuple
)
or
isinstance
(
line_color
,
list
):
line_color
=
color
.
rgba
(
line_color
[
0
]
/
255
,
line_color
[
1
]
/
255
,
line_color
[
2
]
/
255
,
alpha
)
if
line_color
is
None
:
...
...
@@ -206,16 +236,22 @@ def create_orbit_line(center_obj, orbiting_obj, thickness=5, line_color=None, al
line_color
=
color
.
white
else
:
line_color
=
color
.
rgba
(
line_color
[
0
],
line_color
[
1
],
line_color
[
2
],
alpha
)
# line_color = adjust_brightness(line_color, 0.6)
# center_pos = get_obj_planet_position(center_obj)
# orbiting_pos = get_obj_planet_position(orbiting_obj)
distance1
=
(
center_obj
.
planet
.
position
-
orbiting_obj
.
planet
.
position
).
length
()
# distance = calculate_distance(center_obj.position - orbiting_obj.position)
# distance2 = distance * UrsinaConfig.SCALE_FACTOR * 0.695 # / center_obj.planet.scale_x # * 0.0125
orbit_line
=
create_circle_line
(
parent
=
None
,
radius
=
distance1
,
position
=
center_obj
.
planet
.
position
,
distance
=
(
center_obj
.
planet
.
position
-
orbiting_obj
.
planet
.
position
).
length
()
orbit_line
=
create_circle_line
(
parent
=
None
,
radius
=
distance
,
position
=
center_obj
.
planet
.
position
,
thickness
=
thickness
,
color
=
line_color
,
alpha
=
alpha
)
orbit_line
.
rotation_x
=
90
if
rotation_x
is
not
None
:
orbit_line
.
rotation_x
=
rotation_x
if
rotation_y
is
not
None
:
orbit_line
.
rotation_y
=
rotation_y
if
rotation_z
is
not
None
:
orbit_line
.
rotation_z
=
rotation_z
def
adj_scale
():
adj_orbit_line_scale
(
center_obj
,
orbiting_obj
,
orbit_line
)
orbit_line
.
auto_adj_scale
=
adj_scale
# orbit_line.enabled = False # 默认不显示
return
orbit_line
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录