Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Curves.doc
Скачиваний:
52
Добавлен:
01.09.2019
Размер:
4.51 Mб
Скачать

Пример 1: Введение Узла на Узловом Интервале

Пусть имеется кривая B-spline 3 степени с таким узловым вектором:

u0 - u3

u4

u5

u6

u7

u8 - u11

0

0.2

0.4

0.6

0.8

1

Нам нужно ввести новый узел t = 0.5. Так как t = 0.5 лежит на узловом интервале [u5,u6), зависящие контр. точки - это p5, p4, p3 и p2. Чтобы определить три новых контр. точки q5, q4 и q3, нам нужно вычислить a5, a4 и a3 следующим образом:

a5 = (t - u5) / (u8 - u5) = (0.5 - 0.4) / ( 1 - 0.4) = 1/6 a4 = (t - u4) / (u7 - u4) = (0.5 - 0.2) / ( 0.8 - 0.2) = 1/2 a3 = (t - u3) / (u6 - u3) = (0.5 - 0) / ( 0.6 - 0) = 5/6

Таким образом, три новых контр. точки - это

q5 = (1 - 1/6)p4 + (1/6)p5 q4 = (1 - 1/2)p3 + (1/2)p4 q3 = (1 - 5/6)p2 + (5/6)p3

Новая контр. ломаная становится p0, p1, p2, q3, q4, q5, p5, ...., а узловой вектор

u0 - u3

u4

u5

u6

u7

u8

u9 - u12

0

0.2

0.4

0.5

0.6

0.8

1

Так как у исходной кривой B-spline p = 3 и m = 11, получаем n = m - p - 1 = 11 - 3 - 1 = 7 и отсюда 8 контр. точек. Вот кривая B-spline, удовлетворяющая этому условию и ее базисные функции:

Три синих прямоугольника - это q3, q4 и q5. После введения t = 0.5, углы в p3 и p4 отсекаются иполучается следующая кривая B-spline и ее базисные функции. Заметьте, что форма кривой не изменяется:

Следующая диаграмма показывает соотношения между старыми и новыми контр. точками. Заметьте, новый набор контр. точек содержит p0, p1, p2, q3, q4, q5, p5, p6 и p7.

Соотношения между значениями aj, uj, и t показаны ниже:

Пример 2: Введение Узла в Существующем Простом Узле

Пусть имеем такой узловой вектор:

u0 - u4

u5

u6

u7

u8

u9

u10

u11

u12 - u16

0

0.125

0.25

0.375

0.5

0.625

0.75

0.875

1

Нам нужно ввести новый узел t = 0.5, который равняется существующему (т.e. t = u8 = 0.5). Вот кривая B-spline 4 степени и ее базисные функции до введения нового узла t.

Так как t находится на [u8,u9), то зависящие точки - это p8, p7, p6, p5 и p4. Коэффициенты вычисляем так:

a8 = (t - u8) / (u12 - u8) = (0.5 - 0.5) / (1 - 0.875) = 0 a7 = (t - u7) / (u11 - u7) = (0.5 - 0.375) / (0.875 - 0.375) = 1/4 a6 = (t - u6) / (u10 - u6) = (0.5 - 0.25) / (0.75 - 0.25) = 1/2 a5 = (t - u5) / (u9 - u5) = (0.5 - 0.125) / (0.625 - 0.125) = 3/4

Новые контр. точки - это

q8 = (1 - 0)p7 + 0p8 q7 = (1 - 1/4)p6 + (1/4)p7 q6 = (1 - 1/2)p5 + (1/2)p6 q5 = (1 - 3/4)p4 + (3/4)p5

Новая контр. точка q8 равна исходой контр. точке p7. Фактически, если t равняется узлу, скажем, uk, то

ak = (t - uk) / (uk+p - uk) = 0

Следовательно, имеем

qk = (1 - 0)pk-1 + 0pk = pk-1

То есть, если новый узел t, который должен быть введен, равняется существующему простому узлу uk, то qk, последняя новая контр. точка, равняется pk-1. Следующая диаграмма показывает схему вычислений:

На рисунке в начале этого примера новые контр. точки и новая контр. ломаная показаны оранжевым цветом. Пожалуйста, заметьте, новые контр. точки - это p0, p1, p2, p3, p4, q5, q6, q7, q8 = p7, p8, p9, p10 и p11. Кривая и ее базисные функции после введения нового узла t = 0.5 показана ниже.

Соотношения между значениями aj, uj и t показаны ниже:

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]