Читайте также:
|
|
Вспомним из способа введения узла в существующий узел, что, если t вводится в существующий узел uk множественности s, то контр. точки p k-s, p k-s +1,..., p k -1 и p k не влияют, и только p k-p, p k-p +1,..., p k-s участвуют в вычислении новых контр. точек q i. Перепишем все новые контр. точки после первого введения со вторым нижним индексом 1. Таким образом, имеем следующую диаграмму:
Если один и тот же узел вводится второй раз, то зависящие [affected] p +1 контр. точек - это p k, p k -1, p k-s, p k-s ,1, p k-s -1,1,..., p k-p +1,1, как показано в вышеукзанной диаграмме. Заметьте, что p k-p исключается, так как только p +1 контр. точек зависимы [affected]. Тем не менее, так как множественность t увеличивается на единицу из-за первого введения, то s +2 контр. точек не будут участвовать вычислении введения узла: p k, p k -1,..., p k-s и p k-s ,1. Схема вычисления и новый набор точек показаны ниже. Заметьте, что новые контр. точки, полученные после второго введения узла, имеют в качестве второго нижнего индекса число 2. Новые контр. точки - это: (1) p k-p +1,1 и p k-s ,1, полученные после первого введения узла, и (2) p k-p +2,2 - p k-s ,2, полученные после второго введения узла.
Для третьего введения, зависимые p +1 контр. точек - это от p k-p +2,2 до p k-s ,2, p k-s ,1, и от p k-s до p k. Так как третье введение вновь увеличивает множественность t на единицу, то количество контр. точек, которое не участвует в вычислении, также увеличивается на единицу. В итоге, p k-s ,2 останется неизменным как до третьего введения, так и после него. Это показывает следующая диаграмма:
В общем случае, если t вводится h раз в узлы uk множественности s, где s = 0 означает, что t вводится в середине этого узлового интервала, а s > 0 значит, что t вводится в множественный узел, то можно:
Итоги
Объединяя эти два наблюдения, полусим следующий алгоритм для введения узла t несколько раз.
Входные данные: узел t на [ uk, uk +1) с исходной множественностью s, который нужно ввести h раз, где h+s меньше или равно p, степень данной кривой B-spline или NURBS
Выходные данные: новый набор контр. точек после того, как t введен h раз
Переименуем контр. точки p k, p k -1,..., p k-p как p k ,0, p k -1,0,..., p k-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)
Пусть p i,r = (1 - ai,r) p i -1, r -1 + ai,r p i , r -1
End
Новый набор контр. точек образуется из исходных от p 0 до p k-p, следуя по верхнему краю вышеизложенной диаграммы (т.e. p k-p +1,1, p k-p +2,2,..., p k-p+h,h), потом по правому краю диаграммы (т.e. p k-p+h +1, h , p k-p+h +2, h ,...., p k-s , h ), потом по низу диаграммы (т.e. p k-s , h -1, p k-s , h -2,...., p k-s ,1), потом по исходным контр. точкам p k-s,..., p k,..., p n.
Дата добавления: 2015-10-29; просмотров: 137 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Введение Узла для Кривых NURBS | | | Алгоритм De Boor |