Московский государственный университет имени М.В.Ломоносова
Опубликован: 23.04.2007 | Доступ: свободный | Студентов: 3275 / 437 | Оценка: 4.18 / 3.71 | Длительность: 17:54:00
ISBN: 978-5-9556-0098-7
Специальности: Программист
Лекция 4:

Параметрические кривые и их растеризация

< Лекция 3 || Лекция 4: 12345 || Лекция 5 >

4.2. Аппроксимация

Кривые Безье

В настоящее время для задач аппроксимации широко применяются кривые Безье (B'ezier) [14]. Это связано с их удобством как для аналитического описания, так и для наглядного геометрического построения (применительно к компьютерной графике это означает, что пользователь может задавать форму кривой интерактивно, т.е. двигая опорные точки курсором на экране).

Наглядный метод построения этих кривых был предложен де Кастелье (de Casteljau) в 1959 году [26]. Метод де Кастелье основан на разбиении отрезков, соединяющих исходные точки в отношении t (значение параметра), а затем в рекурсивном повторении этого процесса для полученных отрезков:

P_i^j(t) = (1 - t)P_i^{j-1}(t) + tP_{i+1}^{j-1}(t). ( 4.1)

Нижний индекс - номер точки, верхний индекс - уровень разбиения. Уравнение кривой n -ого порядка задается P(t) := P_0^n(t).

Для примера построим кривую c 3 опорными точками (иногда они также называются контрольными ) (см. рис. 4.2).


Кривая Безье с тремя опорными точками.

Рис. 4.2. Кривая Безье с тремя опорными точками.

Обозначим опорные точки как P_i, i \in \overline{0, 2}, начало кривой положим в точке P_0 (t = 0), а конец - в точке P_2 (t = 1) ; для каждого t \in [0, 1] найдем точку P_0^2(t):

P_0^1(t) = (1 - t)P_0 + tP_1, \\
P_1^1(t) = (1 - t)P_1 + tP_2, \\
P_0^2(t) = (1 - t)P_0^1(t) + tP_1^1(t) =  \\
= {(1 - t)}^2P_0(t) + 2t(1 - t)P_1(t) + t^2P_2(t),

таким образом, получим кривую второго порядка.

Теперь построим аналогичным методом кривую Безье с четырьмя опорными точками:

P_0^1 (t) = (1 - t)P_0 + tP_1,  \\
P_1^1(t) = (1 - t)P_1 + tP_2,  \\
P_2^1(t) = (1 - t)P_2 + tP_3,
Кривая Безье с четырьмя опорными точками

Рис. 4.3. Кривая Безье с четырьмя опорными точками
P_0^2(t) = (1 - t)P_0^1(t) + tP_1^1(t) =  \\
= {(1 - t)}^2P_0 + 2t(1 - t)P_1 + t^2P_2,  \\
P_1^2(t) = (1 - t)P_1^1(t) + tP_2^1(t) =  \\
= {(1 - t)}^2P_1 + 2t(1 - t)P_2 + t^2P_3,  \\
P_0^3(t) = (1 - t)P_0^2(t) + tP_1^2(t) =  \\
= {(1 - t)}^2P_0^1(t) + 2t(1 - t)P_1^1 (t) + t^2P_2^1(t) = \\
={(1 - t)}^3P_0 + 3t{(1 - t)}^2P_1 + 3t^2(1 - t)P_2 + t^3P_3.

Запишем общее аналитическое представление для кривой Безье с N + 1 опорной точкой:

P^N(t) =\sum\limits_{i=0}^{N}B_i ^N(t) \cdot P_i, \mbox{  где} ( 4.2)
B_i ^N(t) = C_i ^N \cdot t^i(1- t)^{N-i},  \mbox{  где}
C_i ^N =\frac{N!}{i!(N - i)!} \mbox{  -  биномиальные коэффициенты.}

B_i ^N(t) называются базисными многочленами Бернштейна N - й степени (а также весовыми функциями Безье-Бернштейна). На рис. 4.4 и 4.5 изображены многочлены Бернштейна 3-й и 4-й степеней.

Базисные функции Бернштейна 3-й степени

Рис. 4.4. Базисные функции Бернштейна 3-й степени
Базисные функции Бернштейна 4-й степени

Рис. 4.5. Базисные функции Бернштейна 4-й степени
Свойства кривых Безье
  1. Инвариантность относительно аффинных преобразований.
  2. Инвариантность относительно линейных замен параметризации
    t = \frac{x-a}{b-a}.

  3. Кривая Безье принадлежит выпуклой оболочке опорных точек (следует из геометрического способа построения).

    Следствие. Если все опорные точки лежат на одной прямой, то кривая Безье вырождается в отрезок, соединяющий эти точки.

  4. Кривая Безье проходит через P0 и PN.
  5. Симметричность: если рассматривать контрольные точки в противоположном порядке, то кривая не изменится.
  6. Степень многочлена, представляющего кривую в аналитическом виде, на 1 меньше числа опорных точек.
  7. Касательные в точках P0 и PN коллинеарны \overrightarrow{P_0P_1} и \overrightarrow{P_{N-1}P_N}, соответственно.

Замечание. Хотя все выкладки проводились в \mathbb{R}^2, аналогичные построения и свойства справедливы и в \mathbb{R}^n.

< Лекция 3 || Лекция 4: 12345 || Лекция 5 >