B-сплайн, состоят из сегментов, чьи полиномиальные коэффициенты зависят лишь от нескольких контрольных точек. Т.е. B-сплайны подвержены локальному контролю - движение одной точки отражается только на малом участке кривой.
Кубический B-сплайн аппроксимирует последовательность из m+1 контрольной точки P0, P1,..., Pm, m>=3; с помощью кривой, состоящей из m-2 кубических полиномиальных сегментов (в сущности - в форме Безье) Q3, Q4,..., Qm. Считаем домены параметра t для каждого сегмента последовательными. Т.е. сегмент Qi определен в интервале ti <=t<ti+1 для 3<=i<m. В частном случае m=3 имеем всего один сегмент на интервале t3<=t<t4 определяемый контрольными точками P0, P1, P2, P3.
Для каждого I>=4 существует соединительная точка или узел между Qi-1 и Qi при величине параметра ti; величина параметра в узле называется величиной узла. Начальная и конечная точки в t3 и в tm+1 также называются узлами, поэтому всего имеется m-1 узлов.
Термин однородный (uniform) означает, что узлы располагаются в равных интервалах параметра t. Без потери общности можно предположить, что t3=0 и ti+1 - ti = 1.
|
|
Каждый из m-2 сегментов кривой определяется четырьмя из m+1 контрольных точек:
для Qi: Pi-3, Pi-2, Pi-1, Pi.
Значит, геометрическая матрица для этого сегмента:
Gbsi = [ Pi-3 Pi-2 Pi-1 Pi ], 3<=i<m
Можно видеть, что сегмент Qi начинается где-то вблизи точки Pi-2 и заканчивается где-то около Pi-1. Каждая контрольная точка (кроме первых и последних) влияет на 4 сегмента.
Базисная матрица для -сплайна, связывающая геометрические ограничения Gbs с функциями сопряжения Bbs и полиномиальными коэффициентами:
Mbs = 1/6 * [ -1 3 -3 1 ]
[ 3 -6 3 0 ]
[ -3 0 3 0 ]
[ 1 4 1 0 ]
Заменяя для простоты (t-ti) на t, а интервал [ ti, ti+1 ] на [ 0, 1 ], получим:
Qi(t-ti) = Gbsi MbsiTi = Gbsi Mbs T =
= Gbsi Bbs = Pi-3 Bbs-3 + Pi-2 Bbs-2 + Pi-1 Bbs-1 + Pi Bbs0 =
= (((1-t)^3)/6) Pi-3 + ((3*t^3-6*t^2+4)/6) Pi-2 + ((-3*t^3+3*t^2+3*t+1)/6) Pi-1 + ((t^3)/6) Pi,
Можно трактовать кривую, как существующую в пространстве однородных координат:
Q(t) = [ X(t) Y(t) Z(t) W(t) ]T
Переходя в трехмерное пространство:
x(t) = X(t)/W(t), y(t) = Y(t)/W(t), z(t) = Z(t)/W(t),
где X(t), Y(t), Z(t), W(t) - кубические полиномиальные кривые. Когда все они B-сплайны, то их называют NURBS.