【发布时间】:2014-07-15 16:07:33
【问题描述】:
我在太空中有很多粒子。
每个粒子都知道它在空间中的位置以及质量、速度和加速度等信息。
public class Particle
{
float mass;
float velocity;
float acceleration;
}
我有一个控制重力的类。这个类有一个List,是所有Particles。我可以使用下面的公式计算两个粒子的重力。
F1 = F2 = G*M1*M2/d^2
当我的 List 中有 5 个粒子时,我该如何计算?未来还会有更多。
元素 0 与 1,元素 1 与 2,元素 2 与 3,元素 3 与 4,以及元素 4 与 0? (这似乎不是一个好主意)。
【问题讨论】:
-
我以为太空中有很多星星!开玩笑! :)
-
问题是每个主体都必须与所有其他主体交互。您正在寻找的是 N 体问题 (en.wikipedia.org/wiki/N-body_problem) 或 N 体模拟 (en.wikipedia.org/wiki/N-body_simulation)。也许从三个身体开始——这已经很复杂了。
-
@PiotrWolkowski 酷我不知道它叫 N 体模拟。
-
您需要计算每个时间范围内作用在每个粒子上的所有引力的总和,可能是一组向量。有更快的近似值,但在这些情况下,我认为您不需要它。
-
NASA 在计算轨道轨迹时的方法是计算每个天体对其他天体的引力。对于每个物体,矢量的总和作为某个周期的加速度应用于运动,并计算出一个新的位置。然后重复练习。他们将牛顿引力用于外行星。对于 Mercury,他们必须使用广义相对论,但您可能不需要。