Одномерный сплайн f задан его не уменьшающейся
последовательностью узла t
и его содействующей последовательностью B-сплайна a
. Смотрите Многомерные Сплайны продукта Tensor для обсуждения многомерных сплайнов. Коэффициенты могут быть (столбец-) векторами, матрицами, даже массивы ND. Когда коэффициенты являются 2 векторами или 3 векторами, f является кривой в R2 или R3, и коэффициенты называются
контрольными точками для кривой.
Примерно говоря, такой сплайн является кусочным полиномом определенного порядка и с пропусками t
(i). Но узлы отличаются от перерывов, которые они могут быть повторены, т.е. t
не должен строго увеличиваться. Получившаяся кратность узла управляет гладкостью сплайна через узлы, как детализировано ниже.
С [d,n] = size(a)
, and n+k = length(t)
, сплайн имеет порядок
k
. Это означает, что его полиномиальные части имеют степень < k
. Например, кубический сплайн является сплайном порядка 4, потому что требуется четыре коэффициента, чтобы задать кубический полином.
Эти четыре элемента, t, a, n, и k, составляют B-форму сплайна f.
Это означает, явным образом, это
с Bi,k=B(·|t(i:i+k)) i th B-сплайн порядка k
для данной последовательности узла t
, т.е. B-сплайн с узлами t(i),...,t(i+k). Основной интервал этой B-формы является интервалом [t(1)..t(n+k)]. Это - интервал по умолчанию, на котором сплайн в B-форме построен по команде fnplt
. Обратите внимание на то, что сплайн в B-форме является нулем вне своего основного интервала, в то время как после преобразования в ppform через fn2fm
это обычно - не случай, потому что вне его основного интервала кусочный полином задан расширением его первой или последней полиномиальной части. В частности, функция в B-форме может иметь скачки в значении и/или одной из его производной не только через его внутренние узлы, т.е. через t (i) с t(1)<t(i)<t(n+k), но также и через его узлы конца, t (1) и t (n +k).
Стандартными блоками для B-формы сплайна являются B-сплайны. B-сплайн Порядка 4 и эти Четыре Кубических полинома, из Которых Это Сделано, показывают изображение такого B-сплайна, того с последовательностью узла [0 1.5 2.3 4 5]
, следовательно порядка 4, вместе с полиномами, части которых составляют B-сплайн. Информация для того изображения могла быть сгенерирована командой
Подводить итог: B-сплайн с узлами t (i) ≤ ···· ≤ t (i +k) положительно относительно интервала (t (i).. t (i +k)), и нуль вне того интервала. Это - кусочный полином порядка k
с пропусками на сайтах t (i)..., t (i +k). Эти узлы могут совпасть, и точная кратность управляет гладкостью, к которой две полиномиальных части присоединяются там.
Сокращение
один из нескольких способов указать, что f является сплайном порядка k
с последовательностью узла t
, т.е. линейная комбинация B-сплайнов порядка k
для последовательности узла t
.
Предостережение: термин B-сплайн был конфискован сообществом Автоматизированного геометрического проекта (CAGD), чтобы означать то, что называется здесь сплайном в B-форме с несчастным результатом, который, в любом обсуждении между теоретиками математиков/приближения и людьми в CAGD, теперь всегда нужно проверять, в каком смысле термин используется.
Правило
свяжите кратность узлом + кратность условия = порядок
Все B-сплайны Третьего Порядка для определенной последовательности узла с различной кратностью узла
Например, для B-сплайна порядка 3, простой узел означал бы два условия гладкости, т.е. непрерывность функциональной и первой производной, в то время как двойной узел только оставит одно условие гладкости, т.е. только непрерывность, и тройной узел не оставил бы условия гладкости, т.е. даже функция будет прерывиста.
Все B-сплайны Третьего Порядка для Определенной Последовательности Узла с Различной Кратностью Узла показывают изображение всего третьего порядка B-сплайны для определенной таинственной последовательности узла t
. Пропуски обозначаются вертикальными строками. Для каждого пропуска попытайтесь определить его кратность в последовательности узла (это 1,2,1,1,3), а также его кратность как узел в каждом из B-сплайнов. Например, второй пропуск имеет кратность 2, но появляется только с кратностью 1 в третьем B-сплайне и нисколько, т.е. с кратностью 0, в последних двух B-сплайнах. Обратите внимание на то, что только один из показанных B-сплайнов имеет все свои простые узлы. Это - единственное, имеющее три различных нетривиальных полиномиальных части. Обратите внимание также, что можно сказать кратность последовательности узла узла количеством B-сплайнов, ненулевая часть которых начинается или заканчивается там. Изображение сгенерировано следующими операторами MATLAB®, которые используют команду spcol
от этого тулбокса, чтобы сгенерировать значения функции всех этих B-сплайнов в прекрасном сетевом x
.
t=[0,1,1,3,4,6,6,6]; x=linspace(-1,7,81); c=spcol(t,3,x);[l,m]=size(c); c=c+ones(l,1)*[0:m-1]; axis([-1 7 0 m]); hold on for tt=t, plot([tt tt],[0 m],'-'), end plot(x,c,'linew',2), hold off, axis off
Далее проиллюстрированные примеры обеспечиваются примером” Построение и работу с B-формой”. Можно также использовать графический интерфейс пользователя bspligui
, чтобы изучить зависимость B-сплайна на его узлах экспериментально.
Правило “кратность узла + кратность условия = порядок” имеет следующее последствие для процесса выбора последовательности узла для B-формы аппроксимирующей функции сплайна. Предположим сплайн, s должен иметь порядок k с основным интервалом [a.. b], и с внутренними пропусками ξ2 <·· · <ξl. Предположим, далее, что в ξi сплайн должен удовлетворить μi условия гладкости, т.е.
Затем соответствующая последовательность узла t должна содержать пропуск ξi точно k – μi времена, i =2..., l. Кроме того, это должно содержать эти две конечных точки, a и b, основного интервала точно времена k. Это последнее требование может быть ослаблено, но стало стандартным. С этим выбором существует точно один способ записать каждому сплайну s со свойствами, описанными как взвешенная сумма B-сплайнов порядка k с узлами сегмент последовательности узла t. Это - причина B в B-сплайне: B-сплайны, в терминологии Шеенберга, основных сплайнах.
Например, если вы хотите сгенерировать B-форму кубического сплайна на интервале [1.. 3], с внутренними пропусками 1.5, 1.8, 2.6, и с двумя непрерывными производными, затем следующее было бы соответствующей последовательностью узла:
t = [1, 1, 1, 1, 1.5, 1.8, 2.6, 3, 3, 3, 3];
Это предоставляется augknt([1, 1.5, 1.8, 2.6, 3], 4)
. Если бы вы хотели, вместо этого, чтобы допускать угол в 1,8, т.е. возможный скачок в первой производной там, вы утроили бы узел 1.8, т.е. использование
t = [1, 1, 1, 1, 1.5, 1.8, 1.8, 1.8, 2.6, 3, 3, 3, 3];
и это обеспечивается оператором
t = augknt([1, 1.5, 1.8, 2.6, 3], 4, [1, 3, 1] );