Поиск

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.
Пример разной степени сплайн кривых при одном и том же контрольном многоугольнике.


Узловой вектор.

Узловой вектор - самая скрытая и неочевидная составляющая NURBS. Узловой вектор определяет разбиение кривой на участки и, соответственно, значение параметра кривой на границах участков. Параметрические длины интервалов также определяют степень влияния точек контрольного многоугольника на участки кривой. Дублирование значений параметра узлового вектора также отвечает за граничные условия в точках стыковки участков кривой. Пример вектора узлов для NURBS-кривой третьей степени с контрольным многоугольником, состоящим из шести точек - [0,0,0,0,1,2,3,3,3,3]. Параметр кривой изменяется в интервале [0-3]. Кривая состоит из трех участков [0-1], [1-2], [2-3]. Четырехкратное дублирование параметра в начале и конце вектора узлов указывает на то, что кривая начинается и заканчивается в конечных точках контрольного многоугольника. Обратите внимание, что все участки имеют одинаковую параметрическую длину и равномерно распределены по кривой. Это дает равномерный эффект точек контрольного многоугольника на форму кривой. Если вектор узлов выглядит так - [0,0,0,0,1,1,1,3,3,3,3] форма кривой будет другой, влияние точек контрольного многоугольника будет неравномерным. Управлять формой такой кривой намного сложнее. Во многих САПР используется вектор узлов с равномерным разбиением кривой по параметрам, и конструктор, как правило, не имеет возможности его изменить.


Differences in knots vectors how it is described above.
Различия в узловом векторе приводят к различию в кривизне кривой.

Узлы кривой.

Начальная и конечная точки участков кривой называются узлами. Значение параметра кривой в узлах совпадает со значением параметра вектора узлов. Узлы показывают границы участков кривой. Это позволяет определить, например, границы прямолинейного отрезка, если часть контрольных точек многоугольника расположена на одной прямой.


Straight area of the curve started from knot.
Прямолинейный участок кривой начинается в узле.

Подводя итог вышесказанному, NURBS-кривые и поверхности со степенью не выше 3-й и с равномерным распределением сечений по параметру кривой лучше всего подходят для моделирования поверхности корпуса. Это лишь небольшое объяснение общего представления о NURBS. Если вы хотите изучить его более подробно, лучшая книга для этого -"The NURBS book"

261 просмотр0 комментариев

Недавние посты

Смотреть все