Sto giocando con le orbite in un semplice gioco 2D in cui una nave vola nello spazio ed è attratta da cose enormi. La velocità della nave è immagazzinata in un vettore e l'accelerazione viene applicata su di essa in ogni fotogramma secondo la legge di gravitazione universale di Newton. Le masse punti non si muovono (al momento ce n'è solo 1) quindi mi aspetto un'orbita ellittica.
Invece, vedo questo:
Ho provato con orbite quasi circolari e ho provato a rendere le masse molto diverse (un fattore di un milione) ma ottengo sempre questa orbita ruotata.
Ecco un po 'di codice (D), per il contesto:
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);
}