Есть ли у кого-нибудь пример внедрения Орбитальной Механики (желательно в XNA)? Код, который я использую в настоящее время, приведен ниже, но он не "чувствует себя хорошо", когда он выполняется. Объект просто так сильно изгибается до планеты, и независимо от того, насколько я настраиваю переменные, я не могу заставить его войти на орбиту или даже частичную орбиту.
shot.Position += shot.Velocity;
foreach (Sprite planet in planets)
{
Vector2 directionToPlanet = (planet.Position - shot.Position);
directionToPlanet.Normalize();
float distance = Vector2.DistanceSquared(shot.Position, planet.Position);
float gPull = (float)(planet.gravityStrength * (planet.Mass * shot.Mass) / distance) + planet.gravityField;
shot.Position += new Vector2(directionToPlanet.X * gPull, directionToPlanet.Y * gPull);
}
Edit Маркировка Mendelt отвечает правильно, указав, что мне нужно обновить скорость, а не позицию. Мне также нужно было изменить вычисление gPull на
float gPull = shot.Mass * planet.Mass / distanceSqr * planet.gStr;