Km ■■
|
■ Km_2(t)
|
NU-M
|
Nj(t)
|
N)+M ..
|
■ N)+m-2(t)
|
|
Nj2{t)
|
Nj+\(t) ..
|
■ N}+m_2(t)
|
|
Njm(t)
|
NjX\t)
|
|
|
Но при любом параметре t среди всех 5-сплайнов нулевого порядка (1.56) только один отличен от нуля, поэтому для вычисления радиуса- вектора 5-кривой используется следующая схема. По значению параметра t из условия tj < t < ti+1 определяется номер i отличного от нуля 5-сплайна нулевого порядка и вычисляется значение ненормированного 5-сплайна
Л/Р(0 = —!— ■ (1.62)
tM-UДалее, используя рекуррентное соотношение Кокса—Де Бура:
M?(t) = Г'+т+'~{ + — (1.63)
1 —t 1 —t
*j+m+1 * j *j+m+1 /
п
|
|
M,°(t)
|
|
MUt)
|
Mj(t)
|
Mh(t)
|
МШ
|
MHn
|
Mi-i'(t)
|
M”\l{t)
|
M?-\t)
|
Mut)
|
мрм
|
M/n(t)
|
оследовательно вычисляются все отличные от нуля при данном параметре t ненормированные 5-сплайны до т-го порядка включительно (порядок 5-сплайна возрастает сверху вниз, а номера узлов возрастают слева направо):
(0 •
М£т+м .
Данная треугольная табл!
(1.62) известен элемент первой строки, а каждый элемент следующей строки можно построить по двум соседним элементам в предыдущей строке с помощью (1.63). При вычислении крайних элементов каждой строки используется тот факт, что один из элементов в предыдущей строке, отсутствующий в таблице, равен нулю. Далее 5-сплайны нормируются
Njm(t) = (tJ+m+i - tj) Mjm(t)J =i-m,i-m+ 1, ..., i, и подставляются в формулу (1.60), которая для t, < t < tM примет вид
I NJ(t)WjVj
Г(/) = .
X NJ(t)Wj
j=i—m
С помощью соотношений (1.58) может проводиться одновременное вычисление 5-сплайнов и их производных, что используется в итерационных процессах пересечения кривых.
Пусть для значения параметра t найден номер i узла t, из условия t, <
t < tM. При данном параметре t отличными от нуля будут 5-сплайны: Nf_m(t), ^V"m+i(?),N'f_\(t), Nim(t). Продифференцируем числитель правой части равенства (1.60) с учетом (1.58) и получим
d(wr) d v1 \rm ^ dN j
dt dt
t ± Ntf WjVj
j=i-m *j+m V j=i-m *j+m+1 ‘y'+l
j
- m
^i-mP i-m , yy. V Л/ m-1 Wj*
=i-m
= mN^-J ‘rbn.Vi-m + m £ N„
j=i-m+\ tj+m
m-1 J-irJ tj+m ~tj
i+m+1 /+1 j=i-m+1
I *
-mN
m
/+1
t.
»-i wiVi
е
,
,(D .
7= 1, 2, ..., n.
В равенстве (1.64) использовались свойства Wimml(/) = 0 и A//Ji'(/) = О при tj < t < tM. Равенство (1.64) показывает, что первая производная /
функции Z NfwjPj представляет собой аналогичную функцию
Z Л'” ‘ру *, порядок и число слагаемых которой на единицу меньше.
j=i-m+1
Продолжив дифференцирование, можно найти производную требуемого порядка для числителя выражения (1.60)
dk(wr) _ dk ^ ~
^
(1.65)
dtk dtk
N^wjpj =£iVy-* р<*>,
{j=0 У J=
k
к
рГ^-р^г1»
Ij+m+l-k ~~ V
где р\ ' = (т + \-к)
= 1,2, т, j = к, к + 1, ..., п
,
Р/0) = и>уРг
Для производных знаменателя (1.60) получим выражение, аналогичное (1.65),
, / \
d Ш d \ \тт... V4 at т-1с...(к) ^ j 66)
Z
dtk dtk
NJ'Wj = X NJ'~kwf), / J=
k
tj+m+l-k tj
■, к = 1, 2, ..., m,j = k, к + 1, ..., и,
где wy’ =(m + \~k)-
w(k-\)
w
j-1
и;/» = Wj.
Радиус-вектор 5-кривой (1.60) вычисляется как частное от деления двух функций параметра кривой /, поэтому при вычислении производной 5-кривой правую часть (1.60) следует рассматривать как сложную функцию, первая производная которой равна
dr__d_( 1 г/(цд~) шг dw
dt dt\w) w dt w2 dt'
(1.67)
где wr = ’^jNj'{t)WjPj — числитель правой части равенства (1.60);
7=0
w^Nf^Wj — знаменатель правой части равенства (1.60);
=
^ л/я-1 “'Л*/ " “'y-iPy-i dw
= my Ы? 4t) 7 y -—-— — производная числителя; — =
,t! ' dt
" . W,-Wj_ 1 = m2_lNj' (0 - производная знаменателя.
/=1 tj+m—tj
Аналогично вычисляются производные fi-кривой более высокого порядка:
d(k)r _ (wr(t) dt{k) \ w(t) ,
Следует заметить, что радиус-вектор точки и ее вес (ют или и>,р,) в формулах ^-кривой выступают как единое целое.
Алгоритм Де Бура
Преобразуем числитель выражения (1.60), используя формулу (1.55), следующим образом:
j=i-m+\ tj+m * j
NjWj-tPj-i +
Do'stlaringiz bilan baham: |