Основы компьютерной графики


Кубические сплайны


Рассмотрим задачу проведения гладких кривых по заданным граничным точкам, или задачу интерполяции. Поскольку через две точки можно провести сколь угодно много гладких кривых, то для решения этой задачи необходимо ограничить класс функций, которые будут определять искомую кривую. Математическими сплайнами называют функции, используемые для аппроксимации кривых. Важным их свойством является простота вычислений. На практике часто используют сплайны вида полиномов третьей степени. С их помощью довольно удобно проводить кривые, которые интуитивно соответствуют человеческому субъективному понятию гладкости. Термин “сплайн” происходит от английского spline – что означает  гибкую полоску стали, которую применяли чертежники для проведения плавных кривых, например, для построения обводов кораблей или самолетов.

Рассмотрим в начале сплайновую функцию для построения графика функции одной переменной. Пусть на плоскости задана последовательность точек

Кубические сплайны
,
Кубические сплайны
, причем
Кубические сплайны
.  Определим искомую функцию
Кубические сплайны
, причем поставим два условия:

1)

Функция должна проходить через все заданные точки:

Кубические сплайны
,
Кубические сплайны
.

2)    Функция должна быть дважды непрерывно дифференцируема, то есть иметь непрерывную вторую производную на всем отрезке

Кубические сплайны
.

На каждом из отрезков

Кубические сплайны
,
Кубические сплайны
 будем искать нашу функцию в виде полинома третьей степени:

Кубические сплайны
.

Кубические сплайны

Рис. 40. Сплайновая функция.

Задача построения полинома сводится к нахождению коэффициентов

Кубические сплайны
. Поскольку для каждого из отрезков
Кубические сплайны
 необходимо найти 4 коэффициента
Кубические сплайны
, то всего количество искомых коэффициентов будет
Кубические сплайны
. Для нахождения всех коэффициентов определим соответствующее количество уравнений. Первые
Кубические сплайны
 уравнений получаем из условий совпадения значений функции во внутренних узлах
Кубические сплайны
,
Кубические сплайны
. Следующие
Кубические сплайны
 уравнений получаем аналогично из условий совпадения значений первых и вторых производных во внутренних узлах. Вместе с первым условием получаем
Кубические сплайны
 уравнений. Недостающие два уравнения можно получить заданием значений первых производных в концевых точках отрезка
Кубические сплайны
. Так могут быть заданы граничные условия.


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

Кубические сплайны


Координаты точек на кривой описываются вектором
Кубические сплайны
, а три производные задают координаты соответствующего касательного вектора в точке. Например, для координаты
Кубические сплайны
:

Кубические сплайны
 .

Одним из способов задания параметрического кубического сплайна является указание координат начальной и конечной точек, а также векторов  касательных в них. Такой способ задания называется формой Эрмита. Обозначим концевые точки
Кубические сплайны
 и
Кубические сплайны
, а касательные векторы в них
Кубические сплайны
 и
Кубические сплайны
. Индексы выбраны таким образом с учетом дальнейшего изложения.

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

Кубические сплайны
,
Кубические сплайны
,
Кубические сплайны
,
Кубические сплайны
                  (*)

Перепишем выражение для
Кубические сплайны
в векторном виде:

Кубические сплайны
Кубические сплайны
.

Обозначим вектор строку
Кубические сплайны
 и вектор столбец коэффициентов
Кубические сплайны
Кубические сплайны
, тогда
Кубические сплайны
 .

Из (*) следует, что
Кубические сплайны
,
Кубические сплайны
. Для касательных
Кубические сплайны
,
Кубические сплайны


Кубические сплайны
 ,

Кубические сплайны
 . Отсюда получаем векторно-матричное уравнение:

Кубические сплайны
.

Эта система решается относительно
Кубические сплайны
 нахождением обратной матрицы размером
Кубические сплайны
.

Кубические сплайны
 .

Здесь
Кубические сплайны
 - эрмитова матрица,
Кубические сплайны
 - геометрический вектор Эрмита. Подставим выражение  
Кубические сплайны
 для нахождения
Кубические сплайны
:
Кубические сплайны
. Аналогично для остальных координат:
Кубические сплайны
,
Кубические сплайны
.

Выпишем в явном виде формулы для вычисления координат точек сплайна. Так как
Кубические сплайны
, то умножая справа на
Кубические сплайны
, получаем:

Кубические сплайны
Кубические сплайны
.

Четыре функции в скобках называются функциями сопряжения.

Форму кривой, заданной в форме Эрмита, легко изменять если учитывать, что направление вектора касательной задает начальное направление, а модуль вектора касательной задает степень вытянутости кривой в направлении этого вектора, как показано на рис. 41.

Кубические сплайны


Рис. 41. Параметрический сплайн в форме Эрмита.


Вытянутость кривой вправо обеспечивается тем, что
Кубические сплайны
.

Рассмотрим форму Безье, которая отличается от формы Эрмита способом задания граничных условий, а именно, вместо векторов
Кубические сплайны
 и
Кубические сплайны
вводятся точки (и соответствующие им радиус векторы)
Кубические сплайны
 и
Кубические сплайны
, как показано на рис.42, такие что выполняются условия:
Кубические сплайны
 и
Кубические сплайны
 .

Кубические сплайны


Рис. 42. Параметрический сплайн в форме Безье.

Переход от формы Эрмита к форме Безье осуществляется преобразованием:

Кубические сплайны
 ,       (*)

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

Кубические сплайны
 .

Полезным свойством сплайнов в форме Безье является то что кривая всегда лежит внутри выпуклой оболочки, образованной четырехугольником
Кубические сплайны
. Это свойство можно доказать, пользуясь тем, что в выражении (*) коэффициенты принимают значения от 0 до 1 и их сумма равна единице.

Заметим, что матрица вида

Кубические сплайны
  - называется матрицей Безье.






Содержание раздела