5-8 КРИВЫЕ БЕЗЬЕДо сих пор мы обсуждали, как провести кривую через заданное множество точек. Рассмотренные методы во многих случаях дают прекрасные результаты и особенно удобны при описании формы, основа которой получена с помощью экспериментов или математических расчетов. Это, например, крыло самолета, составные части мотора, механические и структурные детали. Существует, однако, и другой класс задач, когда решение зависит как от функциональных, так и от эстетических требований, например дизайн поверхности машины, фюзеляжа самолета, формы корабля, мебели или посуды. Кроме количественных критериев здесь требуется учет практического опыта, и часто необходимо интерактивное вмешательство разработчика. Рассмотренные выше методы, в частности кубические сплайны, неудобны для интерактивной работы. Направление и величина касательных не дают необходимого интуитивного представления о кривой, так как неочевидна связь между набором чисел и формой соответствующей кривой. Пьер Безье предложил другой метод создания кривых и поверхностей любой формы. Безье вывел математическую основу своего метода из геометрических соображений [5-11] - [5-13], но в работах [5-14] и [5-15] показано, что его результат эквивалентен базису Бернштейна или функции полиномиальной аппроксимации. Рис. 5-25 Кривая Безье и определяющие ее точки. Кривая Безье задается многоугольником, как показано на рис. 5-25. Так как базис Безье является бернштейновским, сразу же известны некоторые свойства кривых Безье. Например: Функции базиса вещественны. Степень многочлена, определяющего участок кривой, на единицу меньше количества точек соответствующего многоугольника. Основа формы кривой повторяет очертания многоугольника. Первая и последняя точки кривой совпадают с соответствующими точками определяющего многоугольника. Векторы касательных в концах кривой по направлению совпадают с первой и последней сторонами многоугольника. Кривая лежит внутри выпуклой оболочки многоугольника, т. е. внутри самого большого многоугольника, построенного по заданным точкам. На рис. 5-25 выпуклая оболочка обозначена штриховой и тонкой линиями. Кривая обладает свойством уменьшения вариации. Это означает, что кривая пересекает любую прямую линию не чаще, чем определяющий многоугольник. Кривая инвариантна относительно аффинных преобразований. На рис. 5-26 показано несколько четырехточечных многоугольников Безье и соответствующих кривых. На основе перечисленных выше свойств можно легко научиться предсказывать форму кривой по виду многоугольника. Математическое параметрическое представление кривой Безье имеет вид
где базис Безье или Бернштейна, или функция аппроксимации
с
Рис. 5-26 Многоугольники Безье для кубических кривых. Здесь На рис. 5-27 изображены аппроксимирующие функции для разных значений
Рис. 5-27 Весовые функции Безье/Бернштейна. (a) Многоугольник из трех точек, Например, для кубической кривой
Рисунок 5-27b иллюстрирует этот пример. Рассмотрим уравнения (5-62) и (5-64) для первой точки на кривой, т.е. при
и
Итак,
первая точка кривой совпадает с первой точкой многоугольника. Аналогично, для последней точки кривой, т. е. при
Итак, и последняя точка на кривой Безье совпадает с последней точкой определяющего многоугольника. Далее, можно показать, что для любого значения параметра
Рассмотрим метод построения Безье на примере.
Уравнение кривой Безье можно записать в матричном виде, так же как уравнения для кубических сплайнов и параболической интерполяции (см. уравнения 5-27 и 5-44):
Здесь Особенный интерес представляют матричные формы для малых значений
Группируя коэффициенты, получим
Аналогично, кривая Безье четвертого порядка
В работе [5-19] приводится обобщенное представление:
где
Матрица
Уравнение (5-70) можно записать в более удобном виде
где
Уравнения (5-70) или (5-71) удобнее для расчета при больших значениях Для каждой отдельной кривой Безье необязательно знать касательные векторы в ее концах, но если необходимо соблюдать непрерывность кривизны и наклона в точках соединения кривых, рассчитывать нормали к поверхности для освещения, вычислять локальную кривизну, то требуется знать как первую, так и вторую производную кривой Безье. Из уравнения (5-62) первая производная кривой Безье имеет вид:
Вторая производная такова:
Формально дифференцируя уравнение (5-63), получаем производные базисных функций
Аналогично, вторые производные имеют вид:
В начале и конце кривой Безье, т.е. при Другой способ вычисления
и при
Отсюда первые производные в концах будут
и
Это показывает, что касательные к кривой Безье в первой и последней точках параллельны соответствующим сторонам многоугольника. Аналогично, вторые производные в концах таковы:
и
Вторые производные в концах зависят от двух ближайших сторон, т. е. от трех ближайших вершин. В общем случае, Подробнее рассмотрим это на примере.
Условие непрерывности соседних кривых Безье формулируется очень просто. Пусть кривая Безье
где Рис. 5-30 Непрерывность первой производной для кубических кривых Безье. Пользуясь уравнениями (5-78) и (5-79), получим
Из непрерывности кривой следует, что
Отсюда направления касательных на стыке совпадают, если три вершины Если совпадают еще и величины касательных векторов, то или
На рис. 5-30 приведена иллюстрация для Условие непрерывности вторых производных между соседними кривыми:
Из условий
Это означает, что вершины Рис. 5-31 Непрерывность второй производной для кривых Безье четвертой степени. Для кубических кривых Безье
Несколько карандашных набросков на бумаге покажут, что данное требование существенно ограничивает множество кривых; поэтому на практике для соблюдения непрерывности вторых производных используются полиномиальные кривые более высокого порядка. На рис. 5-31 приведен пример непрерывности вторых производных для двух пятиточечных кривых Безье. Если необходима более гибкая кривая Безье, увеличивается количество определяющих точек и степень полинома. Для каждой точки на кривой Безье с
где
Здесь можно с успехом применить методику из работы [5-14]. В предельном случае многоугольник сходится к кривой. Дополнительную гибкость кривой можно также получить разбиением кривой Безье на две новых таким образом, чтобы они вместе совпадали с исходной кривой. В работах Барского [5-16, 5-18] было показано, что любая кривая Безье может быть разбита с использованием произвольного параметра в диапазоне Кубическая кривая Безье (см. упражнение 5-7) задается в виде
с определяющими вершинами
Решение этих уравнений дает
Аналогично,
Эти результаты обобщаются до
Дальнейшее применение определяющих многоугольников с помощью кривой Безье оставляем для самостоятельной работы.
|