Открыть сервис

Кривая Безье

Кривая Безье — это параметрическая кривая, задаваемая набором опорных (контрольных) точек, которая является частным случаем кривых Бернштейна. Кривые Безье широко используются в компьютерной графике, системах автоматизированного проектирования (САПР), шрифтовых технологиях и анимации для построения гладких линий и поверхностей. Основное свойство кривой Безье — она всегда проходит через первую и последнюю опорные точки, а её форма определяется положением промежуточных точек, которые «притягивают» кривую, но не обязательно лежат на ней.

История

Кривые Безье были независимо разработаны в начале 1960-х годов двумя инженерами: французом Пьером Безье (Pierre Bézier) из компании Renault и американцем Полем де Кастельжо (Paul de Casteljau) из компании Citroën. Безье использовал эти кривые для проектирования кузовов автомобилей, а де Кастельжо разработал рекурсивный алгоритм (алгоритм де Кастельжо) для их вычисления, который остаётся основным методом построения кривых Безье.

Первоначально кривые Безье были описаны в математической литературе как частный случай кривых Бернштейна, предложенных Сергеем Бернштейном в 1912 году в контексте теории приближений. Однако именно Безье и де Кастельжо адаптировали их для практического применения в инженерном деле. В 1970-х годах кривые Безье стали стандартом в компьютерной графике, в частности, в системах Adobe PostScript (1982) и TrueType (1989), где используются квадратичные кривые Безье для описания контуров символов.

Математическое определение

Кривая Безье степени \( n \) задаётся \( n+1 \) опорной точкой \( P_0, P_1, \ldots, P_n \) и параметром \( t \in [0, 1] \). Параметрическое уравнение имеет вид:

\[ B(t) = \sum_{i=0}^{n} \binom{n}{i} (1-t)^{n-i} t^i P_i, \]

где \( \binom{n}{i} \) — биномиальный коэффициент, а \( P_i \) — координаты опорных точек (в двумерном или трёхмерном пространстве). Функции \( B_{i,n}(t) = \binom{n}{i} (1-t)^{n-i} t^i \) называются базисными полиномами Бернштейна.

Свойства

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

Кривые Безье классифицируются по числу опорных точек (степени):

Линейная кривая (степень 1)

Задаётся двумя точками \( P_0 \) и \( P_1 \). Уравнение: \( B(t) = (1-t)P_0 + tP_1 \). Фактически это отрезок прямой линии между двумя точками.

Квадратичная кривая (степень 2)

Задаётся тремя точками \( P_0, P_1, P_2 \). Уравнение: \( B(t) = (1-t)^2 P_0 + 2(1-t)t P_1 + t^2 P_2 \). Используется в шрифтах TrueType и в векторных редакторах (например, в Adobe Illustrator для построения кривых с помощью инструмента «Перо»).

Кубическая кривая (степень 3)

Задаётся четырьмя точками \( P_0, P_1, P_2, P_3 \). Уравнение: \( B(t) = (1-t)^3 P_0 + 3(1-t)^2 t P_1 + 3(1-t) t^2 P_2 + t^3 P_3 \). Это наиболее распространённый тип кривых Безье, используемый в формате PostScript, в графических редакторах (например, в Adobe Photoshop, Inkscape) и в 3D-моделировании (NURBS-поверхности).

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

Кривые степени 4 и выше (с 5 и более опорными точками) используются реже из-за их глобального поведения — изменение одной точки влияет на всю кривую. На практике для сложных форм предпочитают составлять кривые из сегментов кубических кривых (сплайнов).

Алгоритм де Кастельжо

Основной метод вычисления точки на кривой Безье — рекурсивный алгоритм де Кастельжо. Для кривой степени \( n \) с опорными точками \( P_0, \ldots, P_n \) и параметром \( t \):

  1. Для \( i = 0, \ldots, n-1 \) вычисляются промежуточные точки: \( P_i^{(1)} = (1-t) P_i + t P_{i+1} \).
  2. Повторяется для полученного набора точек до тех пор, пока не останется одна точка — это и есть \( B(t) \).

Алгоритм де Кастельжо также позволяет геометрически интерпретировать кривую как последовательность линейных интерполяций. Он численно устойчив и используется в компьютерных программах.

Применение

Компьютерная графика и дизайн

Кривые Безье являются основой векторной графики. В программах Adobe Illustrator, CorelDRAW, Inkscape они используются для создания контуров, логотипов, иллюстраций. В форматах SVG, EPS, PDF кривые Безье описывают геометрию фигур.

Шрифтовые технологии

В шрифтах TrueType применяются квадратичные кривые Безье, а в PostScript и OpenType — кубические. Контуры глифов (букв, цифр, символов) задаются наборами сегментов кривых Безье, что обеспечивает масштабируемость без потери качества.

Анимация и интерполяция

В анимации кривые Безье используются для задания траекторий движения объектов (например, в Adobe After Effects, Unity). Параметр \( t \) интерпретируется как время, а кривая задаёт положение объекта в пространстве.

3D-моделирование

Поверхности Безье (билинейные, бикубические) строятся как тензорное произведение кривых Безье. Они применяются в САПР (например, CATIA, SolidWorks) для моделирования кузовов автомобилей, корпусов самолётов, промышленных изделий. В компьютерной графике (Blender, 3ds Max) поверхности Безье используются для создания органических форм.

Робототехника и управление

Кривые Безье применяются для планирования траекторий движения роботов и станков с ЧПУ. Благодаря свойству выпуклой оболочки, кривая гарантирует, что робот не выйдет за пределы заданного пространства.

Связь с другими кривыми

Интересные факты

Критика и ограничения

Основной недостаток кривых Безье — глобальный характер изменения формы: перемещение одной опорной точки влияет на всю кривую. Для сложных форм это приводит к необходимости использовать большое количество сегментов, что увеличивает вычислительную сложность. Кроме того, кривые Безье не позволяют точно описывать конические сечения (окружности, эллипсы) без использования рациональных версий. В современных системах предпочитают NURBS или B-сплайны, которые лишены этих недостатков.

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →