Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
_Lecture_04_Моделювання_Кривих.doc
Скачиваний:
3
Добавлен:
23.11.2019
Размер:
419.33 Кб
Скачать

Свойства кривых Безье

1) Инвариантность относительно аффинных преобразований;

2) Инвариантность относительно линейных замен параметризации;

  1. Кривая Безье принадлежит выпуклой оболочке опорных точек (следует из геометрического способа построения);

Следствие: Если все опорные точки лежат на одной прямой, то кривая Безье вырождается в отрезок, соединяющий эти точки.

4) Кривая Безье проходит через и ;

5) Симметричность: если рассматривать контрольные точки в противоположном порядке, то кривая не измениться;

6) Степень многочлена, представляющего кривую в аналитическом виде на 1 меньше числа опорных точек;

7) Векторы касательных в точках и коллинеарны и ,соответственно.

Замечание:

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

Визуализация кривых Безье

1) Прямой метод

Рис. 8. Построение кривых Безье прямым методом.

, (Точную формулу см. выше)

Подберем шаг dt так, чтобы dx и dy были <1 (т.е. мы не пропустим ни одного пиксела).

и - многочлены, соответственно легко найти их максимумы и . Положим =max ( , ), тогда взяв , получим что смещения по x и по y при каждом шаге не превосходят 1.

Алгоритм:

t=0;

while(t≤1)

{

x=x(t);

y=y(t);

plot(x,y);

t+=dt;

}

Недостаток: при малых смещениях по x и y много итераций проходит зря.

  1. Метод разбиения (subdivision)

Рис. 9. Построение кривой Безье методом разбиения.

Предложен de Casteljau.

Если рассмотреть участок между и , взятых для t=0,5, то он может быть задан как кривая Безье с опорными точками , аналогичные рассуждения справедливы и для участка между и . Таким образом будем применять этот алгоритм рекурсивно для левой и правой частей, пока размер кривой не станет меньше размера пиксела.

Алгоритм:

PutPixel( );

PutPixel( );

DrawCurve ( )

{

// Проверка на завершение

if ( BBox( ) < pixelsize ) return;

if ( - прямая линия с точностью до пиксела )

{

Нарисовать эту линию;

return;

}

Найти ;

PutPixel( );

// Нарисовать половинки

DrawCurve( );

DrawCurve( );

}

2) Сплайны, составленные из кривых Безье

Рис. 10. Состыкованные кубические кривые Безье.

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

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

, где

Ограничимся в рассмотрении кубическими кривыми Безье, которые более всего распространены.

1) Требование

Рис. 11. Стыковка с требованием

Пусть заданы значение производных на концах: m0 и m1 :

Таким образом, для того, чтобы в точках стыковки производные были равны необходимо, чтобы

, т.е. :

2) Требование

Рис. 12. Стыковка с требованием .

Из требования в точках стыковки получаем = . Далее , из требования следует равенство , и так как получаются сложением соответствующих векторов по правилу параллелограмма, то ││ и, если обозначить точку пересечения и как , то получим, что - средняя линия треугольника

Распространяя эти рассуждения на все точки стыковки, получаем, что для задания формы такого сплайна достаточно задать точки , где k = 3i , i  , где n+1 - число опорных точек и краевые точки и (см. Рис. 13)

Рис. 13. Связь между точками для соседних сегментов.

Замечание: Для замкнутой кривой задание краевых точек не нужно.