Поиск

NURBS - Никто не понимает что такое рациональные б-сплайны.


Tanker aft ship main surface.
Tanker aft ship main surface.

Так в шутку математики переводили аббревиатуру NURBS (Non-uniform rational B-spline) в самом начале использования этого типа кривых и поверхностей.

Увы, это шутка, которая недалеко от правды. Несмотря на то, что NURBS является стандартом де-факто для моделирования поверхностей более тридцати лет, не многие инженеры понимают, как использовать этот замечательный инструмент. В своей практике мне часто приходится использовать модели поверхностей из других систем и конструкторов. Каждый раз нахожу те или иные ошибки или просто заблуждения конструкторов, которые делают модели поверхности корпуса на начальных этапах проекта. Математические свойства NURBS разнообразны и позволяют достичь одной и той же формы различными способами. Иногда это сбивает дизайнера с толку. В конечном итоге от инженера не требуется глубоких математических знаний при использовании NURBS для моделирования поверхностей. Я постараюсь кратко сформулировать геометрический смысл NURBS и его свойства. Рассмотрим кривые NURBS, поскольку они дают общее представление о свойствах NURBS.

Геометрия любой кривой NURBS определяется следующими элементами:

- контрольный многоугольник с весами в каждой точке,

- степень кривой,

- узловой вектор,

- узлы кривой.

Как правило, кривая NURBS состоит из нескольких сегментов сплайна, каждый из которых определяется как набор точек контрольного многоугольника. Следовательно, форма полиномиального сегмента будет зависеть только от нескольких контрольных точек на сегменте кривой. Это дает одно из самых интересных свойств NURBS - локальность изменения формы кривой.


Example of local changes of NURBS.
Пример локального изменения формы NURBS кривой при изменении положения одной контрольной точки.

Контрольный многоугольник.

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

- Кривая проходит через начальную и конечную точки многоугольника. Я не рассматриваю здесь частные случаи определения узлового вектора и случай циклической замкнутой кривой,

- Векторы, образованные конечными точками и смежные с ними, определяют касательные в конечных точках кривой,

- Выпуклый контрольный многоугольник гарантирует выпуклую форму кривой,

- Последовательность точек многоугольника, принадлежащих одной прямой, может дать математически точный прямолинейный участок кривой,

- Изменение положения одной точки контрольного многоугольника приводит к изменению части кривой (в общем случае). Форма линии и ее параметризация сильно зависят от расположения точек контрольного многоугольника. Плавное и равномерное распределение точек контрольного многоугольника придаст кривой NURBS гладкую и эстетичную форму.


Nurbs curve
NURBS кривая


Отдельно стоит отметить, что каждой точке контрольного многоугольника можно присвоить вес. Чем выше значение веса, тем ближе кривая к этой точке. Вес в точках определяет, насколько сильно та или иная вершина влияет на форму кривой. В этом случае, независимо от того, насколько выше значение веса в промежуточной точке контрольного многоугольника, кривая никогда точно не пройдет через эту точку. Фактически, разница в весе точек контрольного многоугольника и есть то, чем NURBS отличается от B-сплайна. В случае B-сплайна все веса одинаковы. Использование весов позволяет, например, в точности повторять форму круга. Если все веса многоугольника одинаковы, это можно сделать только приблизительно. Возможно, использование весов может уменьшить количество точек в описании формы кривой, но, на мой взгляд, это совершенно неочевидное преимущество. И, как показывает опыт, на большинстве смоделированных поверхностей кораблестроения веса не используются.



Changing of middle point weight.
Изменение формы кривой при иизменении веса в средней точке.

Степень кривой.

Как отмечалось выше, NURBS - это кривая, состоящая из участков параметрических сплайнов заданной степени. Степень, как параметр кривой NURBS, влияет на математическую гладкость кривой (не путать с эстетической гладкостью), степень отстояния от контрольного многоугольника, и область изменения кривой при изменении положение одной точки контрольного многоугольника. Не вдаваясь в математические подробности, мы можем сказать - чем выше степень кривой, тем дальше кривая отстоит от точек многоугольника и тем сложнее добиться требуемой формы. Итак, если используется первая степень, то кривая полностью повторяет контрольный многоугольник. По мере увеличения степени кривая становится более плавной и удаляется от контрольного многоугольника. Чем выше степень кривой, тем выше математическая гладкость. На мой взгляд, оптимальная степень описания судостроительных кривых - третья степень. Это сохраняет гладкость касательной вдоль кривой и непрерывность кривизны. Использование гстепеней выше третьей усложняет моделирование и не обеспечивает требуемой локальности при изменении формы кривой.


Here is an example of different spline degree with same control polygon.
Пример разной степени сплайн кривых при одном и том же контрольном многоугольнике.