Аппроксимация β-сплайном

Разработка NURBS (Неоднородный рациональный β-сплайн, NURBS (англ. Non-uniform rational β-spline, читается «нурбс»)) началась в 1950-х годах инженерами, которым требовалось математически точное представление поверхностей произвольной формы (таких как корпуса кораблей, самолётов, космических аппаратов и автомобилей) с возможностью точного копирования и воспроизведения всякий раз, когда это нужно. До появления представлений такого рода дизайнер создавал единичную физическую (материальную) модель, которая и служила эталоном.

Пионером в этих исследованиях были французы Пьер Безье, инженер из компании Рено, и Пол де Кастелье, сотрудник компании Ситроен; работали они независимо друг от друга в одно и то же время. Однако, поскольку Безье опубликовал результаты своей работы, большинство знакомых с компьютерной графикой знают о сплайнах — кривых, преставимых контрольными точками, — по сплайнам Безье; в то время как имя де Кастелье упоминается только рядом с алгоритмами, которые он изобрёл для вычисления параметрических поверхностей. В 1960-х было установлено, что неравномерные рациональные β-сплайны являются обобщением сплайнов Безье, которые могут быть определены как равномерные рациональные β-сплайны.

Поначалу NURBS использовались только в коммерческих CAD-системах для автомобильных компаний. Позднее они стали неотъемлемой частью стандартных пакетов программ для компьютерной графики.

Интерактивная отрисовка кривых и поверхностей NURBS в реальном времени стала впервые доступна на рабочих станциях Silicon Graphics в 1989 году.

Любой более или менее сложный чертеж состоит не только из отрезков прямых линий, окружностей и их дуг, но также и из набора кривых линий. Гладкие кривые удобно строить при помощи метода сглаживания кривой типа β-сплайна. β-сплайн — это гладкая кривая или, точнее, кривая с непрерывными старшими производными до n-ой, где n — порядок сплайна. Заметим, что линия, составленная из β-сплайнов, не будет проходить точно через заданные точки. Подобную кривую составляют из дуг полиномов третьей степени, так как такой полином обеспечивает необходимую непрерывность.

P0,P1,...,P7 - ключевые точки.
кривая Q3 строится по P0, P1, P2, P3
кривая Q4 строится по P1, P2, P3, P4
...
кривая Q7 строится по P4, P5, P6, P7

Построение сплайна происходит с помощью итерационной процедуры.

x(t) = ((a3t + a2)t + a1)t + a0, для 0 <= t <= 1
y(t) = ((b3t + b2)t + b1)t + b0, для 0 <= t <= 1

a3 = (-xi-1 + 3xi - 3xi+1 + xi+2)/6
a2 = (xi-1 - 2xi + xi+1)/2
a1 = (-xi-1 + xi+1)/2
a0 = (xi-1 + 4xi+ xi+1)/6

b3 = (-yi-1 + 3yi - 3yi+1 + yi+2)/6
b2 = (yi-1 - 2yi + yi+1)/2
b1 = (-yi-1 + yi+1)/2
b0 = (yi-1 + 4yi+ yi+1)/6

Или в матричном виде:
$$ Q(t)=T·M·G,$$
где

Свойства:

  • Изменение одной опорной точки влияет только на локальное поведение кривой, а не на глобальное, как в случае кривых Безье.
  • Когда количество узлов совпадает со степенью сплайна, β-сплайн вырождается в кривую Безье.