B Spline curves and Beizer curves
Внимание! Этот документ ещё не опубликован.
Автор: Константин Бурлаченко
В этой статье хотел написать всё, что мне известно о кривых и поверхностях типа B-Spline. Доказательства опущены.
В статье затрагиваются определение и свойства следующих вещей:
- Полином Бернштейна
- Кривая Безье
- Б-сплайны
- Виды б-сплайнов
- Тензорные параметрические поверхности на примере поверхностей Б-сплайн и Безье
Полином Бернштейна
Полином Бернштейна
Полином Бернштейна определяется в виде:
. Если посмотреть внимательно на этот полином, то можно увидеть, что он является ничем иным как k-ым членом разложения полином Ньютона с коэффициентами a=t, b=1-t.
Из этого следует, что для всех чисел
:
- выполнено
- Полином является положительно определённым. (Все параметры полинома больше нуля.)
Сплайны
Кривая Безье
Определение
Не рациональная кривая Безье задаётся как: 
Здесь:
- C(t) – получаемая вершина
- t – параметрическое число от 0 до 1, задающее точку на кривой.
- Pi – контрольная точка i
- Bin – полином Бернштейна с коффициентами i, n
Рациональная кривая Безье задаётся видом:
Здесь фигурируют теже коэффициенты, что и для не рациональной кривой и добавляется один коэффициент:
Свойтсва не рациональной кривой Безье:
- Кривая всегда проходит через начальную и конечную точку
- Кривая лежит внутри минимальной объемлющей выпуклой оболочки всех контрольных точек
- Касательными к кривой в точках Po и Pn являются прямые, проходящие через точки (Po, P1) и (P(n-1), Pn) соответственно
- Произвольная прямая имеет количество пересечений с кривой Безье не большее чем с поли линией, составленной по контрольным точкам.
- Для выполнения аффинного преобразования над кривой достаточно выполнить аффинное преобразование над контрольными точками
- Обобщением кривой Безье является B-Spline
- Степень полинома описывающего кривую по N+1 точкам равна N
- Кривая определена для значений u в отрезке [0,1].
- При изменении положении одной контрольной точки происходит глобальное перестроение всей кривой. Любая контрольная точка оказывает влияние на форму всей кривой.
- Легко получить, что при переносе контрольной точки k на вектор v новое значение кривой в точке t будет вычисляться как:
где С(t) – старое значение
- Значение производной в точке t вычисляется как:
Данная кривая является кривой Безье определённая с помощью n-1 контрольной точки. Эту кривую часто называют годографом кривой C(t).
- Для соединения двух кривых Безье, заданными набором контрольных точек:
и
,
при непрерывном соединении до первой производной требуется:
- Последняя линия посчитанная в ходе работы алгоритма Де-Кастельи определяет касательную в точке C(u)
- Пусть кривая задана через контрольные точки:
. Для повышения порядка кривой на единицу без изменения последней можно воспользоваться следующим:
- В соответствии с алгоритмом Де-Кастельи может быть легко посчитаны контрольные точки, необходимые для составления двух кривых, являющиеся результатом деления исходной кривой на две части какой-либо точкой, лежащей на кривой. Для этого требуется пройти все шаги алгоритма Де-Кастельи и специальным образом обойти полученные точки.
На интуитивном уровне понятно: что результатом деления исходной кривой, указанной на рисунке, точкой (60) будут две кривые заданные следующими контрольными точками:
- (00, 10, 20, 30, 40, 50, 60)
- (60, 51, 42, 33, 24, 15, 06)
Б-Сплайн (B-Spline, Basic Spline)
Определение
Формальное определение будет дано в конце параграфа. Сейчас будет вестись разговор откуда появилась необходимость появление такого типа кривых.
Данный вид сплайнов является обобщением Кривой Безье.
Область определения T=[0,1] разбивается узлами.
Определение кривой вводится так, что изменении кривой на области [ti, ti+1] никак не повлияет на изменение формы кривой на всей области определения.
Зададим вектор узлов T=

как неубывающую последовательность. Узлы в этой последовательности могут повторяться. Данный вектор разбивает исходную область определения на m узлов.
Зададим контрольные точки D = [

](по аналогии с кривой Безье).
Число p = m - n - 1 называют - степенью b-spline’a. Можно доказать, что это число как раз и равно степени кривой.
Узлы:

называют внутренними (действительными узлами).
Определение б-сплайна вводится так:
.
Nip(t) - базисная функция (i, p)
Pi - контрольная точка i
Значение точки кривой в узловой точке C(ti) называют узловой точкой.
Базисная функция Nip рассчитывается по рекуррентным формулам Кокса-де-Бура:

Для понимания того как вводится определения b-spline’а помогут картинки ниже, уточняющие процесс генерации Nip(t)

Виды Б-сплайнов
- Если вектор узлов не обладает никакой специфической структурой, то получаемая кривая не будет касаться первого и последнего отрезка полилинии, построенной по контрольным точкам. Такие кривые называют открытыми (open B-Spline).

