Читать в оригинале

<< ПредыдущаяОглавлениеСледующая >>


5-8 КРИВЫЕ БЕЗЬЕ

До сих пор мы обсуждали, как провести кривую через заданное множество точек. Рассмотренные методы во многих случаях дают прекрасные результаты и особенно удобны при описании формы, основа которой получена с помощью экспериментов или математических расчетов. Это, например, крыло самолета, составные части мотора, механические и структурные детали. Существует, однако, и другой класс задач, когда решение зависит как от функциональных, так и от эстетических требований, например дизайн поверхности машины, фюзеляжа самолета, формы корабля, мебели или посуды. Кроме количественных критериев здесь требуется учет практического опыта, и часто необходимо интерактивное вмешательство разработчика.

Рассмотренные выше методы, в частности кубические сплайны, неудобны для интерактивной работы. Направление и величина касательных не дают необходимого интуитивного представления о кривой, так как неочевидна связь между набором чисел и формой соответствующей кривой.

Пьер Безье предложил другой метод создания кривых и поверхностей любой формы. Безье вывел математическую основу своего метода из геометрических соображений [5-11] - [5-13], но в работах [5-14] и [5-15] показано, что его результат эквивалентен базису Бернштейна или функции полиномиальной аппроксимации.

293.jpg

Рис. 5-25 Кривая Безье и определяющие ее точки.

Кривая Безье задается многоугольником, как показано на рис. 5-25. Так как базис Безье является бернштейновским, сразу же известны некоторые свойства кривых Безье. Например:

Функции базиса вещественны.

Степень многочлена, определяющего участок кривой, на единицу меньше количества точек соответствующего многоугольника.

Основа формы кривой повторяет очертания многоугольника.

Первая и последняя точки кривой совпадают с соответствующими точками определяющего многоугольника.

Векторы касательных в концах кривой по направлению совпадают с первой и последней сторонами многоугольника.

Кривая лежит внутри выпуклой оболочки многоугольника, т. е. внутри самого большого многоугольника, построенного по заданным точкам. На рис. 5-25 выпуклая оболочка обозначена штриховой и тонкой линиями.

Кривая обладает свойством уменьшения вариации. Это означает, что кривая пересекает любую прямую линию не чаще, чем определяющий многоугольник. Кривая инвариантна относительно аффинных преобразований.

На рис. 5-26 показано несколько четырехточечных многоугольников Безье и соответствующих кривых. На основе перечисленных выше свойств можно легко научиться предсказывать форму кривой по виду многоугольника.

Математическое параметрическое представление кривой Безье имеет вид

,                     (5-62)

где базис Безье или Бернштейна, или функция аппроксимации

                    (5-63)

с

                      (5-64)

 - это -я функция базиса Бернштейна порядка .

294.jpg

Рис. 5-26 Многоугольники Безье для кубических кривых.

Здесь  - порядок определяющей функции базиса Бернштейна - и, следовательно, сегмента полиномиальной кривой, на единицу меньше количества точек определяющего многоугольника. Как показано на рис. 5-25, вершины многоугольника Безье нумеруются от 0 до . Поэтому  и .

На рис. 5-27 изображены аппроксимирующие функции для разных значений . Заметим, что функции симметричны. Каждая функция имеет порядок , например все четыре функции на рис. 5-27b для  кубические. Максимум каждой функции достигается при  и равен (5-14)

.              (5-65)

295.jpg

Рис. 5-27 Весовые функции Безье/Бернштейна. (a) Многоугольник из трех точек, ; (b) из четырех точек, ; (с) из пяти точек, ; (d) из шести точек, .

Например, для кубической кривой . Максимум  и  достигается в  и , соответственно, и имеет значения

 и .

Рисунок 5-27b иллюстрирует этот пример.

Рассмотрим уравнения (5-62) и (5-64) для первой точки на кривой, т.е. при

,                       ,

и

,                     .

Итак,

,

первая точка кривой совпадает с первой точкой многоугольника.

Аналогично, для последней точки кривой, т. е. при

,              ,

,                .

Итак,

и последняя точка на кривой Безье совпадает с последней точкой определяющего многоугольника.

