Войти
ПрограммированиеСтатьиГрафика

B Spline curves and Beizer curves

Внимание! Этот документ ещё не опубликован.

Автор:

В этой статье хотел написать всё, что мне известно о кривых и поверхностях типа B-Spline. Доказательства опущены.

В статье затрагиваются определение и свойства следующих вещей:

Полином Бернштейна

Полином Бернштейна

Полином Бернштейна определяется  в виде:

. Если посмотреть внимательно на этот полином, то можно увидеть, что он является ничем иным как  k-ым членом разложения полином Ньютона с коэффициентами a=t, b=1-t.

Из этого следует, что для всех чисел :


Сплайны

Кривая Безье

Определение

Не рациональная кривая Безье задаётся как:

Здесь:

Рациональная кривая Безье задаётся видом:
Здесь фигурируют теже коэффициенты, что и для не рациональной кривой и добавляется один коэффициент:


Свойтсва не рациональной кривой Безье:

Б-Сплайн (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)


Виды Б-сплайнов

Замечание: Нет устоявшейся терминологии и разные авторы обозначают введённые понятия по разному. А также придают кривым типа 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) <img src = "http://www.gamedev.ru/files/images/63548_1296578193_image075.gif" /> для любого 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.
То: , где правая часть равенства является базовой функцией кривой Безье.

Преимущества и недостатки использования Б - сплайна


Б-сплайн кривые требуют больше описания и их теория горазда сложнее, чем теория кривых Безье. Однако они обладают большими преимуществами по сравнению с последними:

#графика, #математика

8 февраля 2011 (Обновление: 23 мар 2011)

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

здесь