Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Python_超人
宇宙模拟器
提交
a191211d
宇宙模拟器
项目概览
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看板
提交
a191211d
编写于
10月 21, 2023
作者:
三月三net
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Python超人-宇宙模拟器(代码备份,代码的清理未删除)
上级
e77a06ec
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
99 addition
and
129 deletion
+99
-129
common/celestial_data_service.py
common/celestial_data_service.py
+43
-34
sim_scenes/tri_bodies/two_way_foil.py
sim_scenes/tri_bodies/two_way_foil.py
+56
-95
未找到文件。
common/celestial_data_service.py
浏览文件 @
a191211d
...
@@ -268,7 +268,6 @@ def show_bodies_posvels(dt):
...
@@ -268,7 +268,6 @@ def show_bodies_posvels(dt):
def
gen_real_pos_vel_bodies
(
body_names
,
dt
):
def
gen_real_pos_vel_bodies
(
body_names
,
dt
):
import
pytz
import
pytz
# 安装 astropy 包
# 安装 astropy 包
# pip install -i http://pypi.douban.com/simple/ --trusted-host=pypi.douban.com astropy
# pip install -i http://pypi.douban.com/simple/ --trusted-host=pypi.douban.com astropy
...
@@ -281,12 +280,13 @@ def gen_real_pos_vel_bodies(body_names, dt):
...
@@ -281,12 +280,13 @@ def gen_real_pos_vel_bodies(body_names, dt):
for
body_name
in
str
(
body_names
).
split
(
","
):
for
body_name
in
str
(
body_names
).
split
(
","
):
earth_pos_vel
=
get_body_barycentric_posvel
(
body_name
,
dt
)
earth_pos_vel
=
get_body_barycentric_posvel
(
body_name
,
dt
)
pos
,
vel
=
earth_pos_vel
[
0
],
earth_pos_vel
[
1
]
pos
,
vel
=
earth_pos_vel
[
0
],
earth_pos_vel
[
1
]
gen_body_str
+=
f
" init_pos_vels['
{
body_name
.
lower
()
}
']={{}}
\n
"
gen_body_str
+=
f
" init_pos_vels['
{
body_name
.
lower
()
}
']={{}}
\n
"
gen_body_str
+=
f
" init_pos_vels['
{
body_name
.
lower
()
}
']['pos']=[%.4f,%.4f,%.4f]
\n
"
%
(
pos
.
x
.
to
(
u
.
km
).
value
,
gen_body_str
+=
f
" init_pos_vels['
{
body_name
.
lower
()
}
']['pos']=[%.4f,%.4f,%.4f]
\n
"
%
(
pos
.
x
.
to
(
u
.
km
).
value
,
pos
.
y
.
to
(
u
.
km
).
value
,
pos
.
y
.
to
(
u
.
km
).
value
,
pos
.
z
.
to
(
u
.
km
).
value
)
pos
.
z
.
to
(
u
.
km
).
value
)
gen_body_str
+=
f
" init_pos_vels['
{
body_name
.
lower
()
}
']['vel']=[%.4f,%.4f,%.4f]
\n
"
%
(
vel
.
x
.
to
(
u
.
km
/
u
.
second
).
value
,
gen_body_str
+=
f
" init_pos_vels['
{
body_name
.
lower
()
}
']['vel']=[%.4f,%.4f,%.4f]
\n
"
%
(
vel
.
x
.
to
(
u
.
km
/
u
.
second
).
value
,
vel
.
y
.
to
(
u
.
km
/
u
.
second
).
value
,
vel
.
y
.
to
(
u
.
km
/
u
.
second
).
value
,
vel
.
z
.
to
(
u
.
km
/
u
.
second
).
value
)
vel
.
z
.
to
(
u
.
km
/
u
.
second
).
value
)
...
@@ -304,36 +304,45 @@ def gen_real_pos_vel_bodies(body_names, dt):
...
@@ -304,36 +304,45 @@ def gen_real_pos_vel_bodies(body_names, dt):
def
get_init_pos_vels
():
def
get_init_pos_vels
():
init_pos_vels
=
{}
init_pos_vels
=
{}
init_pos_vels
[
'sun'
]
=
{}
init_pos_vels
[
'sun'
]
=
{}
init_pos_vels
[
'sun'
][
'pos'
]
=
[
120062.8111
,
-
462734.9565
,
-
198328.7512
]
init_pos_vels
[
'sun'
][
'pos'
]
=
[
-
4638653.0000
,
0.0000
,
1314332.6250
]
init_pos_vels
[
'sun'
][
'vel'
]
=
[
0.0093
,
0.0037
,
0.0014
]
init_pos_vels
[
'sun'
][
'vel'
]
=
[
-
0.0165
,
0.0000
,
-
0.0097
]
init_pos_vels
[
'mercury'
]
=
{}
init_pos_vels
[
'mercury'
]
=
{}
init_pos_vels
[
'mercury'
][
'pos'
]
=
[
-
27459444.3141
,
33659309.8266
,
20887619.1358
]
init_pos_vels
[
'mercury'
][
'pos'
]
=
[
-
54412616.0000
,
0.0000
,
31280100.0000
]
init_pos_vels
[
'mercury'
][
'vel'
]
=
[
-
49.8268
,
-
24.7415
,
-
8.0569
]
init_pos_vels
[
'mercury'
][
'vel'
]
=
[
-
25.2667
,
0.0000
,
-
40.0561
]
init_pos_vels
[
'venus'
]
=
{}
init_pos_vels
[
'venus'
]
=
{}
init_pos_vels
[
'venus'
][
'pos'
]
=
[
21823958.6720
,
-
97202911.8077
,
-
45109059.0044
]
init_pos_vels
[
'venus'
][
'pos'
]
=
[
-
32341672.0000
,
0.0000
,
-
99861352.0000
]
init_pos_vels
[
'venus'
][
'vel'
]
=
[
34.
0912
,
7.0463
,
1.0154
]
init_pos_vels
[
'venus'
][
'vel'
]
=
[
34.
3770
,
0.0000
,
-
10.6676
]
init_pos_vels
[
'earth'
]
=
{}
init_pos_vels
[
'earth'
]
=
{}
init_pos_vels
[
'earth'
][
'pos'
]
=
[
-
25983996.5057
,
132369339.0025
,
57373518.2429
]
init_pos_vels
[
'earth'
][
'pos'
]
=
[
140427392.0000
,
0.0000
,
45724572.0000
]
init_pos_vels
[
'earth'
][
'vel'
]
=
[
-
29.7869
,
-
4.9606
,
-
2.1489
]
init_pos_vels
[
'earth'
][
'vel'
]
=
[
-
8.1280
,
0.0000
,
28.2277
]
init_pos_vels
[
'mars'
]
=
{}
init_pos_vels
[
'mars'
]
=
{}
init_pos_vels
[
'mars'
][
'pos'
]
=
[
-
230623216.7918
,
-
71477306.3132
,
-
26561224.6080
]
init_pos_vels
[
'mars'
][
'pos'
]
=
[
218751648.0000
,
0.0000
,
-
45263688.0000
]
init_pos_vels
[
'mars'
][
'vel'
]
=
[
8.4564
,
-
18.9614
,
-
8.9250
]
init_pos_vels
[
'mars'
][
'vel'
]
=
[
5.2205
,
0.0000
,
23.4601
]
init_pos_vels
[
'asteroids'
]
=
{}
init_pos_vels
[
'asteroids'
][
'pos'
]
=
[
0.0000
,
0.0000
,
0.0000
]
init_pos_vels
[
'asteroids'
][
'vel'
]
=
[
0.0000
,
0.0000
,
0.0000
]
init_pos_vels
[
'jupiter'
]
=
{}
init_pos_vels
[
'jupiter'
]
=
{}
init_pos_vels
[
'jupiter'
][
'pos'
]
=
[
-
357712686.7572
,
637570826.6050
,
281973598.8065
]
init_pos_vels
[
'jupiter'
][
'pos'
]
=
[
769445760.0000
,
0.0000
,
2017638.5000
]
init_pos_vels
[
'jupiter'
][
'vel'
]
=
[
-
11.7897
,
-
5.0252
,
-
1.8671
]
init_pos_vels
[
'jupiter'
][
'vel'
]
=
[
0.0389
,
0.0000
,
13.0879
]
init_pos_vels
[
'saturn'
]
=
{}
init_pos_vels
[
'saturn'
]
=
{}
init_pos_vels
[
'saturn'
][
'pos'
]
=
[
713384516.7012
,
-
1202372203.9542
,
-
527442445.497
0
]
init_pos_vels
[
'saturn'
][
'pos'
]
=
[
-
1330536704.0000
,
0.0000
,
-
454165280.000
0
]
init_pos_vels
[
'saturn'
][
'vel'
]
=
[
7.9649
,
4.3679
,
1.4610
]
init_pos_vels
[
'saturn'
][
'vel'
]
=
[
3.2189
,
0.0000
,
-
9.1974
]
init_pos_vels
[
'uranus'
]
=
{}
init_pos_vels
[
'uranus'
]
=
{}
init_pos_vels
[
'uranus'
][
'pos'
]
=
[
-
2666283945.3730
,
544495773.6564
,
276202868.3064
]
init_pos_vels
[
'uranus'
][
'pos'
]
=
[
-
1757163648.0000
,
0.0000
,
2272503808.0000
]
init_pos_vels
[
'uranus'
][
'vel'
]
=
[
-
1.5476
,
-
6.3725
,
-
2.7691
]
init_pos_vels
[
'uranus'
][
'vel'
]
=
[
-
5.3918
,
0.0000
,
-
4.1634
]
init_pos_vels
[
'neptune'
]
=
{}
init_pos_vels
[
'neptune'
]
=
{}
init_pos_vels
[
'neptune'
][
'pos'
]
=
[
2602697275.5219
,
3374419276.7397
,
1316379531.2695
]
init_pos_vels
[
'neptune'
][
'pos'
]
=
[
-
1480893824.0000
,
0.0000
,
4351772160.0000
]
init_pos_vels
[
'neptune'
][
'vel'
]
=
[
-
4.4365
,
2.9291
,
1.3095
]
init_pos_vels
[
'neptune'
][
'vel'
]
=
[
-
5.1466
,
0.0000
,
-
1.7189
]
init_pos_vels
[
'pluto'
]
=
{}
init_pos_vels
[
'pluto'
][
'pos'
]
=
[
-
1293909504.0000
,
0.0000
,
5770579968.0000
]
init_pos_vels
[
'pluto'
][
'vel'
]
=
[
-
4.5847
,
0.0000
,
-
1.0475
]
return
init_pos_vels
return
init_pos_vels
if
__name__
==
'__main__'
:
if
__name__
==
'__main__'
:
from
astropy.time
import
Time
# 时间
from
astropy.time
import
Time
# 时间
# bodies = [
# bodies = [
# sun, # 太阳放大 80 倍
# sun, # 太阳放大 80 倍
# Mercury(size_scale=4e3, distance_scale=1.3), # 水星放大 4000 倍,距离放大 1.3 倍
# Mercury(size_scale=4e3, distance_scale=1.3), # 水星放大 4000 倍,距离放大 1.3 倍
...
...
sim_scenes/tri_bodies/two_way_foil.py
浏览文件 @
a191211d
...
@@ -6,23 +6,17 @@
...
@@ -6,23 +6,17 @@
# link :https://gitcode.net/pythoncr/
# link :https://gitcode.net/pythoncr/
# python_version :3.9
# python_version :3.9
# ==============================================================================
# ==============================================================================
import
threading
import
time
import
time
import
datetime
from
bodies
import
Sun
,
Earth
,
Moon
from
objs
import
CoreValagaClas
,
SciFiBomber
,
WaterDrop
,
QuadObj
,
CircleObj
from
common.consts
import
AU
,
SECONDS_PER_DAY
,
SECONDS_PER_WEEK
,
SECONDS_PER_MONTH
from
sim_scenes.func
import
ursina_run
,
camera_look_at
,
create_main_entity
,
two_bodies_colliding
from
simulators.ursina.entities.body_timer
import
TimeData
from
simulators.ursina.entities.entity_utils
import
create_directional_light
,
create_rings
from
simulators.ursina.ursina_config
import
UrsinaConfig
from
simulators.ursina.ursina_event
import
UrsinaEvent
from
ursina
import
camera
,
application
from
ursina
import
camera
,
application
from
bodies
import
Sun
,
Mercury
,
Venus
,
Earth
,
Mars
,
Jupiter
,
Saturn
,
Uranus
,
Neptune
,
Pluto
,
Asteroids
from
bodies
import
Sun
,
Mercury
,
Venus
,
Earth
,
Mars
,
Jupiter
,
Saturn
,
Uranus
,
Neptune
,
Pluto
from
common.consts
import
SECONDS_PER_WEEK
,
SECONDS_PER_DAY
,
SECONDS_PER_MONTH
,
SECONDS_PER_YEAR
,
AU
from
common.celestial_data_service
import
get_init_pos_vels
from
sim_scenes.func
import
mayavi_run
,
ursina_run
,
create_sphere_sky
from
common.consts
import
SECONDS_PER_WEEK
,
AU
from
objs
import
QuadObj
,
CircleObj
,
Obj
from
sim_scenes.func
import
camera_look_at
,
two_bodies_colliding
from
sim_scenes.func
import
ursina_run
,
create_sphere_sky
from
simulators.ursina.entities.entity_utils
import
create_rings
from
simulators.ursina.ursina_event
import
UrsinaEvent
from
simulators.ursina.ursina_event
import
UrsinaEvent
...
@@ -33,48 +27,10 @@ class TwoWayFoilSim:
...
@@ -33,48 +27,10 @@ class TwoWayFoilSim:
def
__init__
(
self
):
def
__init__
(
self
):
self
.
three_dim_bodies
=
[]
#
self.three_dim_bodies = []
self
.
two_dim_bodies
=
[]
#
self.two_dim_bodies = []
self
.
current_stage
=
self
.
stage_01
self
.
current_stage
=
self
.
stage_01
def
get_init_pos_vels
(
self
):
init_pos_vels
=
{}
init_pos_vels
[
'sun'
]
=
{}
init_pos_vels
[
'sun'
][
'pos'
]
=
[
-
4638653.0000
,
0.0000
,
1314332.6250
]
init_pos_vels
[
'sun'
][
'vel'
]
=
[
-
0.0165
,
0.0000
,
-
0.0097
]
init_pos_vels
[
'mercury'
]
=
{}
init_pos_vels
[
'mercury'
][
'pos'
]
=
[
-
54412616.0000
,
0.0000
,
31280100.0000
]
init_pos_vels
[
'mercury'
][
'vel'
]
=
[
-
25.2667
,
0.0000
,
-
40.0561
]
init_pos_vels
[
'venus'
]
=
{}
init_pos_vels
[
'venus'
][
'pos'
]
=
[
-
32341672.0000
,
0.0000
,
-
99861352.0000
]
init_pos_vels
[
'venus'
][
'vel'
]
=
[
34.3770
,
0.0000
,
-
10.6676
]
init_pos_vels
[
'earth'
]
=
{}
init_pos_vels
[
'earth'
][
'pos'
]
=
[
140427392.0000
,
0.0000
,
45724572.0000
]
init_pos_vels
[
'earth'
][
'vel'
]
=
[
-
8.1280
,
0.0000
,
28.2277
]
init_pos_vels
[
'mars'
]
=
{}
init_pos_vels
[
'mars'
][
'pos'
]
=
[
218751648.0000
,
0.0000
,
-
45263688.0000
]
init_pos_vels
[
'mars'
][
'vel'
]
=
[
5.2205
,
0.0000
,
23.4601
]
init_pos_vels
[
'asteroids'
]
=
{}
init_pos_vels
[
'asteroids'
][
'pos'
]
=
[
0.0000
,
0.0000
,
0.0000
]
init_pos_vels
[
'asteroids'
][
'vel'
]
=
[
0.0000
,
0.0000
,
0.0000
]
init_pos_vels
[
'jupiter'
]
=
{}
init_pos_vels
[
'jupiter'
][
'pos'
]
=
[
769445760.0000
,
0.0000
,
2017638.5000
]
init_pos_vels
[
'jupiter'
][
'vel'
]
=
[
0.0389
,
0.0000
,
13.0879
]
init_pos_vels
[
'saturn'
]
=
{}
init_pos_vels
[
'saturn'
][
'pos'
]
=
[
-
1330536704.0000
,
0.0000
,
-
454165280.0000
]
init_pos_vels
[
'saturn'
][
'vel'
]
=
[
3.2189
,
0.0000
,
-
9.1974
]
init_pos_vels
[
'uranus'
]
=
{}
init_pos_vels
[
'uranus'
][
'pos'
]
=
[
-
1757163648.0000
,
0.0000
,
2272503808.0000
]
init_pos_vels
[
'uranus'
][
'vel'
]
=
[
-
5.3918
,
0.0000
,
-
4.1634
]
init_pos_vels
[
'neptune'
]
=
{}
init_pos_vels
[
'neptune'
][
'pos'
]
=
[
-
1480893824.0000
,
0.0000
,
4351772160.0000
]
init_pos_vels
[
'neptune'
][
'vel'
]
=
[
-
5.1466
,
0.0000
,
-
1.7189
]
init_pos_vels
[
'pluto'
]
=
{}
init_pos_vels
[
'pluto'
][
'pos'
]
=
[
-
1293909504.0000
,
0.0000
,
5770579968.0000
]
init_pos_vels
[
'pluto'
][
'vel'
]
=
[
-
4.5847
,
0.0000
,
-
1.0475
]
return
init_pos_vels
def
build_solar_system
(
self
):
def
build_solar_system
(
self
):
# region 构建太阳系
# region 构建太阳系
self
.
sun
=
Sun
(
size_scale
=
0.8e2
)
self
.
sun
=
Sun
(
size_scale
=
0.8e2
)
...
@@ -84,7 +40,6 @@ class TwoWayFoilSim:
...
@@ -84,7 +40,6 @@ class TwoWayFoilSim:
Venus
(
size_scale
=
4e3
,
distance_scale
=
1.3
),
# 金星放大 4000 倍,距离放大 1.3 倍
Venus
(
size_scale
=
4e3
,
distance_scale
=
1.3
),
# 金星放大 4000 倍,距离放大 1.3 倍
Earth
(
size_scale
=
4e3
,
distance_scale
=
1.3
,
rotate_angle
=
0
),
# 地球放大 4000 倍,距离放大 1.3 倍
Earth
(
size_scale
=
4e3
,
distance_scale
=
1.3
,
rotate_angle
=
0
),
# 地球放大 4000 倍,距离放大 1.3 倍
Mars
(
size_scale
=
4e3
,
distance_scale
=
1.2
),
# 火星放大 4000 倍,距离放大 1.2 倍
Mars
(
size_scale
=
4e3
,
distance_scale
=
1.2
),
# 火星放大 4000 倍,距离放大 1.2 倍
# Asteroids(size_scale=1e2, parent=self.sun), # 小行星模拟(仅 ursina 模拟器支持)
Jupiter
(
size_scale
=
0.68e3
,
distance_scale
=
0.72
),
# 木星放大 680 倍,距离缩小到真实距离的 0.72
Jupiter
(
size_scale
=
0.68e3
,
distance_scale
=
0.72
),
# 木星放大 680 倍,距离缩小到真实距离的 0.72
Saturn
(
size_scale
=
0.68e3
,
distance_scale
=
0.52
),
# 土星放大 680 倍,距离缩小到真实距离的 0.52
Saturn
(
size_scale
=
0.68e3
,
distance_scale
=
0.52
),
# 土星放大 680 倍,距离缩小到真实距离的 0.52
Uranus
(
size_scale
=
1.5e3
,
distance_scale
=
0.36
),
# 天王星放大 1500 倍,距离缩小到真实距离的 0.36
Uranus
(
size_scale
=
1.5e3
,
distance_scale
=
0.36
),
# 天王星放大 1500 倍,距离缩小到真实距离的 0.36
...
@@ -92,7 +47,8 @@ class TwoWayFoilSim:
...
@@ -92,7 +47,8 @@ class TwoWayFoilSim:
Pluto
(
size_scale
=
10e3
,
distance_scale
=
0.23
),
# 冥王星放大 10000 倍,距离缩小到真实距离的 0.23(从太阳系的行星中排除)
Pluto
(
size_scale
=
10e3
,
distance_scale
=
0.23
),
# 冥王星放大 10000 倍,距离缩小到真实距离的 0.23(从太阳系的行星中排除)
]
]
# endregion
# endregion
init_pos_vels
=
self
.
get_init_pos_vels
()
init_pos_vels
=
get_init_pos_vels
()
for
body
in
self
.
bodies
:
for
body
in
self
.
bodies
:
pos_vels
=
init_pos_vels
.
get
(
type
(
body
).
__name__
.
lower
(),
None
)
pos_vels
=
init_pos_vels
.
get
(
type
(
body
).
__name__
.
lower
(),
None
)
...
@@ -114,33 +70,36 @@ class TwoWayFoilSim:
...
@@ -114,33 +70,36 @@ class TwoWayFoilSim:
)
\
)
\
.
set_light_disable
(
True
).
set_ignore_gravity
(
True
)
.
set_light_disable
(
True
).
set_ignore_gravity
(
True
)
def
create_two_dim
(
self
,
body
):
body_2dim
=
CircleObj
(
texture
=
body
.
texture
,
size_scale
=
body
.
diameter
*
body
.
size_scale
,
distance_scale
=
body
.
distance_scale
,
init_position
=
body
.
position
)
\
.
set_light_disable
(
True
).
set_ignore_gravity
(
True
)
body
.
two_dim
=
body_2dim
body_2dim
.
three_dim
=
body
return
body_2dim
def
build_two_dim_bodies
(
self
):
for
body
in
self
.
bodies
:
two_dim_body
=
self
.
create_two_dim
(
body
)
self
.
three_dim_bodies
.
append
(
body
)
self
.
two_dim_bodies
.
append
(
two_dim_body
)
self
.
bodies
.
append
(
self
.
two_way_foil
)
self
.
bodies
.
append
(
self
.
two_way_foil
)
self
.
bodies
.
append
(
self
.
two_way_foil_circle
)
self
.
bodies
.
append
(
self
.
two_way_foil_circle
)
for
body
in
self
.
two_dim_bodies
:
# def create_two_dim(self, body):
self
.
bodies
.
append
(
body
)
# body_2dim = CircleObj(texture=body.texture,
# size_scale=body.diameter * body.size_scale,
# distance_scale=body.distance_scale,
# init_position=body.position) \
# .set_light_disable(True).set_ignore_gravity(True)
#
# body.two_dim = body_2dim
# body_2dim.three_dim = body
# return body_2dim
# def build_two_dim_bodies(self):
# for body in self.bodies:
# # two_dim_body = self.create_two_dim(body)
# self.three_dim_bodies.append(body)
# # self.two_dim_bodies.append(two_dim_body)
#
# self.bodies.append(self.two_way_foil)
# self.bodies.append(self.two_way_foil_circle)
#
# for body in self.two_dim_bodies:
# self.bodies.append(body)
def
build
(
self
):
def
build
(
self
):
self
.
build_solar_system
()
self
.
build_solar_system
()
self
.
build_two_way_foil
()
self
.
build_two_way_foil
()
self
.
build_two_dim_bodies
()
#
self.build_two_dim_bodies()
def
on_ready
(
self
):
def
on_ready
(
self
):
"""
"""
...
@@ -152,22 +111,22 @@ class TwoWayFoilSim:
...
@@ -152,22 +111,22 @@ class TwoWayFoilSim:
camera
.
clip_plane_far
=
1000000
camera
.
clip_plane_far
=
1000000
create_sphere_sky
(
scale
=
200000
)
create_sphere_sky
(
scale
=
200000
)
application
.
time_scale
=
5
application
.
time_scale
=
5
for
body
in
self
.
two_dim_bodies
:
#
for body in self.two_dim_bodies:
body
.
planet
.
enabled
=
False
#
body.planet.enabled = False
model
=
body
.
planet
.
model
#
model = body.planet.model
if
body
.
three_dim
.
has_rings
:
#
if body.three_dim.has_rings:
rings
=
create_rings
(
body
.
planet
)
#
rings = create_rings(body.planet)
rings
.
scale
*=
2e10
#
rings.scale *= 2e10
self
.
two_way_foil_circle
.
planet
.
rotation_x
=
90
self
.
two_way_foil_circle
.
planet
.
rotation_x
=
90
self
.
two_way_foil_circle
.
planet
.
enabled
=
False
self
.
two_way_foil_circle
.
planet
.
enabled
=
False
# self.two_way_foil.planet.alpha = 0.6
# self.two_way_foil.planet.alpha = 0.6
for
b
in
self
.
two_dim_bodies
:
#
for b in self.two_dim_bodies:
b
.
planet
.
rotation_x
=
90
#
b.planet.rotation_x = 90
def
flatten_animation
(
self
,
body
,
flatten_body
):
def
flatten_animation
(
self
,
body
):
def
flatten_update
(
planet
,
flatten_planet
):
def
flatten_update
(
planet
):
def
warp
():
def
warp
():
planet
.
init_update
()
planet
.
init_update
()
# time.sleep(0.2)
# time.sleep(0.2)
...
@@ -187,7 +146,7 @@ class TwoWayFoilSim:
...
@@ -187,7 +146,7 @@ class TwoWayFoilSim:
body
.
planet
.
scale_y_v
=
body
.
planet
.
scale_y
body
.
planet
.
scale_y_v
=
body
.
planet
.
scale_y
body
.
planet
.
init_scale_y
=
body
.
planet
.
scale_y
body
.
planet
.
init_scale_y
=
body
.
planet
.
scale_y
body
.
planet
.
init_update
=
body
.
planet
.
update
body
.
planet
.
init_update
=
body
.
planet
.
update
body
.
planet
.
update
=
flatten_update
(
body
.
planet
,
flatten_body
.
planet
)
body
.
planet
.
update
=
flatten_update
(
body
.
planet
)
# for i in range(10):
# for i in range(10):
# # body.planet.scale_y /= 2
# # body.planet.scale_y /= 2
...
@@ -241,17 +200,19 @@ class TwoWayFoilSim:
...
@@ -241,17 +200,19 @@ class TwoWayFoilSim:
"""
"""
# self.sun.two_dim.planet.init_scale += 0.05
# self.sun.two_dim.planet.init_scale += 0.05
self
.
two_way_foil_circle
.
planet
.
init_scale
+=
0.8
self
.
two_way_foil_circle
.
planet
.
init_scale
+=
0.8
self
.
blink
(
self
.
sun
.
two_dim
)
#
self.blink(self.sun.two_dim)
# 二维化延时的时间
# 二维化延时的时间
two_way_delay_times
=
[
0.5
,
# 太阳
two_way_delay_times
=
[
0.5
,
# 太阳
0.5
,
0.8
,
1.0
,
# 水星 金星 地球
0.5
,
0.8
,
1.0
,
# 水星 金星 地球
1.2
,
2.0
,
3.0
,
# 火星 木星 土星
1.2
,
2.0
,
3.0
,
# 火星 木星 土星
4.0
,
4.5
,
5.5
]
# 天王星 海王星 冥王星
4.0
,
4.5
,
5.5
]
# 天王星 海王星 冥王星
for
idx
,
b
in
enumerate
(
self
.
three_dim_bodies
):
for
idx
,
b
in
enumerate
(
self
.
bodies
):
if
isinstance
(
b
,
Obj
):
continue
if
hasattr
(
b
,
"two_way_time"
):
if
hasattr
(
b
,
"two_way_time"
):
if
b
.
two_way_time
is
not
None
:
if
b
.
two_way_time
is
not
None
:
if
time
.
time
()
-
b
.
two_way_time
>
two_way_delay_times
[
idx
]:
if
time
.
time
()
-
b
.
two_way_time
>
two_way_delay_times
[
idx
]:
self
.
flatten_animation
(
b
,
b
.
two_dim
)
self
.
flatten_animation
(
b
)
# b.planet.enabled = False
# b.planet.enabled = False
# b.two_dim.planet.enabled = True
# b.two_dim.planet.enabled = True
b
.
two_way_time
=
None
b
.
two_way_time
=
None
...
@@ -259,9 +220,9 @@ class TwoWayFoilSim:
...
@@ -259,9 +220,9 @@ class TwoWayFoilSim:
b
.
two_way_time
=
time
.
time
()
b
.
two_way_time
=
time
.
time
()
# b.planet.enabled = False
# b.planet.enabled = False
# b.two_dim.planet.enabled = True
# b.two_dim.planet.enabled = True
if
b
.
two_dim
.
planet
.
enabled
:
#
if b.two_dim.planet.enabled:
# b.two_dim.planet.init_scale += 0.05
#
# b.two_dim.planet.init_scale += 0.05
self
.
blink
(
b
.
two_dim
)
#
self.blink(b.two_dim)
self
.
two_way_foil_circle
.
planet
.
rotation_z
+=
0.4
self
.
two_way_foil_circle
.
planet
.
rotation_z
+=
0.4
def
on_timer_changed
(
self
,
time_data
):
def
on_timer_changed
(
self
,
time_data
):
...
@@ -270,9 +231,9 @@ class TwoWayFoilSim:
...
@@ -270,9 +231,9 @@ class TwoWayFoilSim:
# self.two_way_foil.planet.rotation_z += 10
# self.two_way_foil.planet.rotation_z += 10
camera_look_at
(
self
.
two_way_foil
)
camera_look_at
(
self
.
two_way_foil
)
self
.
current_stage
()
self
.
current_stage
()
for
b
in
self
.
two_dim_bodies
:
#
for b in self.two_dim_bodies:
b
.
planet
.
rotation_y
-=
0.5
#
b.planet.rotation_y -= 0.5
b
.
init_position
=
b
.
three_dim
.
position
#
b.init_position = b.three_dim.position
if
__name__
==
'__main__'
:
if
__name__
==
'__main__'
:
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录