模拟行星运行

Simulation of planets orbiting

我正在借助牛顿定律 (here) 创建行星模拟,一切正常,但我找不到任何资源来计算行星的完美起始速度,以便给定以下两个行星的已知参数绕另一颗行星运行:质量、距离和 G

计算加速度的代码如下:

calcBodyAcceleration(body1, body2) {

    var G = Settings.get("G");
    var mults = Settings.get("multipliers");

    var pos1 = Vec2.add(body1.position, body1.center);
    var pos2 = Vec2.add(body2.position, body2.center);

    var subtraction = Vec2.subtract(pos1, pos2);
    var dist2 = subtraction.magnitudeSq();
    var dist = Math.sqrt(dist2);

    var mass1 = body1.mass * mults.mass;
    var mass2 = body2.mass * mults.mass;

    var mass = mass1 * mass2;
    var force = G * (mass / dist2);

    subtraction.divide(dist).multiply(force).divide(mass1);

    body1.acceleration.subtract(subtraction);

}

您可以使用公式计算速度

v = sqrt(Gm/r)

其中 G 是引力常数,m 是您围绕其运行的物体的质量,r 是轨道的半径(从物体的中心算起)。