- Если первые p+1 узлов равны нулю и последние p+1 равны 1, то такой Б - сплайн называют периодическим (periodic B-Spline)
- Если внутренние узлы равномерно стоят друг от друга с фиксированным шагом, то такой Б - сплайн называют равномерным(uniform B-Spline). Если данное условие не выполняется, то сплайн называют (non-uniform).
- Если мы хотим получить кривую, для которой в начальной и конечной точке первый и последний отрезок полилинии, составленнной по контрольным точкам, являлся бы касательной в соответствующих точках первый и последний узел должны быть кратности p+1. Такая кривая будет называться отсечённой. (clamped B-Spline)
- При повторении некоторых узлов и контрольных точек генерируемая кривая может стать закрытой. (closed B-spline)
Замечание: Нет устоявшейся терминологии и разные авторы обозначают введённые понятия по разному. А также придают кривым типа closed обязанность иметь равномерный узловой вектор.
В моём опыте встречалась следующая терминология, так что будьте внимательны:
Floating = open
Open = clamped
Periodic = closed
Некоторые операции по работе с Б-Сплайнами
Получение closed B-spline
Один из методов задания closed B-spline из open:
1) Задание вектора узлов как
2) Свернуть первые и последние p контрольных точек:
В свёрнутых точках кривая непрерывна до
Модификация контрольных точек
При передвижении контрольной точки

на вектор v происходит следующее:
Согласно в дальнейшем упомянутом свойству *5* в данном случае, при

поведение кривой не изменится.
Вычисление производной для Б - сплайна
Производная каждой базовой функции вычисляется как:
Учитывая общую формулу задания Б - сплайна можно получить:
Где:
Таким образом мы получили новый Б - сплайн на один порядок меньше. С новым множеством контрольных точек, но с не изменившимся узловым вектором.
Свойства B-Spline - а
1) Степень полинома описывающего B - Spline равна p
2) Nip(u) является полиномом степени p от u.
3) Значение Nip(u) всегда неотрицательно.
4)
![]()
для любого p и для любого t на интервале
5) Базовая функция

больше нуля только на отрезке
6) На любом интервале

p+1 базовых наборов функций степени p являются неотрицательными:

7) Clamped кривые всегда проходят через начальную и конечную контрольную точку.
8) Соотношение p = m - n – 1 должно быть выполнено всегда
9) Изменение положения контрольной точки Pi повлияет только на поведение кривой на интервале
10) С(t) непрерывна в узле кратности k до
. Если t не определяет узел, то функция в данной точке бесконечно дифференцируема. Таким образом увеличивая кратность узла мы уменьшаем непрерывность.
11) Никакая прямая в пространстве не пересекает кривую больше раз чем пересекает поли линию, если кривая лежит в одной плоскости.
12) Для выполнения аффинного преобразования над кривой достаточно выполнить аффинное преобразование над контрольными точками
13) Если n=p или, что равносильно: если в узловом векторе 2n+2 узлов. А также первые n+1 которых равны 0, а оставшиеся n+1 равны 1.
То:
, где правая часть равенства является базовой функцией кривой Безье.
Преимущества и недостатки использования Б - сплайна
Б-сплайн кривые требуют больше описания и их теория горазда сложнее, чем теория кривых Безье. Однако они обладают большими преимуществами по сравнению с последними:
- Кривая Безье является частным случаем Б - сплайна
- Б - сплайн отвечает всем основным свойствам кривых Безье
- Б - сплайн кривые обладают более гибкими возможностями по заданию кривой.
- Степень кривой задаётся отдельно
- Мы можем изменять положение контрольной точки без глобального изменения кривой
Однако надо помнить о том, что б-сплайны являются полиномами от U, и поэтому не могут воспроизвести множество полезных простых кривых, например окружность. В данном случае требуется использовать NURBS кривые.
Тензорные параметрические поверхности
Тензорное получение поверхностей заключается в методе получения поверхности в результате “произведения” двух исходных кривых
Обработка тензорной параметрической поверхности приведена на примере Б – сплайн поверхности.
Поверхность Безье
Определение
Поверхность Безье определяется как:
Для задания поверхности требуется:
- (n+1)(m+1) контрольных точек. (Beizer Net, Control Net)
- базовые функции степени m, n: Bim(U), Bjn(V). В этом случае говорят, что поверхность имеет порядок (m,n)
Свойства
1) p(u, v) проходит через угловые контрольные точки: p(0,0), p(1,0), p(0,1), p(1,1)
2) p(u, v) неотрицательна на всей области определения
3)
для всех (u,v) в области определения
4) Для выполнения аффинного преобразования над поверхностью достаточно выполнить аффинное преобразование над контрольными точками
Рисование поверхности
Параметрическая поверхность задаётся как:
Поверхность Безье, как и все тензорные параметрические поверхности имеет простую структуру:
Функция в скобках зависит только от v и от i. Введём дополнительную функцию q:
Тогда функцию p можно представить в виде:
Если зафиксировать v , то получим кривую Безье от u, заданную m+1 контрольными точками. В связи с данными вкладками легко переносится алгоритм Де-Кастельи для вычисления точки поверхности.
Б – сплайн поверхность
Определение
Б-сплайн поверхность определяется как:
Для задания поверхности требуется:
- (n+1)(m+1) контрольных точек.
- Узловой вектор U, размерности h+1
- Узловой вектор V, размерности k+1
- Порядок кривой в направлении U: p
- Порядок кривой в направлении V: q
Также должны быть выполнены два равенства: h = m+p+1 и k = n+q+1
Так как кривая может быть open, closed, clamped, в таком случае поверхность может обладать для каждого направления соответствующим свойством.
Свойства
1) p(u, v) неотрицательна на всей области определения
2)
для всех (u,v) в области определения
3) Для выполнения аффинного преобразования над поверхностью достаточно выполнить аффинное преобразование над контрольными точками
4)
не обращается в ноль только если:
5) Если m=p, n=q, u={0,0,…,0,1,1,…,1} в таком случай б - сплайн поверхность вырождается в поверхность Безье.
NURBS поверхность определяется как:

8 февраля 2011
Категории: графика, математика
Обновление: 23 марта 2011