Крива Без'є

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук
Кубічна крива Без'є

Крива Без'є — параметрично задана крива, затребувана в комп'ютерній графіці та суміжних областях. Узагальнення кривих Без'є на вищі розмірності називаються поверхнями Без'є, якою є трикутник Без'є в окремому випадку.

У векторній графіці, криві Без'є використовуються для моделювання гладких кривих, які можна масштабувати до нескінченності. «Шляхи», як їх зазвичай називають у програмах для роботи з зображеннями,[note 1] є комбінаціями з'єднаних кривих Без'є. Шляхи не обмежуються розмірами растрових зображень і їх редагування є інтуїтивно зрозумілим. Криві Без'є також використовуються в анімації, як інструмент для управління рухом,[note 2] та в системах автоматизованого проектування.

Криві Без'є́ були запроваджені в 1962 році П'єром Без'є з автомобілебудівної компанії «Рено», хоча ще в 1959 році використовувались Полем де Кастельє з компанії «Сітроен», але його дослідження не публікувались і приховувались компанією як комерційна таємниця до кінця 1960-х.

Іменем де Кастельє названо його рекурсивний спосіб визначення кривих (алгоритм де Кастельє).

Визначення[ред.ред. код]

Кубічна крива Без'є

Крива Без'є — параметрична крива, вигляду

\mathbf{B}(t)=\sum^n_{i=0} \mathbf{b}_{i,n}(t) \mathbf{P}_i,\qquad t\in[0,1]

де

\mathbf{P}_i — опорні вершини,
\mathbf{b}_{i,n}(t)={n \choose i} t^i(1-t)^{n-i} — поліноми Бернштейна, вони є базисними функціями кривої Без'є.

Також існує рекурсивна формула побудови кривих Без'є

\mathbf{B_{P_0 P_1 \ldots P_n}}(t) = (1-t)\mathbf{B_{P_0 P_1 \ldots P_{n-1}}}(t) + t\mathbf{B_{P_1 P_2 \ldots P_n}}(t).

Види кривих Без'є[ред.ред. код]

Лінійні криві Без'є[ред.ред. код]

Bezier linear anim.gif

При n = 1 крива є відрізком від точки P0 до точки P1 (лінійна інтерполяція). Крива задається як:

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

Квадратичні криві Без'є[ред.ред. код]

Bezier quadratic anim.gif

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

\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].

Сплайни з квадратичних кривих Без'є використовуються для описування форми символів в шрифтах TrueType.


Кубічні криві Без'є[ред.ред. код]

Bezier cubic anim.gif

Чотири опорні точки P0, P1, P2 та P3, задані в 2-х чи 3-мірному просторі визначають форму кривої:

Лінія починається в точці P0 направляється до P1 і закінчується в точці P3 підходячи до неї з боку точки P2. Тобто крива не проходить через точки P1 та P2, вони використовуються для напрямку руху.

\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].

В матричній формі кубічна крива Без'є записується як:

\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}, де \mathbf{M}_B = \begin{bmatrix}-1&3&-3&1\\3&-6&3&0\\-3&3&0&0\\1&0&0&0\end{bmatrix} — називається базисною матрицею Без'є.

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

Застосування в комп'ютерній графіці[ред.ред. код]

Завдяки простоті завдання і виконанню операцій, криві Без'є знайшли широке застосування в комп'ютерній графіці для моделювання гладких ліній. Крива цілком лежить в опуклій оболонці своїх опорних точок. Ця властивість кривих Без'є з одного боку значно полегшує завдання знаходження точок перетину кривих (якщо не перетинаються опуклі оболонки опорних точок, то не перетинаються і самі криві), а з іншого боку дозволяє здійснювати інтуїтивно зрозуміле управління параметрами кривої в графічному інтерфейсі за допомогою її опорних точок. Крім того, афінні перетворення кривої (перенесення, масштабування, обертання та ін.) також можуть бути виконані через застосування відповідних перетворень до опорних точок.

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

Література[ред.ред. код]

  • Роджерс Д., Адамс Дж. (2001). Математические основы машинной графики (вид. друге). Москва: Мир. с. 604 с. ISBN 5-03-002143-4. 

Див. також[ред.ред. код]

Примітки[ред.ред. код]

  1. Програми для роботи з зображеннями такі як Inkscape, Adobe Photoshop, and GIMP.
  2. Програми для роботи з анімацією такі як Adobe Flash, Adobe After Effects, Microsoft Expression Blend, Blender, Autodesk Maya та Autodesk 3ds max.