1

C++ で 2D 空間シミュレーションを作成しようとしています。その中で、位置(x、y)で方向(d)に速度(v)で移動する質量(m)の惑星を作成できます。この惑星に引力を持っている 1 つのオブジェクト (すなわち星) もあります。このオブジェクトには質量 (M) と位置 (X,Y) があります。特定の時間 t 後に惑星の位置を返す関数を作成したいと思います。惑星は必ずしも軌道上にあるとは限りませんが、速度と距離が許せばそうなる可能性があります。ケプラーの方程式が関係していることは知っていますが、これの正確な数学的実装を自分で理解することはできません。どんな助けでも大歓迎です。

私の現在の更新機能は、星や質量をまったく考慮していません。

double xPos, yPos, velocity, direction;
void Planet::update(int t){
    xPos += t * velocity * cos(direction / 180 * 3.14);
    yPos += t * velocity * sin(direction / 180 * 3.14);
}
4

1 に答える 1

1

おそらくニュートンの万有引力の法則を探しているでしょう。

Gm 1 m 2 / r 2 = F

Fが見つかったら、標準の運動方程式で使用できます。

F y t 2 / 2 + v y t + y 0 = y
F x t 2 / 2 + v x t + x 0 = x

于 2015-07-04T04:47:38.667 に答える