ПРИКЛАДНАЯ МАТЕМАТИКА И МЕХАНИКА
Вестник Сыктывкарского университета. Серия 1: Математика. Механика. Информатика. Выпуск 1 (21). 2016
УДК 519.652
ИНТЕРПОЛЯЦИЯ С ПОМОЩЬЮ В-СПЛАЙНОВЫХ
КРИВЫХ
Н. О. Котелина
Статья посвящена задаче интерполяции точек при помощи B-сплайновых кривых. Рассматриваются методы глобальной интерполяции, при которых составляется и решается система линейных уравнений.
Ключевые слова: NURBS, B-сплайн кривые, интерполяция.
1. Определение NURBS
Пусть заданы натуральные L, m. Рассмотрим узловой вектор T = (t0,... , tL+m+1), где ti G R и ti < ti+1, i G 0... L + m. Тогда определим базисные функции Nk;P(t) степени p рекурсивно: при p =0 это просто постоянные единичные функции в пределах своего диапазона:
АТ I 1) tk < t < tfc+i,
Nk,o = \ ¡л
О, иначе.
При этом к Е 0 : Ь + т.
Прир > 0, р < т определим В-сплайн функции (Щ^^^+О)1- через функции (р — 1)-й степени:
^М*) = ^р-^) + 1к+Р+1 — * (1)
*к+р — *к *к+р+1 — *к+1
Будем считать в случае, когда *к+р = *к или *к+Р+1 = *к+1, что соответствующее слагаемое в (1) отсутствует.
Пусть есть набор полюсов (Рг, г = 0,... , Ь} и весов (ш0,... , 'ь}, где шг > 0, г € 0 : Ь.
© Котелина Н. О., 2016.
Построим стыковочные функции вида
Rk (t) = LWfcNk'm(t) . (2)
Ek=0 WkNk,m(t)
Тогда дробно-рациональная B-сплайновая кривая степени m задается следующим образом [1] - [4]:
L
P (t) = Y, Pk Rk (t)- (3)
k=0
Поскольку узловой вектор T обычно берётся неравномерный, т. е. узлы являются неравноотстоящими, то кривая (3) называется NURBS-кривой, где аббревиатура NURBS означает non-uniform rational basis spline (неравномерный рациональный базисный сплайн).
При этом если все веса будут равны между собой, то по свойствам базисных функций [1, с. 57] получаем кусочно-полиномиальную B-сплайновую кривую степени m:
P (t)= £ JLk У' = £ Pk Nkm(t). (4)
k=0 ^k=0 iVk,m(t) k=0
2. Интерполяция с помощью Б-сплайновых кривых
Пусть есть набор точек г = 0,... ,Ь}. Построим кусочно-по-
линомиальную В-сплайновую кривую С порядка р +1 (степени р), которая проходит через эти точки [1]. Для этого найдём полюса {Рк}ь=0. Сопоставим каждой точке Qi некоторое значение параметра щ £ [0, 1] и подберём соответствующий узловой вектор и = {и0,...,ит}, где т = Ь + р +1. Получим систему из Ь + 1 уравнения:
ь
Qi = С (щ) = Рк Щр(щ), г = 0,...,Ь. (5)
к=0
Следуя [1, с. 364], решим систему относительно точек Рк, к £ 0,... , Ь. Для этого выберем значения параметра щ так, как это сделано в [1]. Рассмотрим величину С :
ь
щ = ^ . (6)
i= 1
Тогда положим
и0 = 0, иь = 1, иг = иг-1 +
VII Зг — ^г-1| й
1,...,Ь — 1. (7)
Теперь найдем узлы по следующим формулам:
ио = ■ ■ ■ = ир = з+р-1
«г,
ит—р ' ' ' ит 1,
1
из+Р = р X]
г=3
, Ь — р.
(8)
Этот метод выбора узлов отражает распределение значений параметра «г ( [1, с. 365]).
ПРИМЕР 1. Рассмотрим точки (Зг}2=0 на плоскости (в [3, с.219] используется 18 узлов и параметрический кубический сплайн). Тогда, используя формулы (6), (7), (8) и решая систему (5) относительно полюсов (Рг}2=0, получаем при р = 6 В-сплайновую кривую (рис. 1).
Рис. 1. Интерполяция с помощью В-сплайновой кривой
0
1
3
3. Интерполяция при помощи Б-сплайновой кривой с заданием производных
Рассмотрим теперь интерполяцию, при которой задаются не только исходные точки г = 0,... , Ь, но и производные в этих точках г = 0, . . . , Ь, определяющие направление касательного вектора к искомой кривой [1]. Таким образом, имеем 2(Ь + 1) пар чисел и систему
относительно 2(Ь + 1) полюсов Рк, к = 0,... , 2Ь + 1:
2Ь+1
Qi = С(мц) = ^ Рк к=0 2Ь+1
Бг = С'№)= ^ РкКР(щ).
к=0
(9)
Количество узлов в узловом векторе и равно 2(Ь +1) + р +1. Сами узлы можно вычислять по формулам, аналогичным (8), например при р = 3 имеем:
м1 2м1 + и2 и1 + 2и2
и = {0, 0,0, 0,—,
23 Мь-2 + 2мь-1 Ть-1 + 1
3
2
3
, 1,1,1,1}.
Решая систему (9) при р = 3 для точек из Примера 1 при разных значениях полученных умножением на коэффициент к соответствующих векторов, вычисленных для уравнения В-сплайновой кривой С из пункта 2, а в крайних точках заданных приближенно, получаем В-сплайновые кривые, показанные на рис. 2.
(а)
(Ь)
(с)
Рис. 2. Интерполяция В-сплайновой кривой с производными: (а) к = 0.8, (Ь) к = 1.2, (с) к = 1
4. Методы локальной интерполяции
Также существуют методы локальной интерполяции [1, с. 382]. В этом случае по исходному набору точек {Qi, i = 0, строим
сегменты кривых {С^}|=0 таким образом, чтобы точки Qi и Qi+1 были конечными точками сегмента Ci. При этом требуем, например, чтобы выполнялось свойство непрерывности первой производной.
Список литературы
1. Piegl L., Tiller W. The NURBS book. 2nd Edition. New York: Springer-Verlag, 1995 - 1997. 327 р.
2. Голованов Н. Н. Геометрическое моделирование. М.: Изд-во Физико-математической литературы, 2002. 472 с.
3. Завьялов Ю. С. , Квасов Б. И. , Мирошниченко В. Л. Методы сплайн-функций. М.: Наука, 1980. 350 с.
4. Хилл Ф. OpenGL. Программирование компьютерной графики. Для профессионалов. СПб.: Питер, 2002. 1088 с.
СГУ им. Питирима Сорокина Поступила 20.09.2016
Summary
Kotelina N. O Interpolation with B-spline curves
This article deals with the problem of interpolation with polynomial B-spline curves. It examines methods of global interpolation when systems of linear equations are set up and solved. Keywords: NURBS, B-spline curves, interpolation.
References
1. Piegl L., Tiller W. The NURBS book. 2nd Edition. New York: Springer-Verlag, 1995-1997. 327 p.
2. Golovanov N. N. Geometricheskoe modelirovanie (Geometric modeling). Moscow: Izd. Fiz.-Mat. Lit., 2002. 472 p.
3. Zavyalov Y. S. , Kvasov B. I. , Miroshnichenko V. L. Metody splayn-funkcij (Methods of spline functions). Moscow: Nauka, 1980. 350 p.
4. Hill F. OpenGL. Programmirovanie komputernoy grafiki (Computer Graphics Programming). Dlya professionalov. SPb.: Piter, 2002. 1088 p.
Для цитирования: Котелина Н. О. Интерполяция с помощью B-сплайновых кривых // Вестник Сыктывкарского университета. Сер. 1: Математика. Механика. Информатика. 2016. Вып. 1 (21). C. 3-8.
For citation: Kotelina N. O. Interpolation with B-spline curves // Bulletin of Syktyvkar University. Series 1: Mathematics. Mechanics. Informatics. 2016. №1 (21). Pp. 3-8.