Подтвердить что ты не робот

Рассчитать положение ускоряющего тела через определенное время

Как рассчитать положение ускоряющего тела (например, автомобиля) через определенное время (например, 1 секунду)?

Для движущегося тела, которое оно не ускоряется, это линейная зависимость, поэтому я предполагаю, что для ускоряющего тела она имеет квадрат где-то.

Любые идеи?

4b9b3361

Ответ 1

Уравнение: s = ut + (1/2) a t ^ 2

где s - положение, u - скорость при t = 0, t - время, a - постоянное ускорение.

Например, если автомобиль начинает неподвижно и разгоняется в течение двух секунд с ускорением 3 м/с ^ 2, он перемещается (1/2) * 3 * 2 ^ 2 = 6 м

Это уравнение исходит из аналитического интегрирования уравнений, указывающих, что скорость - это скорость изменения положения, а ускорение - скорость изменения скорости.

Обычно в ситуации игрового программирования можно использовать несколько другую формулировку: в каждом кадре переменные для скорости и положения интегрируются не аналитически, а численно:

s = s + u * dt;
u = u + a * dt;

где dt - длина кадра (измеренная с использованием таймера: 1/60 секунды или около того). Преимущество этого метода заключается в том, что ускорение может меняться во времени.

Изменить. Несколько человек отметили, что метод численного интегрирования Эйлера (как показано здесь), хотя и самый простой для демонстрации, имеет довольно низкую точность. См. Velocity Verlet (часто используется в играх) и 4-й порядок Runge Kutta ( "стандартный" метод для научных приложений) для улучшенных алгоритмов.

Ответ 2

Ну, это зависит от того, является ли ускорение постоянным. Если это просто

s = ut+1/2 at^2

Если a не является константой, вам необходимо численно интегрировать. Теперь существует множество методов, и ни один из них не будет превзойти это вручную для точности, поскольку все они в конечном счете являются приблизительными решениями.

Самый простой и наименее точный метод Эйлера. Здесь вы делите время на дискретные куски, называемые шагами времени, и выполните

v[n] = v[n-1] * t * a[t]

n - индекс, t - размер шага времени. Позиция также обновляется. Это действительно очень хорошо для тех случаев, когда точность не так важна. Специальная версия метода Эйлера даст точное решение для движения снаряда (см. Wiki), поэтому, хотя этот метод является грубым, он может быть идеальным для некоторых сюжетов.

Самый распространенный метод численного интегрирования, используемый в играх и в некоторых симуляциях химии, Velocity Verlet, который является особой формой более общего Verlet метод. Я бы рекомендовал это, если Эйлер слишком груб.

Ответ 3

Вы можете использовать это в Google. Я нашел это: http://www.ugrad.math.ubc.ca/coursedoc/math101/notes/applications/velocity.html

Но если вы не хотите читать, это:

p (t) = x (0) + v (0) * t + (1/2) при ^ 2

где

  • p (t) = положение в момент времени t
  • x (0) = позиция при нулевом времени
  • v (0) = скорость в нулевое время (если у вас нет скорости, вы можете игнорировать этот термин)
  • a = ускорение
  • t = текущая версия

Ответ 4

Предполагая, что вы имеете дело с постоянным ускорением, формула:

distance = (initial_velocity * time) + (ускорение * время * время)/2

где

расстояние - пройденное расстояние

initial_velocity - начальная скорость (ноль, если тело находится в состоянии покоя, поэтому вы можете отбросить этот термин в этом случае)

время - время

ускорение - это (постоянное) ускорение

При вычислении обязательно используйте соответствующие единицы измерения, т.е. метры, секунды и т.д.

Очень хорошая книга по теме Физика для разработчиков игр.

Ответ 5

Предполагая постоянное ускорение и начальную скорость v0,

x(t) = (1/2 * a * t^2) + (v0 * t)