Нужны уравнения для параметрической параболы + угол касательной в любой момент времени - PullRequest
2 голосов
/ 08 января 2011

Это может быть смехотворно очевидно, но математика не была моей сильной стороной в школе. Я достаточно долго бился головой о стену, и наконец решил, что спрошу.

Я пытаюсь оживить спрайт, движущийся по двумерной параболической траектории из точки А в точку Б. Обе точки находятся в одной и той же координате y. Желаемая высота параболы от начальной / конечной y-координаты также дается (или, если вы предпочитаете, желаемую скорость). В настоящее время в моем коде у меня таймер срабатывает с высокой частотой. Я хотел бы рассчитать новое местоположение мяча на основе количества времени, которое прошло. Так что параметрическое уравнение параболы должно хорошо работать.

Я нашел этот ответ от GameDev адекватным, пока мои требования не выросли (хотя я не уверен, что это действительно параболический путь ... Я не могу проследить вывод окончательных уравнений, представленных там) , Теперь я хотел бы сжать / растянуть спрайт в разных точках параболического пути. Но чтобы эффект работал правильно, мне нужно повернуть спрайт так, чтобы его основная ось касалась траектории. Поэтому мне нужно иметь возможность получить угол касательной в любом заданном месте / времени.

Я могу найти все виды уравнений для каждого из этих требований (параметрическая парабола, касательная в точке и т. Д.), Но я просто не могу понять, как объединить их все. Может ли кто-то с большим количеством математических навыков помочь товарищу по программированию и предоставить набор уравнений, которые будут работать? Заранее большое спасибо.

Ответы [ 2 ]

3 голосов
/ 08 января 2011

То, что вам не хватает, это:

Slope = TAN(angle)       // in radians

Что такое склон? Это то, на сколько вы двигаетесь вверх / вниз, на сколько вы продвигаетесь (dy/dx на некоторых других ответах). Для вас это на самом деле (dy/dt)/(dx/dt), поскольку x и y являются функциями времени.

Таким образом, для траектории x(t)=Vx*t и y(t)=Vy*t-1/2*g*t^2 наклон составляет Slope=(Vy-g*t)/Vx, где Vx - начальная горизонтальная скорость, а Vy - начальная вертикальная скорость. g - сила тяжести (вертикальное ускорение вниз). Так что ваше вращение в градусах должно быть

angle = ATAN( (Vy-g*t)/Vx ) * 180/PI

В основном наклон равен отношению вертикальной скорости к горизонтальной скорости.

1 голос
/ 08 января 2011

Пусть X - расстояние от A до B, Y - желаемая высота параболы, V - горизонтальная скорость.

x = Vt

y = Y - (4Y/X^2) (X/2-Vt)^2

tangent dy/dx = (8Y/X^2) (X/2-Vt)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...