C # XNA Имитировать гравитацию - PullRequest
1 голос
/ 19 октября 2010

У меня есть вопрос, касающийся использования примитивных форм и симуляции круга для свободного падения. Как бы я пошел по этому поводу? Я использую формулу для гравитации?

Ответы [ 4 ]

13 голосов
/ 19 октября 2010

Зависит от того, насколько подробно вы хотите быть. Ньютоновские законы гравитации определяют силу, которая имеет обратную квадратичную связь между двумя телами и их расстоянием.

alt text

  • F - величина гравитационной силы между двумя точечными массами,
  • G - гравитационная постоянная ,
  • м 1 - масса первой точечной массы,
  • м 2 - масса второй точки массы, а
  • r - расстояние между двумя точечными массами.

Так что, если вы моделируете большие тела (скажем, планетную систему), вам нужно применить гравитацию между каждой парой объектов.

Очевидно, что когда вы знаете силу, которую вы можете применить Второй закон Ньютона (сила = масса * ускорение) для вычисления ускорения, которое вы должны применить к каждому телу.

На другом конце шкалы простоты, если у вас есть фиксированная система отсчета относительно одного очень большого тела (земли) и нескольких маленьких объектов, все, что вам действительно нужно сделать, это применить постоянное ускорение к земле , В этом случае (в вакууме) гравитация на земле применяет постоянное ускорение 9,81 м / с 2 ко всем объектам. CodeInChaos дает хороший пример кода.


(Конечно, теперь мы знаем, что ньютоновская гравитация не совсем правильная, и она разрушается в очень больших и очень малых масштабах. Но это немного за пределами этого ответа)

8 голосов
/ 19 октября 2010

Гравитация - это просто постоянное ускорение вниз.

псевдокод:

const Vector3D Gravity=(0, 0, -9.8 m/s^2);
Vector3D Acceleration=Gravity;//insert other forces here
Vector3D Position+=Speed*DeltaT+0.5*Acceleration*DeltaT*DeltaT.
Vector3D Speed+=Acceleration*DeltaT;
2 голосов
/ 19 октября 2010

Вы можете использовать физический движок, например Farseer:

http://roy -t.nl / index.php / 2010/09/10 / XNA-предсказателя-платформер-физика-учебник /

0 голосов
/ 19 октября 2010

Простая версия: если ваш круг имеет направление и скорость, то гравитация - это просто дополнительное направление и скорость, указывающая направление, в котором вы хотите, чтобы ваша гравитация тянула.

Еще проще: просто переместите местоположение круга вниз.

После этого просто настройте его так, чтобы оно соответствовало вашей цели с ускорением и настройкой скорости.

...