ThreeBodyProblem module

class ThreeBodyProblem.MainPrograme[源代码]

基类:object

animate_start_stop()[源代码]

控制绘图的暂停和继续

changeSpeed(value)[源代码]

改变图像刷新速度(注意不是时间微分dt!为获得更精确的结果请在参数设置表格中手动更改dt)

参数:

value:刷新速率

change_size()[源代码]

改变散点外观大小

colordiallog()[源代码]

弹出颜色选择框,为散点及其轨迹设置颜色

filedialog_open()[源代码]

弹出文件对话框,打开已有的csv格式文件,从中读取已有轨道信息!

filedialog_save()[源代码]

弹出保存文件对话框,将现有DATA中的数据信息,以及各质点的质量,时间微分和引力常数信息保存至指定文件

helper()[源代码]

弹出提示信息框

info()[源代码]

弹出作者信息对话框

ini()[源代码]

初始化摄像机位置

linedraw(checked)[源代码]

响应单选框是否绘制轨迹的事件请求

参数:

checked:单选框是否被选中

load()[源代码]

加载各个组件,分配空间布局并为组件绑定事件监听函数

myfmt(item)[源代码]

保证参数设置表格数据符合格式要求,并更新至DATA之中

参数:

item:发生改变的表格元素,若数据不符合格式将被置0

parametersettings()[源代码]

弹出参数设置表格对话框,执行此函数将清空原有DATA中的数据信息!

update()[源代码]

更新散点位置及轨迹

ThreeBodyProblem.a(i, x, G, m)[源代码]

计算第i个质量点在位置矩阵X,引力常数G和质量为m的条件下的加速度

参数:
  • i:第几个质点

  • x:位置矩阵X

  • G:引力常数G

  • m:质量矩阵

返回值:
  • result:第i个质量点的加速度

ThreeBodyProblem.initial_cond(N=3, D=3)[源代码]

在空间中为N个质量点产生随机条件

参数:
  • N:质量点个数,三体运动设为3

  • D:空间维度,三维空间设为3

class ThreeBodyProblem.myTable[源代码]

基类:PyQt5.QtWidgets.QTableWidget

自定义表格

pro = 'constant table'
ThreeBodyProblem.remove_i(x, i)[源代码]

计算加速度要去除自身所在位置影响

参数:

  • x:位置矩阵x

  • i:第i个质点

ThreeBodyProblem.simulate(N, D, S, G, dt)[源代码]

数值模拟函数

ThreeBodyProblem.timestep(x0, v0, G, m, dt)[源代码]

给定瞬时条件和时间间隔,为所有质量点计算下一瞬间位置和速度(标准离散时间运动)

参数:
  • x0:初始位置

  • v0:初始速度

  • G:引力常数

  • m:质量

  • dt:时间微分(微分越小结果越精确,但会降低程序的运行速度)

返回值:
  • x1:在一个dt后各点的末位置

  • v1:在一个dt后各点的末速度

ThreeBodyProblem.timestep2(x0, v0, G, m, dt)[源代码]

给定瞬时条件和时间间隔,为所有质量点计算下一瞬间位置和速度(直线匀速运动)

参数:
  • x0:初始位置

  • v0:初始速度

  • G:引力常数

  • m:质量

  • dt:时间微分(微分越小结果越精确,但会降低程序的运行速度)

返回值:
  • x1:在一个dt后各点的末位置

  • v1:在一个dt后各点的末速度