Хорошо, у меня есть этот расчет, описывающий систему пружин, запускающую каждый кадр (~ 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
при описании ускорения как функции времени?
Любая помощь или указатели будут очень благодарны!