Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Python_超人
宇宙模拟器
提交
9ed7ad4d
宇宙模拟器
项目概览
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看板
提交
9ed7ad4d
编写于
3月 23, 2025
作者:
三月三net
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Python超人-宇宙模拟器
上级
3f8f23e1
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
18 addition
and
5 deletion
+18
-5
simulators/mpl_2d_simulator.py
simulators/mpl_2d_simulator.py
+18
-5
未找到文件。
simulators/mpl_2d_simulator.py
浏览文件 @
9ed7ad4d
...
...
@@ -46,6 +46,7 @@ class 星球:
self
.
名称偏移
=
名称偏移
self
.
轨迹
=
[
self
.
位置
.
copy
()]
self
.
轨迹最大长度
=
轨迹最大长度
self
.
加速度
=
np
.
zeros
(
2
)
def
更新
(
self
,
星球列表
,
时间步长
):
"""
...
...
@@ -64,6 +65,7 @@ class 星球:
总力
+=
力
# 计算加速度,单位:m s^-2
加速度
=
总力
/
self
.
质量
self
.
加速度
=
加速度
# 更新速度,单位:m/s
self
.
速度
+=
加速度
*
时间步长
# 更新位置,单位:m
...
...
@@ -84,7 +86,7 @@ def 场景1():
时间步长
=
0.01
# 创建星球列表
星球列表
=
[
星球
(
质量
=
1e12
,
位置
=
[
0
,
0
],
速度
=
[
0
,
1
],
颜色
=
'red'
,
名称
=
"太阳"
,
名称偏移
=
[
2
,
0
]),
星球
(
质量
=
1e12
,
位置
=
[
0
,
0
],
速度
=
[
0
,
1
],
颜色
=
'red'
,
名称
=
"太阳"
,
名称偏移
=
[
1
,
0
]),
星球
(
质量
=
1e9
,
位置
=
[
10
,
0
],
速度
=
[
0
,
2
],
颜色
=
'blue'
,
名称
=
"蓝星"
),
星球
(
质量
=
1e9
,
位置
=
[
-
10
,
0
],
速度
=
[
0
,
-
2
],
颜色
=
'green'
,
名称
=
"绿星"
)
]
...
...
@@ -96,8 +98,8 @@ def 场景2():
global
星球列表
,
时间步长
时间步长
=
0.2
星球列表
=
[
星球
(
质量
=
1e12
,
位置
=
[
10
,
0
],
速度
=
[
0
,
1
],
颜色
=
'blue'
,
名称
=
"蓝星"
,
名称偏移
=
[
2
,
0
]),
星球
(
质量
=
1e12
,
位置
=
[
-
10
,
0
],
速度
=
[
0
,
-
1
],
颜色
=
'green'
,
名称
=
"绿星"
,
名称偏移
=
[
2
,
0
])
星球
(
质量
=
1e12
,
位置
=
[
10
,
0
],
速度
=
[
0
,
1
],
颜色
=
'blue'
,
名称
=
"蓝星"
,
名称偏移
=
[
1
,
0
]),
星球
(
质量
=
1e12
,
位置
=
[
-
10
,
0
],
速度
=
[
0
,
-
1
],
颜色
=
'green'
,
名称
=
"绿星"
,
名称偏移
=
[
1
,
0
])
]
坐标轴
.
set_xlim
(
-
50
,
50
)
坐标轴
.
set_ylim
(
-
50
,
50
)
...
...
@@ -138,13 +140,24 @@ def 更新(帧):
for
星球
in
星球列表
:
星球
.
更新
(
星球列表
,
时间步长
)
# 速度列表 = [坐标轴.text(0, 0, f"{round(星球.速度[0], 2)},{round(星球.速度[1], 2)}", color=星球.颜色) for 星球 in 星球列表]
# 加速度列表 = [坐标轴.text(0, 0, str(星球.加速度), color=星球.颜色) for 星球 in 星球列表]
速度列表
=
[]
加速度列表
=
[]
for
i
,
星球
in
enumerate
(
星球列表
):
点列表
[
i
].
set_data
(
星球
.
位置
[
0
],
星球
.
位置
[
1
])
轨迹
=
np
.
array
(
星球
.
轨迹
)
轨迹列表
[
i
].
set_data
(
轨迹
[:,
0
],
轨迹
[:,
1
])
偏移量_x
,
偏移量_y
=
星球
.
名称偏移
名称列表
[
i
].
set_position
((
星球
.
位置
[
0
]
+
偏移量_x
+
1
,
星球
.
位置
[
1
]
+
偏移量_y
))
return
点列表
+
轨迹列表
+
名称列表
名称列表
[
i
].
set_position
((
星球
.
位置
[
0
]
+
偏移量_x
+
0.5
,
星球
.
位置
[
1
]
+
偏移量_y
))
速度
=
坐标轴
.
text
(
星球
.
位置
[
0
]
+
偏移量_x
+
0.5
,
星球
.
位置
[
1
]
+
偏移量_y
+
3
,
f
"v:
{
round
(
星球
.
速度
[
0
],
2
)
}
,
{
round
(
星球
.
速度
[
1
],
2
)
}
"
,
color
=
星球
.
颜色
)
加速度
=
坐标轴
.
text
(
星球
.
位置
[
0
]
+
偏移量_x
+
0.5
,
星球
.
位置
[
1
]
+
偏移量_y
+
5
,
f
"a:
{
round
(
星球
.
加速度
[
0
],
2
)
}
,
{
round
(
星球
.
加速度
[
1
],
2
)
}
"
,
color
=
星球
.
颜色
)
速度列表
.
append
(
速度
)
加速度列表
.
append
(
加速度
)
# 名称列表[i].set_position((星球.位置[0] + 偏移量_x + 0.5, 星球.位置[1] + 偏移量_y))
return
点列表
+
轨迹列表
+
名称列表
+
速度列表
+
加速度列表
# 创建动画
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录