Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Python_超人
宇宙模拟器
提交
af9acf68
宇宙模拟器
项目概览
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看板
提交
af9acf68
编写于
7月 23, 2023
作者:
三月三net
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Python超人-宇宙模拟器
上级
facf840b
变更
3
显示空白变更内容
内联
并排
Showing
3 changed file
with
23 addition
and
5 deletion
+23
-5
bodies/asteroids.py
bodies/asteroids.py
+2
-0
bodies/torus_zone.py
bodies/torus_zone.py
+2
-0
sim_scenes/solar_system/solar_system_reality.py
sim_scenes/solar_system/solar_system_reality.py
+19
-5
未找到文件。
bodies/asteroids.py
浏览文件 @
af9acf68
...
@@ -36,6 +36,7 @@ class Asteroids(TorusZone):
...
@@ -36,6 +36,7 @@ class Asteroids(TorusZone):
subdivisions
=
64
,
subdivisions
=
64
,
size_scale
=
1.0
,
size_scale
=
1.0
,
distance_scale
=
1.0
,
distance_scale
=
1.0
,
rotate_angle
=
0
,
rotation_speed
=
0.002
,
# 小行星绕太阳转一圈的时间在数年到几十年之间不等。
rotation_speed
=
0.002
,
# 小行星绕太阳转一圈的时间在数年到几十年之间不等。
parent
=
None
):
parent
=
None
):
params
=
{
params
=
{
...
@@ -50,6 +51,7 @@ class Asteroids(TorusZone):
...
@@ -50,6 +51,7 @@ class Asteroids(TorusZone):
"size_scale"
:
size_scale
,
"size_scale"
:
size_scale
,
"distance_scale"
:
distance_scale
,
"distance_scale"
:
distance_scale
,
"rotation_speed"
:
rotation_speed
,
"rotation_speed"
:
rotation_speed
,
"rotate_angle"
:
rotate_angle
,
"parent"
:
parent
"parent"
:
parent
}
}
super
().
__init__
(
**
params
)
super
().
__init__
(
**
params
)
...
...
bodies/torus_zone.py
浏览文件 @
af9acf68
...
@@ -23,6 +23,7 @@ class TorusZone(Body):
...
@@ -23,6 +23,7 @@ class TorusZone(Body):
subdivisions
=
64
,
subdivisions
=
64
,
size_scale
=
1.0
,
size_scale
=
1.0
,
distance_scale
=
1.0
,
distance_scale
=
1.0
,
rotate_angle
=
0
,
rotation_speed
=
0
,
rotation_speed
=
0
,
parent
=
None
):
parent
=
None
):
"""
"""
...
@@ -51,6 +52,7 @@ class TorusZone(Body):
...
@@ -51,6 +52,7 @@ class TorusZone(Body):
"size_scale"
:
size_scale
,
"size_scale"
:
size_scale
,
"distance_scale"
:
distance_scale
,
"distance_scale"
:
distance_scale
,
"rotation_speed"
:
rotation_speed
,
"rotation_speed"
:
rotation_speed
,
"rotate_angle"
:
rotate_angle
,
"parent"
:
parent
"parent"
:
parent
}
}
super
().
__init__
(
**
params
)
super
().
__init__
(
**
params
)
...
...
sim_scenes/solar_system/solar_system_reality.py
浏览文件 @
af9acf68
...
@@ -15,7 +15,7 @@ import numpy as np
...
@@ -15,7 +15,7 @@ import numpy as np
from
astropy.coordinates
import
get_body_barycentric_posvel
from
astropy.coordinates
import
get_body_barycentric_posvel
from
astropy.time
import
Time
from
astropy.time
import
Time
from
bodies
import
Sun
,
Mercury
,
Venus
,
Earth
,
Mars
,
Jupiter
,
Saturn
,
Uranus
,
Neptune
,
Moon
from
bodies
import
Sun
,
Mercury
,
Venus
,
Earth
,
Mars
,
Asteroids
,
Jupiter
,
Saturn
,
Uranus
,
Neptune
,
Moon
from
common.consts
import
SECONDS_PER_WEEK
,
SECONDS_PER_DAY
,
AU
from
common.consts
import
SECONDS_PER_WEEK
,
SECONDS_PER_DAY
,
AU
from
sim_scenes.func
import
ursina_run
from
sim_scenes.func
import
ursina_run
from
simulators.ursina.entities.body_timer
import
TimeData
from
simulators.ursina.entities.body_timer
import
TimeData
...
@@ -73,6 +73,7 @@ if __name__ == '__main__':
...
@@ -73,6 +73,7 @@ if __name__ == '__main__':
Earth
(
name
=
"地球"
,
size_scale
=
1e3
),
# 地球
Earth
(
name
=
"地球"
,
size_scale
=
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
),
Jupiter
(
name
=
"木星"
,
size_scale
=
4e2
),
# 木星
Jupiter
(
name
=
"木星"
,
size_scale
=
4e2
),
# 木星
Saturn
(
name
=
"土星"
,
size_scale
=
4e2
),
# 土星
Saturn
(
name
=
"土星"
,
size_scale
=
4e2
),
# 土星
Uranus
(
name
=
"天王星"
,
size_scale
=
10e2
),
# 天王星
Uranus
(
name
=
"天王星"
,
size_scale
=
10e2
),
# 天王星
...
@@ -80,9 +81,13 @@ if __name__ == '__main__':
...
@@ -80,9 +81,13 @@ if __name__ == '__main__':
]
]
names
=
get_bodies_names
(
bodies
)
names
=
get_bodies_names
(
bodies
)
names
=
names
.
replace
(
"Asteroids,"
,
""
)
def
get_body_posvel
(
body
,
posvels
):
def
get_body_posvel
(
body
,
posvels
=
None
,
time
=
None
):
if
posvels
is
None
:
posvel
=
get_body_barycentric_posvel
(
body
.
__class__
.
__name__
,
time
)
else
:
posvel
=
posvels
.
get
(
body
.
__class__
.
__name__
,
None
)
posvel
=
posvels
.
get
(
body
.
__class__
.
__name__
,
None
)
return
posvel
return
posvel
...
@@ -97,14 +102,21 @@ if __name__ == '__main__':
...
@@ -97,14 +102,21 @@ if __name__ == '__main__':
posvels
=
get_bodies_posvels
(
names
,
t
)
posvels
=
get_bodies_posvels
(
names
,
t
)
# earth_loc = None
# earth_loc = None
earth_pos
=
None
earth_pos
=
None
sun_pos
=
None
for
body
in
bodies
:
for
body
in
bodies
:
posvel
=
get_body_posvel
(
body
,
posvels
)
if
isinstance
(
body
,
Asteroids
):
posvel
=
None
else
:
posvel
=
get_body_posvel
(
body
,
None
,
t
)
if
isinstance
(
body
,
Moon
):
if
isinstance
(
body
,
Moon
):
posvel
=
recalc_moon_position
(
posvel
,
earth_pos
)
posvel
=
recalc_moon_position
(
posvel
,
earth_pos
)
if
posvel
is
None
:
if
posvel
is
None
:
position
,
velocity
=
[
0
,
0
,
0
],
[
0
,
0
,
0
]
position
,
velocity
=
[
sun_pos
.
x
.
value
*
AU
,
sun_pos
.
z
.
value
*
AU
,
sun_pos
.
y
.
value
*
AU
],
[
0
,
0
,
0
]
else
:
else
:
S_OF_D
=
24
*
60
*
60
S_OF_D
=
24
*
60
*
60
# 坐标单位:千米 速度单位:千米/秒
# 坐标单位:千米 速度单位:千米/秒
...
@@ -117,6 +129,8 @@ if __name__ == '__main__':
...
@@ -117,6 +129,8 @@ if __name__ == '__main__':
if
isinstance
(
body
,
Earth
):
if
isinstance
(
body
,
Earth
):
# earth_loc = EarthLocation(x=posvel[0].x, y=posvel[0].y, z=posvel[0].z)
# earth_loc = EarthLocation(x=posvel[0].x, y=posvel[0].y, z=posvel[0].z)
earth_pos
=
posvel
[
0
]
earth_pos
=
posvel
[
0
]
elif
isinstance
(
body
,
Sun
):
sun_pos
=
posvel
[
0
]
dt
=
time_data
.
get_datetime
(
str
(
current_time
))
dt
=
time_data
.
get_datetime
(
str
(
current_time
))
# print(time_data.get_datetime(str(current_time)))
# print(time_data.get_datetime(str(current_time)))
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录