Кубическая кривая Безье
Кубическая кривая Безье — это параметрическая кривая третьего порядка, определяемая четырьмя контрольными точками (P0, P1, P2, P3). Она является частным случаем кривой Безье общего вида и широко применяется в компьютерной графике, системах автоматизированного проектирования (САПР), шрифтовых технологиях и анимации для построения гладких, непрерывных линий и поверхностей.
История
Кривые Безье были разработаны в 1960-х годах французским инженером Пьером Безье (Pierre Bézier), работавшим в компании Renault. Он искал способ математического описания плавных кривых для проектирования кузовов автомобилей, который был бы удобен для инженеров и дизайнеров. Параллельно аналогичные математические принципы разрабатывал Поль де Кастельжо (Paul de Casteljau) из компании Citroën, однако его работа долгое время оставалась неопубликованной. Кривые третьего порядка (кубические) стали наиболее популярными благодаря балансу между вычислительной сложностью и гибкостью формы.
Математическое определение
Кубическая кривая Безье задаётся параметрическим уравнением, где параметр \( t \) изменяется от 0 до 1:
\[ 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, \quad t \in [0, 1] \]
Здесь \( P_0, P_1, P_2, P_3 \) — векторы контрольных точек в двумерном или трёхмерном пространстве. Кривая проходит через первую (\( P_0 \)) и последнюю (\( P_3 \)) точки, а промежуточные точки \( P_1 \) и \( P_2 \) определяют её форму, но не лежат на ней (за исключением вырожденных случаев).
Свойства
- Интерполяция концов: кривая начинается в \( P_0 \) и заканчивается в \( P_3 \).
- Касательные: касательная в начальной точке направлена от \( P_0 \) к \( P_1 \), а в конечной — от \( P_2 \) к \( P_3 \).
- Выпуклая оболочка: вся кривая лежит внутри выпуклой оболочки четырёх контрольных точек.
- Инвариантность к аффинным преобразованиям: при переносе, повороте или масштабировании контрольных точек кривая преобразуется аналогично.
- Неизменность при изменении параметризации: форма кривой не зависит от скорости изменения параметра \( t \).
Алгоритм де Кастельжо
Для вычисления точек на кубической кривой Безье часто используется рекурсивный алгоритм де Кастельжо. Он основан на линейной интерполяции между контрольными точками:
- На отрезках \( P_0P_1 \), \( P_1P_2 \), \( P_2P_3 \) находятся точки \( Q_0, Q_1, Q_2 \) при заданном \( t \):
\[ Q_0 = (1-t)P_0 + tP_1, \quad Q_1 = (1-t)P_1 + tP_2, \quad Q_2 = (1-t)P_2 + tP_3 \]
- На отрезках \( Q_0Q_1 \) и \( Q_1Q_2 \) находятся точки \( R_0 \) и \( R_1 \):
\[ R_0 = (1-t)Q_0 + tQ_1, \quad R_1 = (1-t)Q_1 + tQ_2 \]
- Искомая точка на кривой \( B(t) \) находится на отрезке \( R_0R_1 \):
\[ B(t) = (1-t)R_0 + tR_1 \]
Этот алгоритм устойчив и удобен для программной реализации.
Применение
Компьютерная графика и дизайн
Кубические кривые Безье являются основой для построения более сложных кривых — сплайнов Безье. В векторных графических редакторах (например, Adobe Illustrator, Inkscape, CorelDRAW) они используются для создания контуров и фигур. Каждый сегмент кривой задаётся двумя опорными точками (концами) и двумя управляющими точками, определяющими изгиб.
Шрифтовые технологии
В форматах шрифтов TrueType и OpenType кубические кривые Безье применяются для описания контуров глифов. В отличие от квадратичных кривых Безье, используемых в формате TrueType, кубические обеспечивают большую точность при меньшем количестве точек, что особенно важно для сложных шрифтов.
Анимация
В CSS и JavaScript кубические кривые Безье используются для задания функций сглаживания (easing functions). Например, стандартная функция cubic-bezier() в CSS позволяет контролировать скорость анимации между начальным и конечным состояниями. Параметры кривой задаются двумя управляющими точками, что даёт широкий диапазон эффектов — от плавного ускорения до упругих колебаний.
Робототехника и управление движением
Кубические кривые применяются для планирования траекторий движения роботов и станков с ЧПУ. Они обеспечивают непрерывность скорости и ускорения (C²-гладкость), что снижает износ механизмов и повышает точность обработки.
Сравнение с другими кривыми
| Тип кривой | Порядок | Контрольные точки | Свойства |
|---|---|---|---|
| Линейная (Безье 1-го порядка) | 1 | 2 | Прямая линия |
| Квадратичная (Безье 2-го порядка) | 2 | 3 | Парабола, C¹-гладкость |
| Кубическая (Безье 3-го порядка) | 3 | 4 | C²-гладкость, гибкость формы |
| B-сплайн | Зависит от порядка | Переменное число | Локальное управление, гладкость |
Кубические кривые Безье являются компромиссом: они сложнее квадратичных, но позволяют создавать более сложные формы без увеличения числа сегментов. В отличие от B-сплайнов, они не обладают свойством локального управления (изменение одной контрольной точки влияет на всю кривую), но проще в вычислении и понимании.
Интересные факты
- Кривая Безье третьего порядка может быть представлена как линейная комбинация базисных полиномов Бернштейна третьей степени.
- В компьютерной графике кубические кривые часто объединяют в составные кривые (сплайны), обеспечивая гладкое сопряжение (C¹ или C²) на стыках.
- Существует обобщение — рациональная кубическая кривая Безье, которая позволяет точно описывать конические сечения (окружности, эллипсы) за счёт весовых коэффициентов.
Источники
- Bézier, Pierre. «Numerical Control: Mathematics and Applications». John Wiley & Sons, 1972.
- Farin, Gerald. «Curves and Surfaces for CAGD: A Practical Guide». 5th edition, Morgan Kaufmann, 2002.
- Foley, James D. et al. «Computer Graphics: Principles and Practice». 2nd edition, Addison-Wesley, 1995.
- Документация W3C по CSS-функции
cubic-bezier().
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →