Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Python_超人
太阳系三体模拟器
提交
e8fb52a4
太阳系三体模拟器
项目概览
Python_超人
/
太阳系三体模拟器
通知
1074
Star
131
Fork
128
代码
文件
提交
分支
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看板
提交
e8fb52a4
编写于
3月 19, 2023
作者:
三月三net
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
太阳系三体模拟器
上级
137b4388
变更
3
显示空白变更内容
内联
并排
Showing
3 changed file
with
37 addition
and
10 deletion
+37
-10
bodies/body.py
bodies/body.py
+28
-1
data/tri_bodies_sim_perfect_03.json
data/tri_bodies_sim_perfect_03.json
+8
-8
scenes/ursina_json_sim.py
scenes/ursina_json_sim.py
+1
-1
未找到文件。
bodies/body.py
浏览文件 @
e8fb52a4
...
...
@@ -353,7 +353,11 @@ class Body(metaclass=ABCMeta):
with
open
(
json_file
,
"r"
,
encoding
=
'utf-8'
)
as
read_content
:
json_data
=
json
.
load
(
read_content
)
for
body_data
in
json_data
[
"bodies"
]:
# print(body_data)
try
:
body_data
=
Body
.
exp
(
body_data
)
# print(body_data)
except
Exception
as
e
:
err_msg
=
f
"
{
json_file
}
格式错误:"
+
str
(
e
)
raise
Exception
(
err_msg
)
body
=
Body
(
**
body_data
)
bodies
.
append
(
body
)
if
"params"
in
json_data
:
...
...
@@ -361,6 +365,29 @@ class Body(metaclass=ABCMeta):
# print(body.position_au())
return
bodies
,
params
@
staticmethod
def
exp
(
body_data
):
"""
进行表达式分析,将表达式改为eval执行后的结果
:param body_data:
:return:
"""
#
for
k
in
body_data
.
keys
():
v
=
body_data
[
k
]
if
isinstance
(
v
,
str
):
if
v
.
startswith
(
"$exp:"
):
exp
=
v
[
5
:]
body_data
[
k
]
=
eval
(
exp
)
elif
isinstance
(
v
,
list
):
for
idx
,
item
in
enumerate
(
v
):
if
isinstance
(
item
,
str
):
if
item
.
startswith
(
"$exp:"
):
exp
=
item
[
5
:]
v
[
idx
]
=
eval
(
exp
)
return
body_data
if
__name__
==
'__main__'
:
# build_bodies_from_json('../data/sun.json')
...
...
data/tri_bodies_sim_perfect_03.json
浏览文件 @
e8fb52a4
...
...
@@ -5,11 +5,11 @@
"mass"
:
2e+30
,
"init_position"
:
[
0.0
,
518222240.0
,
"$exp:math.sqrt(3) * 2 * AU"
,
0.0
],
"init_velocity"
:
[
-14.89
0000343322754
,
-14.89
,
0.0
,
0.0
],
...
...
@@ -27,13 +27,13 @@
"name"
:
"绿轨太阳B"
,
"mass"
:
2e+30
,
"init_position"
:
[
-299195744.0
,
"$exp: -2 * AU"
,
0.0
,
0.0
],
"init_velocity"
:
[
7.445000171661377
,
-12.895118713378906
,
"$exp: 1/2 * 14.88"
,
"$exp:-math.sqrt(3) / 2 * 14.88"
,
0.0
],
"density"
:
1408.0
,
...
...
@@ -50,13 +50,13 @@
"name"
:
"蓝轨太阳C"
,
"mass"
:
2e+30
,
"init_position"
:
[
299195744.0
,
"$exp: 2 * AU"
,
0.0
,
0.0
],
"init_velocity"
:
[
7.445000171661377
,
12.895118713378906
,
"$exp: 1/2 * 14.88"
,
"$exp:math.sqrt(3) / 2 * 14.88"
,
0.0
],
"density"
:
1408.0
,
...
...
scenes/ursina_json_sim.py
浏览文件 @
e8fb52a4
...
...
@@ -13,7 +13,7 @@ from scenes.func import ursina_run
if
__name__
==
'__main__'
:
# TODO: 去掉注释,太阳演示
bodies
,
params
=
Body
.
build_bodies_from_json
(
'../data/sun.json'
)
#
bodies, params = Body.build_bodies_from_json('../data/sun.json')
# TODO: 去掉注释,太阳和地球演示
# bodies, params = Body.build_bodies_from_json('../data/sun_earth.json')
# TODO: 去掉注释,在地球上看月相演示变化过程演示
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录