Je joue avec des orbites dans un simple jeu en 2-D où un navire vole dans l'espace et est attiré par des choses massives. La vitesse du navire est stockée dans un vecteur et une accélération lui est appliquée à chaque image, selon la loi de Newton de la gravitation universelle. Les masses ponctuelles ne bougent pas (il n'y en a qu'une en ce moment), je m'attends donc à une orbite elliptique.
Au lieu de cela, je vois ceci:
J'ai essayé avec des orbites presque circulaires, et j'ai essayé de rendre les masses très différentes (un facteur d'un million) mais j'ai toujours cette orbite tournante.
Voici un code (D), pour le contexte:
void accelerate(Vector delta)
{
velocity = velocity + delta; // Velocity is a member of the ship class.
}
// This function is called every frame with the fixed mass. It's a
// method of the ship's.
void fall(Well well)
{
// f=(m1 * m2)/(r**2)
// a=f/m
// Ship mass is 1, so a = f.
float mass = 1;
Vector delta = well.position - loc;
float rSquared = delta.magSquared;
float force = well.mass/rSquared;
accelerate(delta * force * mass);
}