Крива Безьє

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

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

У векторній графіці, криві Безьє використовуються для моделювання гладких кривих, які можна масштабувати до нескінченності. «Шляхи», як їх зазвичай називають у програмах для роботи з зображеннями,[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.