Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ИГС / Lab_03 / labor_03a.doc
Скачиваний:
11
Добавлен:
17.04.2018
Размер:
1.34 Mб
Скачать

Составные b-сплайновые кривые с кратными опорными точками

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

Аналогичных эффектов можно достичь, если в набор опорных векторов ввести кратные векторы (кратные вершины, кратные опорные точки). Если два соседних опорных вектора равны друг другу:

,

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

,

то они создают кратную опорную точку, кратность которой равна трем.

Напомним, как создается составнаяB-сплайновая кубическая кривая. ВыбираемN+1 опорные векторыV0,V1,,VN-1,VN.

Используем из этого набора векторов четыре вектора Vi-1,Vi,Vi+1,Vi+2для созданияi-ой элементарнойB-сплайновой кубической кривойri(t). Номерiэлементарной сплайновой кривой меняется в пределахi=1, 2,,N-2. Другими словами наN+1 опорных векторах можно построитьN-2 элементарныеB-сплайновые кубические кривые, которые в совокупности дают составную сплайновую кривую.

Элементарная ri(t)B-сплайновая кубическая кривая с номеромi, строится по формулам (47), (48), (49), где в качестве столбцаpвыбирается следующий столбец.

(49а)

Параметр tв этих формулах меняется в пределах 0t1. Точкаt=0 соответствует началу элементарной кривой, а точкаt=1 соответствует концу элементарной кривой.

Для всех элементарных кривых, которые образуют составную кривую, параметр tявляется внутренним, локальным параметром, и не зависит от параметраtсоседней элементарной кривой.

Иногда бывает удобно ввести глобальный параметр t, при изменении которого радиус-векторr(t) скользит по всей составной сплайновой кривой, а параметрtменяется в следующих пределах:

(49b)

В этом случае радиус-вектор составной сплайновой кривой связан с элементарными кривыми следующим соотношением:

(49c)

Теперь попробуем закрепить составную сплайновую кривую в начальной опорной точке V0и в последней опорной точкеVN. Для этого, эти опорные точки должны быть кратными с кратностью равной трем. Для примера возьмем составную сплайновую кривую, составленную из 5-ти элементарных кубических сплайновых кривых. В этом случае набор из 8-ми опорных векторов имеет следующий вид:

(49d)

На Рис.26aпоказана составнаяB-сплайновая кривая, построенная по опорным векторам (49d).

Рис.26a

Составная B-сплайновая кривая с закрепленными концами. Первая и последняя опорные точки являются трехкратными точкам.

Рис.26b

Составная B-сплайновая кривая с двукратной опорной точкойV3.

(Изображения на Рис. 26а, 25 созданы программой line10.cpp.)

Если сравнить сплайновую кривую на Рис. 26а со сплайновой кривой на Рис. 24, то можно увидеть отличия в этих кривых. Хотя обе кривые построены по одним и тем же формулам (49a), (49b), (49c), различный выбор опорных векторов существенно меняет поведение этих кривых.

На Рис. 26а видно, что первая элементарная кубическая сплайновая кривая начинается в точке V2, а кончается в точке лежащей на отрезкеV2V3на расстоянии 1/6 длины этого отрезка от вершиныV2. При этом первая элементарная кубическая сплайновая кривая совпадает с прямой линией. Вторая элементарная кубическая сплайновая кривая начинается в указанной точке на отрезкеV2V3, и касается отрезкаV2V3.

Точно так же относительно отрезка V4V5располагаются пятая и четвертая элементарные кубические сплайновые кривые.

На Рис.26bпоказана составнаяB-сплайновая кривая, состоящая их 3-х элементарных кубических сплайновых кривых, с двукратной опорной вершинойV2=V3. Из рисунка видно, что составная сплайновая кривая достаточно близко подходит к двукратной вершине. И, кроме того, она касается отрезковV1V2иV3V4, прилегающих к этой вершине.

Соседние файлы в папке Lab_03