Post content
Суть алгоритма де Кастельжо проста: берём набор контрольных точек, соединяем их отрезками, затем движемся вдоль этих отрезков с постоянной скоростью, отмечая промежуточные точки Соединяем эти новые точки, повторяем процесс и продолжаем, пока не останется только одна точка Путь, который описывает эта точка, и есть кривая Безье При этом только первая и последняя контрольные точки лежат на самой кривой; остальные действуют как кукловоды-невидимки, притягивая к себе кривую и задавая её форму Требовалось строгое математическое обоснование И оно уже существовало, пусть и в совершенно ином контексте Ещё в 1912 году русский математик Сергей Натанович Бернштейн, работая над доказательством теоремы Вейерштрасса об аппроксимации, ввёл специальное семейство многочленов Сегодня они известны как базис Бернштейна Для степени n этот базис состоит из n+1 функций вида Bᵢₙ(t) = Cₙⁱ · tⁱ · (1–t)ⁿ⁻ⁱ, t ∈ [0;1] Например, для кубической кривой у нас есть 4 полинома: B₀₃(t) = (1–t)³, B₁₃(t) = 3 t (1–t)², B₂₃(t) = 3 t² (1–t), B₃₃(t) = t³ Из графиков видно: при t=0 вес имеет только B₀₃, а при t=1 — B₃₃ Каждый полином определяет долю влияния своей точки в каждый момент Алгоритм де Кастельжо наглядно представляет вычисление P(t) = Σ Bᵢₙ(t) · Pᵢ Таким образом, кривая Безье — это взвешенная сумма контрольных точек, в которой базис Бернштейна выступает в роли весов Именно эти «веса» наделяют кривые Безье свойствами, необходимыми для современного дизайна Во-первых, сумма всех базисных полиномов Бернштейна для любого t всегда равна единице Это гарантирует аффинную инвариантность: как бы вы ни перемещали, вращали или масштабировали контрольные точки, кривая будет предсказуемо следовать за ними, не требуя пересчёта Во-вторых, все полиномы Бернштейна неотрицательны на [0; 1] В сочетании с разбиением единицы это гарантирует, что кривая всегда остаётся внутри выпуклой оболочки своих контрольных точек В-третьих, базис Бернштейна обладает свойством уменьшения вариации: кривая не может колебаться сильнее, чем её контрольный многоугольник Даже при резком перемещении одной точки кривая реагирует сглаженно — без неожиданных петель и резких скачков Наконец, базис симметричен: поменяйте порядок контрольных точек местами, и вы получите ту же кривую, пройденную в обратном направлении. Сегодня кривые Безье присутствуют в каждом шрифте, каждом логотипе, каждой анимации За их кажущейся простотой скрывается мощная структура, зародившаяся в начале XX в. и по-настоящему осознанная лишь тогда, когда мир начал рисовать не мелом на доске, а курсором на экране В следующий раз, перетаскивая управляющую точку в графическом редакторе, вспомните о полиномах Бернштейна — математическом механизме, который тихо и незаметно превращает ваши действия с точками в плавные и гладкие кривые