Кривая Безье
Кривая Безье — это параметрическая кривая, задаваемая набором опорных (контрольных) точек, которая является частным случаем кривых Бернштейна. Кривые Безье широко используются в компьютерной графике, системах автоматизированного проектирования (САПР), шрифтовых технологиях и анимации для построения гладких линий и поверхностей. Основное свойство кривой Безье — она всегда проходит через первую и последнюю опорные точки, а её форма определяется положением промежуточных точек, которые «притягивают» кривую, но не обязательно лежат на ней.
История
Кривые Безье были независимо разработаны в начале 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 \) называются базисными полиномами Бернштейна.
Свойства
- Интерполяция концов: кривая проходит через первую (\( P_0 \)) и последнюю (\( P_n \)) точки. При \( t=0 \) \( B(0)=P_0 \), при \( t=1 \) \( B(1)=P_n \).
- Выпуклая оболочка: вся кривая лежит внутри выпуклой оболочки своих опорных точек (многоугольника, образованного этими точками).
- Линейная инвариантность: при аффинных преобразованиях (сдвиг, поворот, масштабирование) кривая преобразуется как целое, и её форма сохраняется.
- Степень: кривая степени \( n \) является полиномом степени \( n \) по \( t \). С увеличением степени кривая становится более «гладкой», но менее локальной — изменение одной опорной точки влияет на всю кривую.
Виды кривых Безье
Кривые Безье классифицируются по числу опорных точек (степени):
Линейная кривая (степень 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 \):
- Для \( i = 0, \ldots, n-1 \) вычисляются промежуточные точки: \( P_i^{(1)} = (1-t) P_i + t P_{i+1} \).
- Повторяется для полученного набора точек до тех пор, пока не останется одна точка — это и есть \( B(t) \).
Алгоритм де Кастельжо также позволяет геометрически интерпретировать кривую как последовательность линейных интерполяций. Он численно устойчив и используется в компьютерных программах.
Применение
Компьютерная графика и дизайн
Кривые Безье являются основой векторной графики. В программах Adobe Illustrator, CorelDRAW, Inkscape они используются для создания контуров, логотипов, иллюстраций. В форматах SVG, EPS, PDF кривые Безье описывают геометрию фигур.
Шрифтовые технологии
В шрифтах TrueType применяются квадратичные кривые Безье, а в PostScript и OpenType — кубические. Контуры глифов (букв, цифр, символов) задаются наборами сегментов кривых Безье, что обеспечивает масштабируемость без потери качества.
Анимация и интерполяция
В анимации кривые Безье используются для задания траекторий движения объектов (например, в Adobe After Effects, Unity). Параметр \( t \) интерпретируется как время, а кривая задаёт положение объекта в пространстве.
3D-моделирование
Поверхности Безье (билинейные, бикубические) строятся как тензорное произведение кривых Безье. Они применяются в САПР (например, CATIA, SolidWorks) для моделирования кузовов автомобилей, корпусов самолётов, промышленных изделий. В компьютерной графике (Blender, 3ds Max) поверхности Безье используются для создания органических форм.
Робототехника и управление
Кривые Безье применяются для планирования траекторий движения роботов и станков с ЧПУ. Благодаря свойству выпуклой оболочки, кривая гарантирует, что робот не выйдет за пределы заданного пространства.
Связь с другими кривыми
- B-сплайны: являются обобщением кривых Безье. В отличие от кривых Безье, B-сплайны позволяют локально изменять форму, не затрагивая всю кривую.
- Рациональные кривые Безье: добавляют весовые коэффициенты к опорным точкам, что позволяет точно описывать конические сечения (окружности, эллипсы).
- NURBS (Non-Uniform Rational B-Splines): комбинируют свойства B-сплайнов и рациональных кривых, обеспечивая максимальную гибкость в моделировании.
Интересные факты
- Пьер Безье разработал свою систему UNISURF в 1960-х годах, которая стала одной из первых коммерческих САПР. Она использовалась для проектирования кузовов автомобилей Renault.
- Алгоритм де Кастельжо был опубликован в 1959 году, но оставался малоизвестным до 1970-х годов, пока его не популяризировал американский математик Уильям Бём.
- В шрифтах TrueType для описания контуров используются квадратичные кривые Безье, что делает файлы шрифтов более компактными, чем в PostScript (где применяются кубические кривые).
- Кривые Безье используются в программировании для создания плавных анимаций CSS (функции
cubic-bezier()).
Критика и ограничения
Основной недостаток кривых Безье — глобальный характер изменения формы: перемещение одной опорной точки влияет на всю кривую. Для сложных форм это приводит к необходимости использовать большое количество сегментов, что увеличивает вычислительную сложность. Кроме того, кривые Безье не позволяют точно описывать конические сечения (окружности, эллипсы) без использования рациональных версий. В современных системах предпочитают NURBS или B-сплайны, которые лишены этих недостатков.
Источники
- Bézier, Pierre. The Mathematical Basis of the UNISURF CAD System. Butterworth-Heinemann, 1986.
- de Casteljau, Paul. Courbes et surfaces à pôles. 1959.
- Farin, Gerald. Curves and Surfaces for CAGD: A Practical Guide. 5th ed., Morgan Kaufmann, 2002.
- Rogers, David F. An Introduction to NURBS: With Historical Perspective. Morgan Kaufmann, 2001.
- Foley, James D., et al. Computer Graphics: Principles and Practice. 2nd ed., Addison-Wesley, 1995.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →