Неравномерный рациональный B-сплайн (NURBS) Основы

9

Я пытаюсь понять кривые NURBS (поверхности позже!), Но у меня есть некоторые проблемы с пониманием самой основы его внутренней работы. Может ли кто-нибудь объяснить мне несколько вещей? Исходя из кривых Безье, сравнение между этими двумя было бы особенно полезно.

  1. «Рациональная основа функция» выглядит чуть - чуть , как Бернштейн полином (рациональный) кривой Безье. Параметр uтакже изменяется от 0 до 1?

  2. Как «добавить детали» к кривой? Я имею в виду, что с Безье, если бы мне нужно было описать более сложную форму, я бы просто «сшил» несколько Безье вместе. Или реже увеличивать степень. Я понимаю, что могу также увеличить степень NURBS и поставить несколько кривых NURBS рядом, но так ли это?

  3. Статья в Википедии, по крайней мере для меня, кажется не очень ясной об этом "векторе узлов". Что это вообще?

Ecir Hana
источник
Это слишком много для одного вопроса. По сути, я могу закончить вводную лекцию по этому вопросу за несколько часов. Немного вдаваясь в детали использования Де Кастельяну и алгоритма Де Боора, заняло бы у меня слишком много времени.
joojaa
1
Поэтому я хотел бы, чтобы вопросы 3, 5 и, возможно, 6 были разделены как отдельные вопросы, чтобы дать ответы и понимание большего размера еды.
joojaa
@joojaa Конечно, я могу разделить вопрос, всего на секунду ...
Ecir Hana
1
Таким образом, вопросы 3 , 5 и 6 были разделены на отдельные вопросы.
Ecir Hana

Ответы:

7

B-сплайны и Безье - параллельные изобретения более или менее одного и того же. Где Безье пытается начать с идеи подгонки касательных. B-сплайны начинаются с идеи базисных функций. Сплайны NURB (или фактически рациональная часть) - это просто обобщения B-сплайнов, так что вы можете описать точные конические сечения *, поскольку они представляют особый интерес в технике.

Сначала давайте начнем с простой терминологии NURB Spline. Обоснование этих кривых немного отличается от обоснования Безье. Сначала есть понятие промежутка. Промежуток будет примерно эквивалентен целому сплайну Безье, за исключением того, что в nurbs вы можете иметь любое количество промежутков.

введите описание изображения здесь

Изображение 1 : один кубический диапазон NURBS. Это немного нетипично по формулировке

Каждый интервал образован степенью кривой + 1 контрольная точка **. Каждая кривая может состоять из любого количества точек. Каждый последующий интервал повторно использует точки из предыдущего интервала, отбрасывая одну точку и беря еще одну точку в списке. Так что сделать более сложные кривые так же просто, как просто добавить больше точек к кривой.

ПРИМЕЧАНИЕ . Кривые изображений немного нетипично параметризованы, поэтому я объясню, что это означает в следующем разделе. Когда я принимаю концепцию узлов. Это просто более простой способ объяснить, как кривые склеиваются.

введите описание изображения здесь

Изображение 2 : 2 кубических пролета друг за другом, каждый пролёт использует 4 балла. вместе они образуют одну кривую. Они делят большинство очков друг с другом.

К настоящему времени мы, вероятно, ответили на 2 вопроса о добавлении сложности. Но я хотел бы добавить, что эта схема обеспечивает лучшую непрерывность, чем кривая Безье. Кроме того, вы можете сделать массив точек, который образует корпус циклическим. Формирование замкнутой кривой.

введите описание изображения здесь

Изображение 3 : Закрытая кубическая поверхность NURBS имеет столько же пролетов, сколько и точек. Каждый цвет - один диапазон.

Параметризация

Вплоть до этого момента можно было просто сказать, что объединение промежутков - это трюк, такой же, как «сшивание» кривых Безье. Но есть разница. Кривая параметризована по своей длине. Таким образом, кривые не являются отдельными, они не интерполируют формы от 0 до 1 на каждом отрезке, как это делает Безье. Вместо этого базовая кривая имеет настраиваемый диапазон параметров. Параметр хранится в так называемом узле, и каждый узел может иметь произвольное возрастающее значение в последовательности. Таким образом, вы можете параметризовать весь диапазон кривых u в диапазоне от 0 до 1 или от 0 до 12. Параметризация также не обязательно должна быть равномерной.

Эта параметризация изменяет форму кривой. Почему это было бы полезно? Ну, вы можете отрегулировать натяжение вдоль кривой для одного. Или вы можете закодировать длину кривой в параметр U. Одно из специфических применений - заставить кривую NURBS вести себя как кривая Безье полностью или частично (например, по концам, но не посередине).

введите описание изображения здесь

Изображение 4 : Одинаковые точки разных последовательностей узлов. Зеленая кривая NURBS соответствует кривой Безье, которая имеет диапазон параметров 0-2 вместо 0-1

Итак, что за узлы? Это просто диапазоны базовых функций. Поскольку кубический b-сплайн с 4 точками имеет 4 интерполирующие функции, ему нужно 8 узлов. Только области, где 3 функции перекрываются и суммируют до 1,0, могут быть нарисованы.

введите описание изображения здесь

Рисунок 5 : 2 различные базисные функции, похожая на Безье и унифицированная параметризация сегмента, разбросанные до диапазона 0-1.

И теперь мы в основном описали ответ на вопрос 1. Диапазон не определен, вы можете растянуть базовые функции по своему усмотрению. И, наконец, вектор узлов просто создает диапазоны параметров для базисных функций. Есть еще одна вещь, которая управляет формой кривой, и это - вектор веса. Но это другая история, которая будет рассказана в другом месте.


* Это рациональное в этом случае означает, что кривая NURBS не обязательно должна быть полиномом, так как вы не можете описать окружность полиномами.

** Можно определить другие типы точек.

joojaa
источник
Что касается (*), кривые Безье имеют ту же проблему. Проблема в том, что кривые (в обоих случаях) определяются как x = f (t), y = f (t). Однако вы также можете определить одномерную / явную / одномерную кривую (опять же, в обоих случаях) как y = f (x), используя x вместо t. В случае рациональных кривых, вместо того, чтобы представлять конические сечения, вы можете представить синус и косинус (и многое другое, конечно). NURBS / b-сплайны не являются особенными в этом отношении.
Алан Вулф
Я думаю, что ваше утверждение о длине неверно (работает только с линейными функциями?), И я не уверен, как вычисления длины должны вписываться в ваше объяснение (хорошая информация, которую вы дали, просто говорите!)
Алан Вулф
@AlanWolfe все равно удалено
joojaa
Самое классное! Большое спасибо, очень хорошее объяснение!
Ecir Hana
Опечатка возможно? «Вместо этого базовая поверхность имеет настраиваемый диапазон параметров. Параметр хранится в чем-то, называемом узлом, и каждый узел может иметь произвольное значение, которое больше, чем следующий». -> «Вместо этого базовая кривая имеет настраиваемый диапазон параметров. Параметр сохраняется в чем-то, называемом узлом, и каждый узел может иметь произвольное значение, которое больше, чем предыдущий .» Кстати, не могли бы вы уточнить, что вы подразумеваете под "УФ-диапазоном"? «УФ» подразумевает 2D ..?
Ecir Hana