Получение ускорения как функции времени - PullRequest
1 голос
/ 30 сентября 2019

Хорошо, у меня есть этот расчет, описывающий систему пружин, запускающую каждый кадр (~ 16 мс, но не постоянный):

loop(deltaTime) {
  acceleration = (
    (-TENSION * (position - TARGET_POSITION)) + 
    (-FRICTION * velocity)
  ) / MASS

  velocity = velocity + acceleration * deltaTime
  position = position + velocity * deltaTime
}

Все значения констант записываются в верхнем регистре.

Я хочу посчитать, как далеко пружина, описанная системой, выходит за пределы TARGET_POSITION. Я решил, что должен попытаться вычислить, в какой момент времени скорость становится равной 0 (отмечая разворот пружины), а затем использовать это значение времени для расчета положения в этой точке.

Я мог бы просто запустить свой цикл x раз, пока не произойдет изменение скорости, но это было бы довольно грубым решением проблемы. Я предпочел бы получить функцию, которая дает мне скорость в данный момент времени. Если бы у меня была функция, вычисляющая ускорение как функцию времени, я думаю, что смог бы сам вывести функцию скорости, но я застрял, потому что формула содержит position en velocity предыдущего кадра, который я неНе знаю, как устранить.

Как мне устранить текущие position и velocity при описании ускорения как функции времени?

Любая помощь или указатели будут очень благодарны!

...