Далее, можно показать, что для любого значения параметра  сумма базисных функций равна 1, т.е.

.                        (5-66)

Рассмотрим метод построения Безье на примере.

Пример 5-7 Кривая Безье

Пусть заданы вершины многоугольника Безье , ,  и . Найти семь точек, лежащих на кривой Безье.

Рассмотрим уравнения (5-62) - (5-64):

,

где

и

.

В нашем случае , так как имеется четыре вершины. Отсюда

и

,

,

,

.

Итак,

.

Таблица 5-4 Коэффициенты для кривой Безье

0

1

0

0

0

0.15

0.614

0.325

0.058

0.003

0.35

0.275

0.444

0.239

0.042

0.5

0.125

0.375

0.375

0.125

0.65

0.042

0.239

0.444

0.275

0.85

0.003

0.058

0.325

0.614

1

0

0

0

1

297.jpg

Рис. 5-28 Сегмент кривой Безье, пример 5-7.

Значения  для различных значений  приведены в табл. 5-4.

            Точки на кривой:

,

,

,

,

,

,

.

Эти точки показаны на определяющем многоугольнике на рис. 5-28.

Уравнение кривой Безье можно записать в матричном виде, так же как уравнения для кубических сплайнов и параболической интерполяции (см. уравнения 5-27 и 5-44):

.                        (5-67)

Здесь  и .

Особенный интерес представляют матричные формы для малых значений . Для многоугольника из четырех точек  кривая Безье имеет вид

.

Группируя коэффициенты, получим

.                     (5-68)

Аналогично, кривая Безье четвертого порядка , заданная многоугольником из пяти точек:

.                       (5-69)

В работе [5-19] приводится обобщенное представление:

,

где

,

.                       (5-70)

Матрица  - это опять . Отдельные члены матрицы  таковы:

.

Уравнение (5-70) можно записать в более удобном виде

,                       (5-71)

где

,

.

Уравнения (5-70) или (5-71) удобнее для расчета при больших значениях . Заметим, что для всех  матрица  симметрична относительно главной диагонали и правый нижний угол состоит из нулей.

Для каждой отдельной кривой Безье необязательно знать касательные векторы в ее концах, но если необходимо соблюдать непрерывность кривизны и наклона в точках соединения кривых, рассчитывать нормали к поверхности для освещения, вычислять локальную кривизну, то требуется знать как первую, так и вторую производную кривой Безье.

Из уравнения (5-62) первая производная кривой Безье имеет вид:

.             (5-72)

Вторая производная такова:

.            (5-73)

Формально дифференцируя уравнение (5-63), получаем производные базисных функций

.       (5-74)

Аналогично, вторые производные имеют вид:

.                      (5-75)

В начале и конце кривой Безье, т.е. при  и , численный расчет уравнений (5-74) и (5-75) представляет затруднения.

Другой способ вычисления -й производной при :

                (5-76)

и при :

.               (5-77)

Отсюда первые производные в концах будут

               (5-78)

и

.                       (5-79)

Это показывает, что касательные к кривой Безье в первой и последней точках параллельны соответствующим сторонам многоугольника. Аналогично, вторые производные в концах таковы:

                  (5-80а)

и

.                      (5-80b)

Вторые производные в концах зависят от двух ближайших сторон, т. е. от трех ближайших вершин. В общем случае, -я производная в начальной и конечной точках зависит от этих точек и  ближайших вершин многоугольника.

Подробнее рассмотрим это на примере.

Пример 5-8 Производные кривых Безье

Рассмотрим четырехточечный многоугольник Безье, например, как на рис. 5-26 и 5-28. Вспомним представление кривой

.

Отсюда первая производная

.

Вспомним пример 5-7 и непосредственно продифференцируем базисные функции

,

,

,

.

Подставим :

,                ,   .

Подстановка дает

.

Поэтому направление касательной в начале кривой совпадает с первой стороной многоугольника (см. рис. 5-28).

В конце кривой  и

,                ,                .

Аналогично, подстановка дает

и направление касательного вектора в конце кривой совпадает с последней стороной многоугольника.

Чтобы вычислить производные вдоль кривой, воспользуемся функциями базиса и уравнениями (5-74) и (5-75):

