B-форма

Введение в B-форму

Одномерный сплайн f задаётся его неразрешающей последовательностью узлов t и своей последовательностью B-сплайн коэффициентов a. Обсуждение многомерных сплайнов смотрите в разделе «Многомерные сплайны продукта». Коэффициенты могут быть (column-) векторами, матрицами, даже ND-массивами. Когда коэффициенты являются 2-векторами или 3-векторами, f является кривой в R2 или R3 и коэффициенты называются контрольными точками для кривой.

Грубо говоря, такой сплайн является кусочно-полиномиальным определенного порядка и с пропусками t(<reservedrangesplaceholder1>). Но узлы отличаются от пропусков в том, что они могут повторяться, то есть t не обязательно строго увеличивать. Получившиеся узловые кратности управляют плавностью сплайна через узлы, как подробно описано ниже.

С [d,n] = size(a), и n+k = length(t)сплайн имеет порядок k. Это означает, что его полиномиальные части имеют степень < k. Для примера кубический сплайн является сплайном порядка 4, потому что для задания кубического полинома требуется четыре коэффициента.

Определение B-формы

Эти четыре элемента, t, a, n и k, составляют B-форму сплайн- f.

Это означает, явно, что

f=i=1nBi,ka(:,i)

с Bi,k=B(·|t(i:i+k)) i 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-формы сплайна базовых блоков B-сплайны. A B-сплайн порядка 4 и четыре кубических полиномов, из которых он сделан, показывают картину такого B-сплайна, того самого, с последовательностью узлов [0 1.5 2.3 4 5], следовательно, порядка 4, вместе с полиномами, кусочки которых составляют B-сплайн. Информация для этого рисунка может быть сгенерирована командой

bspline([0 1.5 2.3 4 5])

A B-сплайн порядка 4 и четыре кубических полиномов, из которых он сделан

Результирующие: B-сплайн с узлами t (i) ≤··· ≤ t (i + k) положителен на интервале (t (i).. t (i + k)) и равен нулю за пределами этого интервала. Это кусочный полином порядка k с пропусков на сайтах t (i),..., t (i + k). Эти узлы могут совпадать, и точная кратность управляет плавностью, с которой две полиномиальные части соединяются там.

Определение B-сплайнов

Стенография

fSk,t

является одним из нескольких способов указать, что f является сплайном порядка k с последовательностью узлов t, т.е. линейная комбинация B-сплайнов порядка k для последовательности узлов t.

Слово осторожности: Термин B-сплайн был экспроприирован сообществом Computer-Aided Geometric Design (CAGD), чтобы означать, что здесь называется сплайн в B-форме, с несчастным результатом, что в любом обсуждении между математиками/теоретиками аппроксимации и людьми в CAGD, теперь всегда нужно проверить в каком смысле

B-сплайн узел Кратности

Правило такое

кратность узла + кратность условия = порядок

Все 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-формы

Правило «кратность узлов + условие кратность = порядок» имеет следующее следствие для процесса выбора последовательности узлов для B-формы сплайн. Предположим, что сплайн s должен иметь порядок <reservedrangesplaceholder3> с основным интервалом [a. b], и с внутренними пропусками ξ2 <·· · <ξ <reservedrangesplaceholder0>. Предположим , что, кроме того, при, сплайн является удовлетворение условий гладкости, то есть,

jumpξiDjs:=Djs(ξi+)Djs(ξi)=0,0j<μi,i=2,...,l

Затем соответствующие t последовательности узлов должны содержать пропуск в точности 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] );

Похожие темы