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

Безье

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

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

Кривая Безье задаётся набором контрольных точек. Степень кривой на единицу меньше количества контрольных точек. Формально, кривая Безье степени \( n \) определяется как:

\[ \mathbf{B}(t) = \sum_{i=0}^{n} \binom{n}{i} (1-t)^{n-i} t^{i} \mathbf{P}_i, \quad t \in [0, 1] \]

где:

  • \(\mathbf{P}_i\) — контрольные точки (векторы в пространстве),
  • \(\binom{n}{i}\) — биномиальный коэффициент,
  • \(t\) — параметр, изменяющийся от 0 до 1.

Кривая всегда проходит через первую и последнюю контрольные точки (\(\mathbf{P}_0\) и \(\mathbf{P}_n\)), а промежуточные точки задают направление и кривизну, но обычно не лежат на самой кривой.

Свойства кривых Безье

  • Инвариантность к аффинным преобразованиям: кривая сохраняет форму при переносе, масштабировании, повороте и отражении контрольных точек.
  • Выпуклая оболочка: кривая целиком лежит внутри выпуклой оболочки своих контрольных точек, что упрощает контроль формы.
  • Касательные: касательная к кривой в начальной точке совпадает с отрезком \(\mathbf{P}_0\mathbf{P}_1\), а в конечной — с отрезком \(\mathbf{P}_{n-1}\mathbf{P}_n\).
  • Вариация убывания: кривая пересекает любую прямую не чаще, чем её ломаная контрольных точек.

Классификация

По степени

  • Линейная кривая Безье (степень 1, две точки): представляет собой отрезок прямой. Формула: \(\mathbf{B}(t) = (1-t)\mathbf{P}_0 + t\mathbf{P}_1\).
  • Квадратичная кривая Безье (степень 2, три точки): парабола. Широко используется в шрифтах TrueType и в графических редакторах для простых кривых.
  • Кубическая кривая Безье (степень 3, четыре точки): наиболее распространённый тип. Позволяет создавать S-образные изгибы и точки перегиба. Используется в PostScript, PDF, SVG, шрифтах OpenType (CFF) и в большинстве профессиональных векторных редакторов (Adobe Illustrator, CorelDRAW, Figma).
  • Кривые высших степеней (4 и более): применяются реже из-за сложности управления и численной нестабильности. Вместо них предпочитают составлять составные кривые из кубических сегментов.

По типу

  • Рациональные кривые Безье: каждая контрольная точка имеет вес, что позволяет точно описывать конические сечения (окружности, эллипсы, гиперболы). Частным случаем являются NURBS (неравномерные рациональные B-сплайны).
  • Составные кривые Безье: последовательность кривых Безье, соединённых с обеспечением гладкости (непрерывность \(C^0\), \(C^1\) или \(C^2\)).

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

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

  1. Для заданного \(t\) между соседними контрольными точками вычисляются промежуточные точки: \(\mathbf{P}_{i}^{(1)} = (1-t)\mathbf{P}_i + t\mathbf{P}_{i+1}\).
  2. Процесс повторяется, пока не останется одна точка — искомая точка на кривой.

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

Применение

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

Кривые Безье являются основой векторной графики. В редакторах (Adobe Illustrator, Inkscape, Sketch) пользователи управляют кривыми через «якорные точки» и «ручки» (касательные). В веб-стандартах (SVG, CSS, Canvas) кривые Безье используются для анимации, путей обводки и трансформаций.

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

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

САПР и промышленный дизайн

В системах автоматизированного проектирования (CATIA, SolidWorks, AutoCAD) кривые Безье и их обобщения (NURBS) применяются для моделирования поверхностей кузовов автомобилей, корпусов самолётов, корпусов бытовой техники и архитектурных форм.

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

В CSS и JavaScript кривые Безье используются для описания функций сглаживания (easing functions). Например, cubic-bezier(0.25, 0.1, 0.25, 1.0) задаёт скорость анимации. В программах для анимации (Adobe After Effects, Blender) кривые Безье управляют движением объектов во времени.

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

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

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

Поверхность Безье — это двумерное обобщение кривой, задаваемое сеткой контрольных точек \(\mathbf{P}_{i,j}\):

\[ \mathbf{S}(u,v) = \sum_{i=0}^{m} \sum_{j=0}^{n} \binom{m}{i} \binom{n}{j} (1-u)^{m-i} u^{i} (1-v)^{n-j} v^{j} \mathbf{P}_{i,j}, \quad u,v \in [0, 1] \]

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

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

  • Глобальный контроль: изменение одной контрольной точки влияет на всю кривую, что затрудняет локальную правку.
  • Сложность высоких степеней: при большом числе контрольных точек кривая становится менее стабильной и более чувствительной к шуму.
  • Невозможность точного описания окружности: кубическая кривая Безье может только аппроксимировать окружность (с погрешностью около 0,03% при оптимальном расположении точек). Для точного представления необходимы рациональные кривые.
  • Численная нестабильность: при очень большом числе точек алгоритм де Кастельжо может накапливать ошибки округления.

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

  • Пьер Безье работал в Renault, а Поль де Кастельжо — в Citroën. Оба разработали свои методы независимо, но приоритет де Кастельжо (1959 год) был признан позже.
  • Кривые Безье используются в стандарте OpenVG для аппаратного ускорения векторной графики.
  • В 1980-х годах Adobe включила кривые Безье в язык PostScript, что стало революцией в издательском деле.
  • В компьютерных играх кривые Безье применяются для создания плавных траекторий камеры и движения объектов.

Источники

  • Farin, G. (2002). Curves and Surfaces for CAGD: A Practical Guide. Morgan Kaufmann.
  • Piegl, L., & Tiller, W. (1997). The NURBS Book. Springer.
  • Bézier, P. (1972). Numerical Control: Mathematics and Applications. Wiley.
  • Де Кастельжо, П. (1959). Courbes et surfaces à pôles. Citroën.
  • Документация W3C по SVG и CSS (раздел «cubic-bezier»).

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

На главную BFOmetr →