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

Nurbs: Изменение Весов

Так как кривые NURBS определяются набором контр. точек, узловым вектором, значением степени и набором весов, то имеем еще один важный параметр для изменения формы кривой - это значения весов. Вспомним, что базисные функции кривых NURBS - это

Таким образом, увеличение и уменьшение значения wi соответственно увеличит и уменьшит значение Ri,p(u). Говоря точнее, увеличение значения wi приблизит кривую к контр. точке pi. Фактически, все зависимые от этого точки на кривой также приблизятся в направлении к pi. Когда wi станет равно бесконечности, кривая пройдет через контр. точку pi. С другой стороны, уменьшение значения wi отодвинет кривую от контр. точки pi. Нажмите сюды для более глубокого обсуждения.

Следующие рисунки показывают кривую NURBS 6 степени и ее базисные функции. Выбранная контр. точка - p9. На первом рисунке все весы равны 1 и поэтому кривая является кривой B-spline. На втором рисунке w9 увеличено до 2 и, как видите, часть кривой двигается ближе к p9. Так как w9 увеличилось, то же самое и с R9,6(u), как показано на рисунке справа.

Далее w9 увеличивается до 5, 10 и 20, соответствующее R9,6(u) становится больше, и несет больший вес. Это пододвигает кривую ближе к контр. точке p9. Когда w9 = 20, кривая очень близка p9.

Взглянем на противоположный эффект.Вот начальный случай, когда все весы равны 1. Далее, w9 уменьшается до 0.5 и это отодвигает кривую от контр. точки p9. Заметьте, что соответствующее R9,6(u) уменьшается, как и влияние контр. точки p9 на кривую p(u). Когда w9 изменяется до 0.1, кривая отодвигается и значение R9,6(u) становится меньше. Последний рисунок показывает кривую при w9 равном нулю. Так как R9,6(u) равно нулю, то оно не влияет на кривую и в результате отрезок кривой напротив контр. точки p9 плоский.

В итоге, имеем следующее:

Увеличение (соотв., уменьшение) значения веса wi пододвигает (соотв. отталкивает) кривую к (соотв., от) контр. точке pi. Когда значение wi уходит в бесконечность, кривая проходит через контр. точку pi, а когда значение wi равно нулю, контр. точка pi не влияет на кривую.

Углубленное Рассуждение

Раасмотрим пристальнее влияние изменения веса выбранной контр. точки. Давайте вернемся к определению кривой NURBS:

Выберем контр. точку pk и исследуем влияние изменения wk. Так как pk может влиять на кривую p(u) только на ненулевой области ее коэффициента Nk,p(u) (т.e. [uk, uk+p+1)), то далее примем, что u лежит на [uk, uk+p+1).

Вынесем члены с wk из суммирования, получим:

Так как это уравнение довольно сложное, упростим его следующим способом:

Теперь уравнение стало таким легкочитаемым:

Сначала возьмем случай wk = 0. Имеем A = 0, и точка на кривой, обозначается как p0(u), равна

Теперь давайте вычислим вектор из этой "базисной" точки p0(u) в соответствующую ей точку p(u) для произвольного wk. После простых преобразований имеем следующее:

Что это значит? Это значит, что вектор p(u)-p0(u) и вектор pk-p0(u) имеют одно направление, а длина первого в A/(A+B) больше, чем длина последнего для каждого u на [uk, uk+p+1)! Так как точки pk и p0(u) фиксированы, то можно сказать, что p(u) лежит на прямой от pk до p0(u). Более того, если все весы неотрицательны, то и A, и B неотрицательны и значение A/(A+B) лежит между 0 и 1! То есть, точка p(u) лежит на отрезке между pk и p0(u).

Что, если wk достигает бесконечности? Давайте поделим числитель и знаменателm кривой p(u) на wk, как показано ниже.

Если wk уходит в бесконечность, 1/wk становится нулем. Отсюда, если wk достигает бесконечности, то p(u) достигает pk, выбранной контр. точки. Вот итог сказанного:

Если wk неотрицательно, то p(u) всегда лежит на отрезке между p0(u) и pk, где p0(u) - это точка, соответствующая wk = 0, а u лежит на [uk, uk+p+1). Более того, когда wk изменяется от 0 до бесконечности, p(u) двигается от p0(u) к pk, а если wk - бесконечность, то p(u) становится pk.

Следующий рисунок иллюстрирует этот результат. Имеем кривую NURBS 6 степени, определенную по 9 контр. точкам (n = 8) и 16 узлам (m = 15), как показано ниже.

u0 = u1 = u2 = u3 = u4 = u5 = u6

u7

u8

u9 = u10 = u11 = u12 = u13 = u14 = u15

0

1/3

2/3

1

Выбранная контр. точка - это p4. Так как коэффициент при p4, N4,6(u), не рваен нулю на [u4, u4+6+1) = [0,1), то изменение w4 влияет на кривую целиком!

Точки, соответствующие u = 1/3 и u = 2/3 обозначены на кривой разными цветами. Кривая, соответствующая w4 = 0 - самая нижняя, обозначена 0. Риснуок показывает кривые для w4, равного 2, 3, 4, 5, 10, 20 и 50. При увеличении значения w4 кривая пододвигается ближе к контр. точке p4. Когда w4 увеличивается до 50, кривая становится очень близко к p4. Пожалуйста, заметьте, что все точки, соовтетствующие p(1/3) находятся на отрезке прямой между точками p0(1/3) и p4, а все точки, соответствующие p(2/3) - на отрезке прямой между p0(2/3) и p4. Также заметьте, что отрезок кривой между точками p(1/3) и p(2/3) становится короче при увеличении значения w4. В конце концов длина этого криволинейного отрезка становится равной нулю (т.e. p(1/3) и p(2/3) становится равно p4), когда w4 равно бесконечности. Можете ли вы обобщить это наблюдение?

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