Кривые Безье в этой визуализации
Кривая Безье степени n задаётся n + 1 контрольными точками : две точки дают отрезок, три — квадратичную кривую, четыре — кубическую, знакомую по графическим редакторам. Её точка , красная на рисунке, получается, если раз за разом брать долю t вдоль каждой стороны контрольного многоугольника. Здесь можно двигать точки, проводить t от 0 до 1 и смотреть, как отрезки построения оставляют нити, обрисовывающие кривую.
Построение показывает многоугольники всех уровней при текущем t; на каждом уровне на одну сторону меньше, чем на предыдущем. Провести меняет t от 0 до 1, оставляя нити построения через равные шаги t и окрашивая их по t. Сама кривая — тонкая линия.
В формулах построение превращается в лестницу взвешенных средних — алгоритм де Кастельжо:
Если раскрыть последовательные уровни, коэффициент при каждой контрольной точке станет суммой произведений из n множителей, каждый из которых равен 1 − t или t. Для каждое произведение содержит ровно i множителей t, а всего таких произведений , поэтому
Эти веса — полиномы Бернштейна, показанные на маленьком графике. При они неотрицательны и в сумме дают 1, поэтому — взвешенное среднее точек, а кривая не выходит из их выпуклой оболочки. Сдвиг одной точки на вектор Δ сдвигает каждую точку кривой на , сильнее всего вблизи . Эта часть кривой не всегда ближе всего к контрольной точке.
При t = 0 каждый уровень начинается в , поэтому ; аналогично, . Кривая проходит через оба конца и обычно не проходит через остальные точки. Последний уровень построения — один отрезок. Если он не стягивается в точку, то лежит на касательной к кривой:
Значит, кривая выходит из в направлении и приходит в со стороны , если только две точки у соответствующего конца не совпадают. Поэтому графический редактор показывает средние точки кубической кривой как управляющие ручки, выступающие из её концов.
Каждая нить последнего уровня, не стянувшаяся в точку, касается кривой в лежащей на ней точке построения. Нить уровнем ниже так же касается кривой, заданной меньшим числом соседних точек. Поэтому каждое семейство нитей обрисовывает свою кривую, а внутри многоугольника видны кривые меньшей степени. Обрисовать — не значит обернуть с одной стороны: в точке перегиба кривая пересекает собственную касательную, и нити лежат по обе стороны. Если три контрольные точки не лежат на одной прямой, нити квадратичной кривой соответствуют нитяной графике между двумя прямыми рядами гвоздей, а обрисованная ими кривая — парабола.
Построение при t = s также разрезает кривую на две части. Первые точки его уровней — контрольные точки участка от 0 до s, а последние — участка от s до 1. Разбить показывает эти две группы. При многократном делении пополам многоугольники участков приближаются к кривой. Повысить степень действует в обратном направлении: на одну контрольную точку больше, та же кривая и более близкий к ней многоугольник. А точка, добавленная нажатием на рисунок, меняет кривую.
Поль де Кастельжо разработал это построение в Citroën в 1959 году. Пьер Безье в Renault независимо получил те же кривые и опубликовал их в 1960-х годах.
На что обратить внимание
- Равные шаги t не обязательно соответствуют равным расстояниям вдоль кривой.
- Самая насыщенная область — не сама кривая. Это место, где перекрывается больше всего нитей, и оно может находиться немного в стороне от кривой.
Связанные темы
- Параметрическое уравнение
- Линейная комбинация
- Биномиальное распределение
- Коническое сечение
- Производная
- Спирограф
Дополнительные материалы: Википедия: Bézier curve (Английский); Википедия: De Casteljau's algorithm (Английский); Википедия: Bernstein polynomial (Английский).