,

,

,

.

Результаты легко вычисляются как для , так и для . Подставляя в уравнение (5-72), получаем первую производную в любой точке кривой. Например, при  имеем

.

Результат для точек , , ,  из примера 5-7 изображен на рис. 5-29.

302.jpg

Рис. 5-29 Кривая Безье и ее производные: ; ; .

Аналогично, вторые производные имеют вид:

,

,

,

.

Уравнение (5-73) при  дает

.

Иллюстрация также приведена на рис. 5-29. Заметим, что вектор из начала координат в любую точку на каждой из кривых представляет соответственно направление и величину радиуса-вектора и приблизительную кривизну в этой точке на кривой.

Условие непрерывности соседних кривых Безье формулируется очень просто. Пусть кривая Безье  степени  задана вершинами , а соседняя кривая Безье  степени  - вершинами . Тогда непрерывность первой производной в точке соединения выражается соотношением

,

где  - скаляр.

303.jpg

Рис. 5-30 Непрерывность первой производной для кубических кривых Безье.

Пользуясь уравнениями (5-78) и (5-79), получим

.

Из непрерывности кривой следует, что  и

.

Отсюда направления касательных на стыке совпадают, если три вершины , ,  коллинеарны, т.е.  должна лежать на линии между  и .

Если совпадают еще и величины касательных векторов, то  является серединой отрезка от  до :

или

.

На рис. 5-30 приведена иллюстрация для , т. е. для двух кубических кривых Безье.

Условие непрерывности вторых производных между соседними кривыми:

.

Из условий  и  непрерывности в точке соединения получаем положение третьей определяющей вершины второго многоугольника, выраженное через три последние вершины первого многоугольника, а именно

.

Это означает, что вершины , , , ,  должны либо составлять выпуклый многоугольник, либо лежать на одной прямой, чтобы сохранить  непрерывность на стыке.

304.jpg

Рис. 5-31 Непрерывность второй производной для кривых Безье четвертой степени.

Для кубических кривых Безье  это условие имеет вид

.

Несколько карандашных набросков на бумаге покажут, что данное требование существенно ограничивает множество кривых; поэтому на практике для соблюдения непрерывности вторых производных используются полиномиальные кривые более высокого порядка. На рис. 5-31 приведен пример непрерывности вторых производных для двух пятиточечных кривых Безье.

Если необходима более гибкая кривая Безье, увеличивается количество определяющих точек и степень полинома. Для каждой точки на кривой Безье с  определяющими вершинами многоугольника  та же самая точка на новой кривой Безье с  определяющими вершинами  задается в виде

,                      (5-81)

где

,

,         ,                  ,

.

Здесь можно с успехом применить методику из работы [5-14]. В предельном случае многоугольник сходится к кривой. Дополнительную гибкость кривой можно также получить разбиением кривой Безье на две новых таким образом, чтобы они вместе совпадали с исходной кривой. В работах Барского [5-16, 5-18] было показано, что любая кривая Безье может быть разбита с использованием произвольного параметра в диапазоне . Простейший случай - это средняя точка, т.е.  (см. [5-18]). При разбиении средней точкой получаются два специальных вида кубических кривых Безье.

Кубическая кривая Безье (см. упражнение 5-7) задается в виде

,        ,

с определяющими вершинами , , , . Тогда многоугольник , , ,  определяет кривую Безье , , соответствующую первой половине исходной кривой, а именно , , как и требовалось. Подобным образом, многоугольник , , ,  определяет кривую Безье , , соответствующую второй половине исходной кривой, т.е. , , как и требовалось. Новые определяющие вершины многоугольника  и  получаются путем приравнивания радиус-векторов и касательных векторов при , ; ,  и , ; , . Из соотношений (5-62) и (5-72) получаем

,

,

,

.

Решение этих уравнений дает

,

,

,

.

Аналогично,

,

,

,

.

Эти результаты обобщаются до

,        ,                (5-82a)

,            .                (5-82b)

Дальнейшее применение определяющих многоугольников с помощью кривой Безье оставляем для самостоятельной работы.

 



<< ПредыдущаяОглавлениеСледующая >>