Как я буду программировать симулятор гравитации? Я делаю своего рода 2-й космический симулятор, и я хочу, чтобы планета (центр тяжести) тянула объекты к ней. Объект - это космический корабль (в основном только x и y-координаты).
Проверьте назначение Принстона N-Body. Он описывает, что вы хотите.
Однако в интересах кратких сводок вы можете получить уравнения из основной тригонометрии и Закона Ньютона о всеобщей гравитации:
F = GMm/(r^2)
где F = сила между двумя объектами, G = гравитационная постоянная, M и m - соответствующие массы, а r - расстояние между ними.
Немного математики, и вы получите следующие результаты:
F_x = F(x_2 - x_1)/r
F_y = F(y_2 - y_1)/r
где F_x - гравитационная сила в направлении x (то же самое для F_y, но в направлении y), x_2 и y_2 - это положение одного из ваших объектов, x_1 и y_1 - положение другого, F такое, как определено выше, и r это расстояние между ними.
Используйте законы Ньютона - силы, которые чувствуют два объекта, являются привлекательными (от одного объекта центра масс до другого), равными друг другу, и имеют значение, равное g * m1 * m2/(d * d) (где g - постоянная, m1 и m2 - массы, d - расстояние от центральных точек.
Однако, если у вас есть планета, эффект притяжения космического корабля к планете пренебрежимо мал, поэтому обычно нет вычислений для планеты; он просто стационарный.
Имейте в виду, что F = m * a, где F - приведенная выше сила, m - масса космического корабля, a - ускорение объекта. На основе ускорения вы вычисляете скорость и на основе скорости позиции.