C++ 两体运动所需的变量

C++ 两体运动所需的变量,c++,sdl,physics,motion,C++,Sdl,Physics,Motion,我试图在SDL1.2中编程一个两体问题 所以在这个程序中,我会有两个身体,对吧,我的问题是每个身体需要什么数据? 这个程序就是两个在一定轨道上旋转的物体。 我将为每个实体创建一个类,并将数据存储在其中。 我相信我需要以下数据 质量1,质量2(每个车身的质量) 速度1、速度2(每个对象的初始速度) 角度1,角度2(模拟开始时对象将沿哪个方向移动的角度) 距离(对象之间的距离) 我不确定我是否正确,我是否需要对象的任何其他数据,或者我所说的某些日期有点不正确?因为你的问题是在3空间中,你需要每个物体

我试图在SDL1.2中编程一个两体问题 所以在这个程序中,我会有两个身体,对吧,我的问题是每个身体需要什么数据? 这个程序就是两个在一定轨道上旋转的物体。 我将为每个实体创建一个类,并将数据存储在其中。 我相信我需要以下数据 质量1,质量2(每个车身的质量) 速度1、速度2(每个对象的初始速度) 角度1,角度2(模拟开始时对象将沿哪个方向移动的角度) 距离(对象之间的距离)


我不确定我是否正确,我是否需要对象的任何其他数据,或者我所说的某些日期有点不正确?

因为你的问题是在3空间中,你需要每个物体和质量的6个位置参数。如何准确地编码这些参数取决于您。如果要以笛卡尔坐标给出坐标,请存储位置的
x
y
z
分量以及速度的
x
y
z
分量。如果要使用极坐标,则需要幅值、方位角和仰角。到目前为止,您提到的配置有质量、速度、速度方位角和速度仰角。您还需要包括初始位置。我建议始终切换到笛卡尔坐标系,因为积分在不同方向上看起来更均匀。

这是一个有点开放的问题,不是一个好问题。但是,问问你自己,你是如何用笔和纸计算出物体的位置的。可能有很多不同的方法,但我会从每个物体都有一个质量,一个表示位置的矢量,和一个表示速度的矢量(包括速度和方向)开始。您可以存储角度等信息,但是,由于相同的信息可以简单地从速度向量中导出,因此它是多余的-尽管在某些情况下,它可能会用作“缓存值”,因此您不必重复重新计算它…我还建议保留系统总能量、动量和角动量。它们是守恒量。存储它们意味着变量集尺寸过大,但您需要解决舍入错误的累积问题。存储重心(除动量外)和进行与CoG相关的所有计算也可能很有用。