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 не обязательно должна быть полиномом, так как вы не можете описать окружность полиномами.
** Можно определить другие типы точек.