Поиск
На сайте: 763924 статей, 327749 фото.

Кривая Безье

Кривы́е Безье́ были разработаны в 60-х годах XX века независимо друг от друга Пьером Безье (Bézier) из автомобилестроительной компании «Рено» и Полем де Кастелье (de Casteljau) из компании «Ситроен», где применялись для проектирования кузовов автомобилей.

Несмотря на то, что открытие де Кастелье было сделано несколько ранее Безье (1959), его исследования не публиковались и скрывались компанией как производственная тайна до конца 1960-х.

Впервые кривые были представлены широкой публике в 1962 году французским инженером Пьером Безье, который, разработав их независимо от де Кастелье, использовал их для компьютерного проектирования автомобильных кузовов. Кривые были названы именем Безье, а именем де Кастелье назван разработанный им рекурсивный способ определения кривых (алгоритм де Кастелье).

Впоследствии это открытие стало одним из важнейших инструментов систем автоматизированного проектирования и программ компьютерной графики.

Содержание

Определение

Кривая Безье — параметрическая кривая, задаваемая выражением

<math>\mathbf{B}(t)=\sum^n_{i=0} \mathbf{P}_i \mathbf{b}_{i,n}(t),\quad 0<t<1</math>

где <math>\mathbf{P}_i</math> — функция компонент векторов опорных вершин, а <math>\mathbf{b}_{i,n}(t)</math> — базисные функции кривой Безье, называемые также полиномами Бернштейна.

<math>\mathbf{b}_{i,n}(t)={n \choose i} t^i(1-t)^{n-i}</math>
<math>{n \choose i}=\frac{n!}{i!(n-i)!}</math>, где <math>n</math> — степень полинома, <math>i</math> — порядковый номер опорной вершины

Виды кривых Безье

Линейные кривые

При n = 1 кривая представдяет собой отрезок прямой линии, опорные точки P0 и P1 определяют его начало и конец. Кривая задаётся уравнением:

<math>\mathbf{B}(t)=(1-t)\mathbf{P}_0 + t\mathbf{P}_1 \quad t \in [0,1]</math>.

Квадратные кривые

Квадратная кривая Безье (n = 2) задаётся 3-я опорными точками: P0, P1 и P2.

<math>\mathbf{B}(t) = (1 - t)^{2}\mathbf{P}_0 + 2t(1 - t)\mathbf{P}_1 + t^{2}\mathbf{P}_2, \quad t \in [0,1]</math>.

Квадратные кривые Безье в составе сплайнов используются для описания формы символов в шрифтах TrueType и в SWF файлах.

Кубические кривые

В параметрической форме кубическая кривая Безье (n = 3) описывается следующим уравнением:

<math>\mathbf{B}(t) = (1-t)^3\mathbf{P}_0 + 3t(1-t)^2\mathbf{P}_1 + 3t^2(1-t)\mathbf{P}_2 + t^3\mathbf{P}_3, \quad t \in [0,1]</math>.
Кубическая кривая Безье
Перейти
Кубическая кривая Безье

Четыре опорные точки P0, P1, P2 и P3, заданные в 2-х или 3-мерном пространстве определяют форму кривой.

Линия берёт начало из точки P0 направляясь к P1 и заканчивается в точке P3 подходя к ней со стороны P2. То есть кривая не проходит через точки P1 и P2, они используются для указания её направления. Длина отрезка между P0 и P1 определяет, как скоро кривая кривая повернёт к P3.

В матричной форме кубическая кривая Безье записывается следующим образом:

<math>\mathbf{B}(t) = \begin{bmatrix}t^3&t^2& t& 1\end{bmatrix}\mathbf{M}_B

\begin{bmatrix}\mathbf{P}_0\\\mathbf{P}_1\\\mathbf{P}_2\\\mathbf{P}_3\end{bmatrix}</math>, где <math>\mathbf{M}_B</math> называется базисной матрицей Безье:

<math>\mathbf{M}_B = \begin{bmatrix}-1&3&-3&1\\3&-6&3&0\\-3&3&0&0\\1&0&0&0\end{bmatrix}</math>

В современных графических системах, таких как PostScript, Metafont и GIMP для представления криволинейных форм используются сплайны Безье, составленные из кубических кривых.

Построение кривых Безье

Линейные кривые

Параметр t в функции, описывающей линейный случай кривой Безье, определяет где именно на расстоянии от P0 до P1 находится B(t). Например, при t = 0,25 значение функции B(t) соответствует четверти расстояния между точками P0 и P1. Параметр t изменяется от 0 до 1, а B(t) описывает отрезок прямой между точками P0 to P1.

Квадратные кривые

Для построения квадратных кривых безье требуется выделение двух промежуточных точек Q0 и Q1 из условия чтобы параметр t изменялся от 0 до 1:

  • Точка Q0 изменяется от P0 до P1 и описывает линейную кривую Безье.
  • Точка Q1 изменяется от P1 до P2 и также описывает линейную кривую Безье.
  • Точка B0 изменяется от Q0 до Q1 и описывает квадратную кривую Безье.
Построение квадратной кривой Безье
Построение квадратной кривой Безье
Анимация t: [0; 1]
Анимация t: [0; 1]


Кривые высших степеней

Для построения кривых высших порядков соответственно требуется и больше промежуточных точек. Для кубической кривой это промежуточные точки Q0, Q1 и Q2, описывающие линейные кривые, а также точки R0 и R1, которые описывают квадратные кривые:

Построение кубической кривой Безье
Построение кубической кривой Безье
Анимация t: [0; 1]
Анимация t: [0; 1]


Для кривых четвётой степени это будут точки точки Q0, Q1, Q2 и Q3, описывающие линейные кривые, R0, R1 и R2, которые описывают квадратные кривые, а также точки S0 и S1, описывающие кубические кривые Безье:

Построение кривой Безье 4-й степени
Построение кривой Безье 4-й степени
Анимация t: [0; 1]
Анимация t: [0; 1]


Применение в компьютерной графике

Благодаря простоте задания и возможности удобно манипулировать формой, кривые Безье нашли широкое применение в компьютерной графике для моделирования гладких линий. Поскольку кривая полностью определяется своей выпуклой оболочкой из опорных точек, последние могут быть отображены и использоваться для наглядного управления формой линии. Кроме того аффинные преобразования кривой (перенос, масштабирование, вращение) также легко могут быть осуществлены путём применения трансформаций к опорным точкам. Наличие выпуклой оболочки значительно облегчает задачу о точеках пересечения кривых Безье: если не пересекаются выпуклые оболочки, то не пересекаются и сами кривые.

Наибольшее значение имеют кубические кривые Безье. Кривые высших степеней при обработке требуют большего объёма вычислений и для практических целей используются реже. Для построения сложных по форме линий отдельные кривые Безье могут быть последовательно соединены друг с другом в сплайн Безье. Для того, чтобы обеспечить гладкость линии в месте соединения двух кривых, смежные опорные точки обеих кривых должны лежать на одной линии. В программах векторной графики наподобие Adobe Illustrator или Inkscape подобные фрагменты известны под названием «путей» (path).

Литература

  • Роджерс Д., Адамс Дж. Математические основы машинной графики. — М.: Мир, 2001.

Первоначальная версия этой статьи была взята из русской Википедии на условиях лицензии GNU FDL.