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

Замечание [Наблюдение] II: Вычисление Новых Контрольных Точек

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

Если один и тот же узел вводится второй раз, то зависящие [affected] p+1 контр. точек - это pk, pk-1, pk-s, pk-s,1, pk-s-1,1, ..., pk-p+1,1, как показано в вышеукзанной диаграмме. Заметьте, что pk-p исключается, так как только p+1 контр. точек зависимы [affected]. Тем не менее, так как множественность t увеличивается на единицу из-за первого введения, то s+2 контр. точек не будут участвовать вычислении введения узла: pk, pk-1, ..., pk-s и pk-s,1. Схема вычисления и новый набор точек показаны ниже. Заметьте, что новые контр. точки, полученные после второго введения узла, имеют в качестве второго нижнего индекса число 2. Новые контр. точки - это: (1) pk-p+1,1 и pk-s,1, полученные после первого введения узла, и (2) pk-p+2,2 - pk-s,2, полученные после второго введения узла.

Для третьего введения, зависимые p+1 контр. точек - это от pk-p+2,2 до pk-s,2, pk-s,1, и от pk-s до pk. Так как третье введение вновь увеличивает множественность t на единицу, то количество контр. точек, которое не участвует в вычислении, также увеличивается на единицу. В итоге, pk-s,2 останется неизменным как до третьего введения, так и после него. Это показывает следующая диаграмма:

В общем случае, если t вводится h раз в узлы uk множественности s, где s = 0 означает, что t вводится в середине этого узлового интервала, а s > 0 значит, что t вводится в множественный узел, то можно:

  1. записать первый набор p+1 зависимых контр. точек в качестве нулевого столбца;

  2. пропустить последние s контр. точек (т.e. от pk-s+1 до pk);

  3. Вычислить первый столбец, второй столбец, ... И h-ый столбец;

  4. Новым набором контр. Точек будут те, что ограничены пунктирным многоугольником.

Итоги

Объединяя эти два наблюдения, полусим следующий алгоритм для введения узла t несколько раз.

Входные данные: узел t на [uk, uk+1) с исходной множественностью s, который нужно ввести h раз, где h+s меньше или равно p, степень данной кривой B-spline или NURBS Выходные данные: новый набор контр. точек после того, как t введен h раз Переименуем контр. точки pk, pk-1, ..., pk-p как pk,0, pk-1,0, ..., pk-p,0, т.е. добавим второй нижний индекс 0. for r := 1 to h do

for i := k-p+r to k-s do

begin

Let ai,r = (t - ui) / ( ui+p-r+1 - ui ) Пусть pi,r = (1 - ai,r) pi-1,r-1 + ai,r pi,r-1

end

Новый набор контр. точек образуется из исходных от p0 до pk-p, следуя по верхнему краю вышеизложенной диаграммы (т.e. pk-p+1,1, pk-p+2,2, ..., pk-p+h,h), потом по правому краю диаграммы (т.e. pk-p+h+1,h, pk-p+h+2,h, ...., pk-s,h), потом по низу диаграммы (т.e. pk-s,h-1, pk-s,h-2, ...., pk-s,1), потом по исходным контр. точкам pk-s, ..., pk, ..., pn.

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