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

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


5-12 РАЗБИЕНИЕ В-СПЛАЙНОВ

Для того чтобы увеличить гибкость кривой Безье, необходимо добавить вершину к определяющему многоугольнику, что повышает степень полиномиальной кривой (см. разд. 5-8). Гибкость В-сплайна также растет с увеличением порядка его базиса, т. е. полиномиальных сегментов. В работе [5-27] предлагаются теория и алгоритм увеличения порядка В-сплайна.

Повысить гибкость В-сплайна можно другим способом: вставить дополнительные узловые значения в определяющий узловой вектор. При этом полиномиальный сегмент для некоторого интервала узловых значений (параметрического интервала) локально разбивается на два. Есть два основных метода вставки узловых значений. Первый, так называемый алгоритм Осло, разработанный Коэном и др. ([5-28] и [5-29]), вставляет сразу несколько узловых значений. Второй метод Бема ([5-30] и [5-31]) последовательно вставляет по одному узловому значению. Мы рассмотрим только метод Осло.

Как повышение порядка, так и дополнительные узловые значения увеличивают гибкость базиса кривой (поверхности) и, следовательно, кривой без изменения ее формы. Это возможно потому, что один В-сплайн можно задать бесконечным множеством многоугольников с более чем минимальным количеством вершин. Форма кривой меняется путем передвижения вновь полученных вершин.

Рассмотрим исходную кривую  с узловым вектором . Вставив узел, получаем новую кривую :

                      (5-118)

с новым узловым вектором

,

где . Надо найти новые вершины определяющего многоугольника , такие, что . По алгоритму Осло [5-29]

,         ,         ,                   (5-119)

где  заданы рекурсивным отношением

,               (5-120a)

.                    (5-120b)

Отметим, что .

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

Пример 5-18 Глобальное разбиение В-сплайна

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

Исходный открытый равномерный вектор имеет вид:

,

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

с , , …, . Кривая при этом не меняется.

Для разбиения кривой с учетом поставленных условий необходимо вставить узловые значения 1 и 3 в интервалы  и , соответственно. Запишем новый узловой вектор:

с , , …, .

Теперь В-сплайн состоит из четырех параболических сегментов.

Из уравнения (5-119) получим шесть новых вершин . Значения  вычисляются с помощью рекурсивных соотношений (5-120). В частности, из уравнения (5-120а) видно, что единственное ненулевое  первого порядка  таково:

.

Из уравнения (5-120b) ненулевые  второго порядка  таковы:

,

,

,

,

,

,

,

,

,

,

,

,

,

,

,

,

,

третьего порядка

,

,

,

,

,

,

,

,

,

,

,

,

,

,

,

,

,

,

,

.

            Новые вершины рассчитываются по уравнению (5-119):

.

Аналогично

,

,

,

,

.

В результате увеличивается гибкость всей кривой.

В следующем примере в исходный открытый равномерный узловой вектор вносится один узел, после чего вектор становится неоднородным.

Пример 5-19 Локальное разбиение В-сплайна

Рассмотрим открытый В-сплайн третьего порядка  из примера 5-18. Провести разбиение, добавив узловое значение 1 на интервале  вектора: , где , …, . Новый узловой вектор имеет вид: , где , …, . Новый многоугольник имеет пять вершин .

Ненулевые , необходимые для расчета :

,

,

,

,

,

, .

Новые вершины:

,

,

,

,

.

Если  сдвинуть до совпадения с , т. е. , то получится как двойная вершина, так и двойной узел для . Для  В-сплайн имеет острый пик в  (см. задачу 5-30).

 



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