ПрограммированиеПодсказкиОбщее

Равномерное движение по сплайну Катмулл-Рома

Автор:

Часто появляются вопросы на форуме, на тему равномерного движения по сплайнам.

Небольшая подсказка движения по сплайну Катмулл-Рома.

Сплайн Катмулл-Рома хорош тем, что  кривая, построенная по данному сплайну проходит через заданные контрольные точки. Что полезно для построения некоторой траектории движения.

Общая формула:

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;


Реализация класса:

+ Показать

И использование:

+ Показать

#Катмулл-Ром, #равномерное движение, #сплайны

17 августа 2012 (Обновление: 13 мая 2014)

Комментарии [12]