Равномерное движение по сплайну Катмулл-Рома
Автор: Volodar
Часто появляются вопросы на форуме, на тему равномерного движения по сплайнам.
Небольшая подсказка движения по сплайну Катмулл-Рома.
Сплайн Катмулл-Рома хорош тем, что кривая, построенная по данному сплайну проходит через заданные контрольные точки. Что полезно для построения некоторой траектории движения.
Общая формула:
P(t) = (2t³ - 3t² + 1)p0 + (t³ - 2t² + t)m0 + ( -2t³ + 3t²)p1 + (t³ - t²)m1
,Где p0, p1 - центральные точки сплайна, m0, m1 - крайние точки сплайна: (m0 - p0 - p1 - m1)
Для обеспечения равномерного движения, упростим выражение и вычислим первую производную:
a = 1.5(p0 - p1) + 0.5(m1 - m0);
b = -(2.5p0 + 2p1) - (0.5m1 + m0);
c= (p1 - m0)/2;
d= p0;
Тогда выражение примет вид:
P(t) = ((at + b)t + c)t + d;
И первая производная:
P’(t) = 3at² + 2bt + c;
Теперь для вычисления скорости в данной позиции сплайна необходимо вычислить производную и поделить необходимую скорость на это значение:
V = velocity / dp;
Реализация класса: