Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Python_超人
宇宙模拟器
提交
88f11c7d
宇宙模拟器
项目概览
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看板
提交
88f11c7d
编写于
7月 25, 2023
作者:
三月三net
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Python超人-宇宙模拟器
上级
57035816
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
14 addition
and
13 deletion
+14
-13
bodies/body.py
bodies/body.py
+1
-0
sim_scenes/solar_system/solar_system_reality.py
sim_scenes/solar_system/solar_system_reality.py
+13
-13
textures/earth_hd.jpg
textures/earth_hd.jpg
+0
-0
未找到文件。
bodies/body.py
浏览文件 @
88f11c7d
...
@@ -33,6 +33,7 @@ class Body(metaclass=ABCMeta):
...
@@ -33,6 +33,7 @@ class Body(metaclass=ABCMeta):
@param mass: 天体质量 (kg)
@param mass: 天体质量 (kg)
@param init_position: 初始位置 (km)
@param init_position: 初始位置 (km)
@param init_velocity: 初始速度 (km/s)
@param init_velocity: 初始速度 (km/s)
@param rotate_angle: 转轴倾角
@param density: 平均密度 (kg/m³)
@param density: 平均密度 (kg/m³)
@param color: 天体颜色(纹理图片优先)
@param color: 天体颜色(纹理图片优先)
@param texture: 纹理图片
@param texture: 纹理图片
...
...
sim_scenes/solar_system/solar_system_reality.py
浏览文件 @
88f11c7d
...
@@ -77,7 +77,7 @@ def are_planets_in_line(positions, line_width):
...
@@ -77,7 +77,7 @@ def are_planets_in_line(positions, line_width):
current_dz
=
z
-
z1
current_dz
=
z
-
z1
# 计算当前行星与线之间的距离的平方
# 计算当前行星与线之间的距离的平方
distance_squared
=
(
current_dy
*
dz
-
current_dz
*
dy
)
**
2
+
(
current_dz
*
dx
-
current_dx
*
dz
)
**
2
+
(
distance_squared
=
(
current_dy
*
dz
-
current_dz
*
dy
)
**
2
+
(
current_dz
*
dx
-
current_dx
*
dz
)
**
2
+
(
current_dx
*
dy
-
current_dy
*
dx
)
**
2
current_dx
*
dy
-
current_dy
*
dx
)
**
2
# 如果距离的平方大于线的宽度的平方,则行星不在一条线上
# 如果距离的平方大于线的宽度的平方,则行星不在一条线上
if
distance_squared
>
line_width_squared
:
if
distance_squared
>
line_width_squared
:
return
False
return
False
...
@@ -125,23 +125,22 @@ def are_planets_in_line(planets, line_width):
...
@@ -125,23 +125,22 @@ def are_planets_in_line(planets, line_width):
current_time
=
Time
.
now
()
current_time
=
Time
.
now
()
in_line_datetimes
=
[]
#
in_line_datetimes = []
if
__name__
==
'__main__'
:
if
__name__
==
'__main__'
:
# 八大行星:木星(♃)、土星(♄)、天王星(♅)、海王星(♆)、地球(⊕)、金星(♀)、火星(♂)、水星(☿)
# 以下展示的效果为太阳系真实的时间和位置
# 排列顺序
# 1、体积:(以地球为1)木星 :土星 :天王星 :海王星 :地球 :金星 :火星 :水星 = 1330:745:65:60:1:0.86:0.15:0.056
# 2、质量:(以地球为1)木星 :土星 :天王星 :海王星 :地球 :金星 :火星 :水星 = 318:95:14.53:17.15:1:0.8:0.11:0.0553
# 3、离太阳从近到远的顺序:水星、金星、地球、火星、木星、土星、天王星、海王星
# =====================================================================
# 以下展示的效果为太阳系真实的距离
# 由于宇宙空间尺度非常大,如果按照实际的天体大小,则无法看到天体,因此需要对天体的尺寸进行放大
# 由于宇宙空间尺度非常大,如果按照实际的天体大小,则无法看到天体,因此需要对天体的尺寸进行放大
sun
=
Sun
(
name
=
"太阳"
,
size_scale
=
0.4e2
)
# 太阳放大 40 倍,
距离保持不变(size_scale=0.04e2)TODO:进行调试大小
sun
=
Sun
(
name
=
"太阳"
,
size_scale
=
0.4e2
)
# 太阳放大 40 倍,
TODO:调试时的大小,size_scale=0.04e2
bodies
=
[
bodies
=
[
sun
,
sun
,
Mercury
(
name
=
"水星"
,
size_scale
=
1.5e3
),
# 水星
Mercury
(
name
=
"水星"
,
size_scale
=
1.5e3
),
# 水星
Venus
(
name
=
"金星"
,
size_scale
=
1e3
),
# 金星
Venus
(
name
=
"金星"
,
size_scale
=
1e3
),
# 金星
Earth
(
name
=
"地球"
,
size_scale
=
1e3
),
# 地球(size_scale=10e3)TODO:进行调试大小
Earth
(
name
=
"地球"
,
texture
=
"earth_hd.jpg"
,
size_scale
=
1e3
),
# 地球 TODO:调试时的大小,size_scale=10e3
# Earth(name="地球云层",
# texture="transparent_clouds.png",
# size_scale=1.01e3), # 地球云层 TODO:调试时的大小,size_scale=10.1e3
Moon
(
name
=
"月球"
,
size_scale
=
2e3
),
# 月球
Moon
(
name
=
"月球"
,
size_scale
=
2e3
),
# 月球
Mars
(
name
=
"火星"
,
size_scale
=
1.2e3
),
# 火星
Mars
(
name
=
"火星"
,
size_scale
=
1.2e3
),
# 火星
# Asteroids(size_scale=1e2, parent=sun, rotate_angle=-20),
# Asteroids(size_scale=1e2, parent=sun, rotate_angle=-20),
...
@@ -152,8 +151,9 @@ if __name__ == '__main__':
...
@@ -152,8 +151,9 @@ if __name__ == '__main__':
]
]
earth
=
bodies
[
3
]
earth
=
bodies
[
3
]
# 显示自转轴线
earth
.
rotate_axis_color
=
(
255
,
255
,
50
)
earth
.
rotate_axis_color
=
(
255
,
255
,
50
)
# earth.set_light_disable(True)
# TODO:进行调试
# earth.set_light_disable(True)
# TODO:调试时,取消注释
names
=
get_bodies_names
(
bodies
)
names
=
get_bodies_names
(
bodies
)
names
=
names
.
replace
(
"Asteroids,"
,
""
)
names
=
names
.
replace
(
"Asteroids,"
,
""
)
...
@@ -227,7 +227,7 @@ if __name__ == '__main__':
...
@@ -227,7 +227,7 @@ if __name__ == '__main__':
# 日期是当年的第几天
# 日期是当年的第几天
day_of_year
=
dt
.
timetuple
().
tm_yday
day_of_year
=
dt
.
timetuple
().
tm_yday
# 计算出:日期当天的偏转角度 - 贴图的误差
# 计算出:日期当天的偏转角度 - 贴图的误差
angle_of_day
=
day_of_year
*
(
360
/
365
)
-
120
angle_of_day
=
day_of_year
*
(
360
/
365
)
-
93.5
# 控制地球的自转速度和方向,保障白天,中国面对太阳(会存在一点点的误差,可以通过上面“贴图的误差”进行调整)。
# 控制地球的自转速度和方向,保障白天,中国面对太阳(会存在一点点的误差,可以通过上面“贴图的误差”进行调整)。
earth
.
planet
.
rotation_y
=
-
(
time_data
.
total_hours
)
*
15
-
angle_of_day
earth
.
planet
.
rotation_y
=
-
(
time_data
.
total_hours
)
*
15
-
angle_of_day
...
...
textures/earth_hd.jpg
查看替换文件 @
57035816
浏览文件 @
88f11c7d
1.7 MB
|
W:
|
H:
3.2 MB
|
W:
|
H:
2-up
Swipe
Onion skin
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录