Как найти среднюю скорость и ускорение сплайна Безье?

В моем приложении у меня есть несколько экранных координат, через которые я рисую сплайн Безье, и мне нужно найти среднюю скорость и ускорение через этот сплайн.

Как мне это сделать?

Я найду это в пикселях в секунду и в пикселях в секунду в квадрате. а затем преобразовать его в м / сек и м / сек sq после того, как пользователь предоставит отображение пиксель-метр.

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


person Amogh Talpallikar    schedule 08.02.2012    source источник


Ответы (2)


Ух, оставьте пока в стороне подходы пиксели / пол и пиксели / квадратные секунды.

Из вашего вопроса я предполагаю, что у вас есть график x-y с каким-то сплайном Безье, своего рода кривой, которая представляет собой путь с течением времени. Ось x обычно представляет время, а ось y - путь (длину) с.

Скорость - это результат длины во времени, а ускорение - результат этого. Вывод - это просто отношение dy / dx в (предпочтительно) близкой паре точек.

Итак, для начала вам нужно интерполировать и собрать как можно больше точек из этого сплайна Безье. Оставим это на ваше усмотрение. Оттуда,

dy = y(i+1) - yi
dx = x(i+1) - xi
velocity = dy/dx

Таким образом, график скорости во времени будет построен на временной основе. То же самое и с ускорением, просто повторите процесс.

person Rook    schedule 08.02.2012
comment
@Killercam - Ммм, что? (вывод) - ›да, может быть, ошибаюсь, я не знаю точного английского термина. - person Rook; 08.02.2012
comment
Как в производной y по x. Выведение - это когда вы говорите, что вывести одну формулу из другой формулы или выражения. Всего наилучшего... - person MoonKnight; 08.02.2012

Вам нужно один раз дифференцировать кривую по отношению к временному измерению на вашем графике (здесь я предполагаю, что ось x / горизонтальная ось представляет время; ось y / вертикальная ось представляет пройденное расстояние), чтобы получить компонент локальной скорости. Дважды дифференцируйтесь по одному и тому же временному измерению, чтобы получить ускорение в заданной точке. По сути, это разработка градиента в каждой точке кривой скорости и градиента скорости для получения скорости изменения скорости, а именно ускорения.

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

person MoonKnight    schedule 08.02.2012