Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

МНОГОМЕРНЫЕ_КУБИЧЕСКИЕ_СПЛАЙНЫ

.pdf
Скачиваний:
19
Добавлен:
27.03.2016
Размер:
297 Кб
Скачать
☆

1

Многомерные кубические сплайны

Ханукаев Ю.И. (khan@ptci.ru)

При поддержке РФФИ тема 2-07-90327

 

Одномерный кубический сплайн

 

 

 

 

 

r(u) =r0 R0 (u) + τ0T0 (u) +r1 R1 (u) − τ1T1 (u),

0 ≤u ≤1, ,

(1)

где

R (u) = (1 + 2u)(1 −u)2

,

R (u) = (3 − 2u)u 2 ,

T (u) =u(1 −u)2 ,

 

0

 

 

1

 

 

0

 

T (u) = (1 −u)u 2 и r ,r , τ

0

, τ

1

произвольные

векторы

определяет

1

0

1

 

 

 

 

пространственную параметрическую кривую, которая начинается и кончается соответственно в точках

r(0) =r0 ,

r(1) =r1 .

Кроме того, в

 

τ(0)=τ0

 

 

τ(1)=τ1

 

 

 

 

 

 

 

этих точках касательными к кривой

 

 

 

r(u)

 

 

 

являются векторы

 

 

 

 

 

 

 

 

 

τ(u)

r(1)=r1

τ( 0 ) = ∂r

 

 

= τ0 , τ(1) = ∂r

 

 

= τ1 .

r(0)=r0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

∂u

 

u=0

 

 

 

 

 

∂u

 

u=1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Это свойство позволяет строить гладкую

 

 

 

 

 

 

кривую, стыкуя сплайны типа (1).

 

 

 

 

 

 

 

 

В промежуточных точках вектор касательной определяется выражением

τ(u) =

∂r(u)

 

′

′

′

(u) − τ

 

′

(2)

 

 

 

 

 

 

 

 

∂u

=r0 R0 (u) +

τ0T0

(u)

+ r1 R1

1T1 (u)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

где R0′(u) =

∂R0 (u)

= −6u(1 −u),

T0′(u) =

∂T0 (u)

=(1 −u)(1 − 3u),

 

 

∂u

 

 

 

 

 

∂u

 

 

 

 

 

 

 

 

 

 

 

′

 

 

 

 

∂R0 (u)

 

 

 

 

 

′

 

∂T0 (u)

 

 

R1 (u) =

 

 

 

 

=6u(1 −u),

T1 (u) =

 

 

=u(2

−3u),

 

∂u

 

∂u

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Построим двумерный сплайн

r(u,v),

0 ≤u ≤1,

0 ≤v ≤1.

Пусть каждая точка сплайна

 

 

 

 

 

 

 

 

r(u,0) =r00 R0 (u) + τ00T0 (u) +r10 R1 (u) − τ10T1 (u)

(α1 )

при изменении параметра 0 ≤ v ≤1 переходит в соответствующую точку сплайна

r(u,1) =r01 R0 (u) + τ01T0 (u) + r11 R1 (u) − τ11T1 (u)

 

(α2 )

по кривой

(v)

 

r(u,v) =r(u,0)R0 (v) +σ0 (u)T0 (v) +r(u,1)R1 (v) −σ1 (u)T1

(α3 )

Подставим выражения (α1 ) и (α2 ) в (α3 )

 

 

r(u,v) =σ0 (u)T0 (v) −σ1 (u)T1 (v) +

 

 

+[r00 R0 (u) + τ00T0 (u)]R0 (v) +[r10 R1 (u) − τ10T1 (u)]R0 (v) +

 

(α )

+[r01 R0 (u) + τ01T0 (u)]R1 (v) +[r11 R1 (u) − τ11T1 (u)]R1 (v).

 

 

Аналогичным образом, пусть теперь каждая точка сплайна

 

 

r(0,v) =r00 R0 (v) +σ00T0 (v) +r01 R1 (v) −σ01T1 (v)

 

( β1 )

при изменении параметра 0 ≤u ≤1переходит в соответствующую точку сплайна

2

r(1,v) =r10 R0 (v) +σ10T0 (v) + r11 R1 (v) −σ11T1 (v)

( β2 )

по кривой

 

 

r(u,v) =r(0,v)R0 (u) + τ0 (v)T0 (u) +r(1,v)R1 (u) − τ1 (v)T1 (u)

( β3 )

Подставляя выражения ( β1 ) и ( β2 ) в ( β3 ), получаем

 

r(u,v) = τ0 (v)T0 (u) − τ1 (v)T1 (u) +

 

 

+[r00 R0 (v) + σ00T0 (v)]R0 (u) +[r01 R1 (v) −σ01T1

(v)]R0 (u) +

( β )

+[r10 R0 (v) + σ10T0 (v)]R1 (u) +[r11 R1 (v) −σ11T1

(v)]R1 (u).

 

Сравнивая сплайны (α ) и ( β ), получаем

σ0 (u) =σ00 R0 (u) + σ10 R1 (u), σ1 (u) =σ01 R0 (u) + σ11 R1 (u), τ0 (v) = τ00 R0 (v) + τ01 R1 (v), τ1 (v) = τ10 R0 (v) + τ11 R1 (v).

Итак, имеем двумерный сплайн, определяемый четырьмя произвольными векторами rij i, j =0,1 и четырьмя парами произвольных касательных векторов

τij ,σij i, j =0,1

r(u,v) =r00 R0 (u)R0 (v) + τ00T0 (u)R0 (v) + σ00 R0 (u)T0 (v) +

+ r10 R1 (u)R0 (v) − τ10T1 (u)R0 (v) +σ10 R1

(u)T0 (v) +

(3)

+ r01 R0 (u)R1 (v) + τ01T0 (u)R1 (v) −σ01 R0 (u)T1 (v) +

 

+ r11 R1 (u)R1 (v) − τ11T1 (u)R1 (v) −σ11 R1 (u)T1 (v).

 

 

 

r(10)

τ(1,0)=τ10

 

r(00)

 

 

 

 

σ(1,0)=σ10

τ(1,1)=τ11

 

 

τ(0,0)=τ00

τ(0,1)=τ01

r(11)

 

σ(0,0)=σ00

r(01)

 

σ(1,1)=σ11

 

 

 

 

 

σ(0,1)=σ01

 

 

Этот сплайн определяет касательные векторы

τ(u,v) =r00 R0′(u)R0 (v) + τ00T0′(u)R0 (v) +σ00 R0′(u)T0 (v) +

+ r10 R1′(u)R0 (v) − τ10T1′(u)R0 (v) +σ10 R1′(u)T0 (v) + + r01 R0′(u)R1 (v) + τ01T0′(u)R1 (v) −σ01 R0′(u)T1 (v) +

+ r11 R1′(u)R1 (v) − τ11T1′(u)R1 (v) −σ11 R1′(u)T1 (v), σ(u,v) =r00 R0 (u)R0′(v) + τ00T0 (u)R0′(v) + σ00 R0 (u)T0′(v) +

+ r10 R1 (u)R0′(v) − τ10T1 (u)R0′(v) +σ10 R1 (u)T0′(v) +

+r01R0 (u)R1′(v) + τ01T0 (u)R1′(v) −σ01R0 (u)T1′(v) +

+r11R1 (u)R1′(v) − τ11T1 (u)R1′(v) −σ11R1 (u)T1′(v)

инормаль к поверхности n(u,v) = τ(u,v) ×σ(u,v) .

(4)

(5)

Действительно,

 

3

 

 

 

20

30 0

 

 

40

20

 

 

10

40

 

 

20

0

 

 

 

0

 

 

 

 

-20

 

 

 

 

40

40

 

 

 

 

20

 

 

 

 

 

 

 

 

20

0

 

 

 

 

-20

 

 

 

 

 

 

 

 

0

 

30

20

10

0

Сплайн (3) обладает важным свойством, которое состоит в том, что значения векторов r(u.v), τ(u,v) и σ(u,v) на любой границе определяются только

характерными векторами границы rij , τij , σij i, j =0,1 и параметром u или v .

r(0,v) =r00 R0 (v) +σ00T0 (v) +r01 R1 (v) −σ01T1 (v),

τ(0,v) = τ00 R0 (v) + τ01 R1 (v),

σ(0,v) =r00 R0′(v) +σ00T0′(v) +r01 R1′(v) −σ01T0′(v) , r(1,v) =r10 R0 (v) +σ10T0 (v) + r11 R1 (v) −σ11T1 (v),

τ(1,v) = τ10 R0 (v) + τ11 R1 (v),

σ(1,v) =r10 R0′(v) +σ10T0′(v) +r11 R1′(v) −σ11T1′(v),

r(u,0) =r00 R0 (u) + τ00T0 (u) +r10 R1 (u) − τ10T1 (u)

τ(u,0) =r00 R0′(u) + τ00T0′(u) +r10 R1′(u) − τ10T1′(u),

σ(u,0) =σ00 R0 (u) + σ10 R1 (u),

r(u,1) =r01 R0 (u) + τ01T0 (u) + r11 R1 (u) − τ11T1 (u),

τ(u,1) =r01 R0′(u) + τ01T0′(u) +r11 R1′(u) − τ11T1′(u),

σ(u,1) =σ01 R0 (u) + σ11 R1 (u).

Отмеченная особенность векторов r(u,v) , τ(u,v) и σ(u, v) позволяет гладким образом строить составные поверхности по набору векторов rij , τij ,σij , стыкуя сплайны r(u,v) .

4

Построим трехмерный сплайн r(u,v, w) , 0 ≤u ≤1, 0 ≤v ≤1, 0 ≤ w ≤1 -

область

пространства

ограниченную

поверхностями

типа

(3)

r(0,v, w),

r(1,v, w), r(u,0, w), r(u,1, w),

r(u,v,0), r(u, v,1) .

 

Ребра этого трехмерного сплайна (общие кривые граничных двумерных

сплайнов)

–

есть

одномерные

кубические

сплайны

типа

(1)

r(u,0,0), r(u,1,0), r(u,0,1), r(u,1,1), r(0,v,0), r(1,v,0), r(0,v,1), r(1,v,1), r(0,0, w), r(1,0, w), r(0,1, w), r(1,1, w) .

В

каждой вершине

сплайна

r(0,0,0) =r000 ,

r(1,0,0) =r100 ,

r(0,1,0) =r010 , r(0,0,1) =r001 ,

.... r(1,1,1) =r111 зададим

три вектора

τij ,σij ,κij

i =0,1, касательных к ребрам.

Каждая пара этих векторов касается

соответствующей грани.

Пусть каждая точка двумерного сплайна

r(u,v,0) =r000 R0 (u)R0 (v) + τ000T0 (u)R0 (v) +σ000 R0 (u)T0 (v) +

+r100 R1 (u)R0 (v) − τ100T1 (u)R0 (v) +σ100 R1 (u)T0 (v) +

+r010 R0 (u)R1 (v) + τ010T0 (u)R1 (v) −σ010 R0 (u)T1 (v) +

+r110 R1 (u)R1 (v) − τ110T1 (u)R1 (v) −σ110 R1 (u)T1 (v)

при изменении параметра 0 ≤ w ≤1 переходит в соответствующую точку сплайна

r(u,v,1) =r001 R0 (u)R0 (v) + τ001T0 (u)R0 (v) +σ001 R0 (u)T0 (v) +

+r101 R1 (u)R0 (v) − τ101T1 (u)R0 (v) +σ101 R1 (u)T0 (v) +

+r011 R0 (u)R1 (v) + τ011T0 (u)R1 (v) −σ011 R0 (u)T1 (v) +

+r111 R1 (u)R1 (v) − τ111T1 (u)R1 (v) −σ111 R1 (u)T1 (v)

по кривой r(u,v, w) =r(u,v,0)R0 (w) +κ0 (u,v)T0 (w) + +r(u,v,1)R1 (w) −κ1 (u,v)T1 (w).

Подстановка r(u,v,0), r(u,v,1) в r(u,v, w) дает

r(u,v, w) =κ0 (u,v)T0 (w) −κ1 (u,v)T1 (w) +

+r000 R0 (u)R0 (v)R0 (w) + τ000T0 (u)R0 (v)R0 (w) +σ000 R0 (u)T0 (v)R0 (w) +

+r100 R1 (u)R0 (v)R0 (w) − τ100T1 (u)R0 (v)R0 (w) +σ100 R1 (u)T0 (v)R0 (w) +

+r010 R0 (u)R1 (v)R0 (w) + τ010T0 (u)R1 (v)R0 (w) −σ010 R0 (u)T1 (v)R0 (w) +

+r

R

(u)R

(v)R (w) − τ

110

T

(u)R

(v)R (w) −σ

110

R

(u)T

(v)R (w) + (γ

1 )

110

1

1

0

1

1

0

1

1

0

 

+r001 R0 (u)R0 (v)R1 (w) + τ001T0 (u)R0 (v)R1 (w) +σ001 R0 (u)T0 (v)R1 (w) +

+r101 R1 (u)R0 (v)R1 (w) − τ101T1 (u)R0 (v)R1 (w) + σ101 R1 (u)T0 (v)R1 (w) +

+r011 R0 (u)R1 (v)R1 (w) + τ011T0 (u)R1 (v)R1 (w) −σ011 R0 (u)T1 (v)R1 (w) +

+r111 R1 (u)R1 (v)R1 (w) − τ111T1 (u)R1 (v)R0 (w) −σ111 R1 (u)T1 (v)R1 (w).

5

Далее пусть каждая точка двумерного сплайна

r(0,v, w) =r000 R0 (v)R0 (w) +σ000T0 (v)R0 (w) +κ000 R0 (v)T0 (w) +

+r010 R1 (v)R0 (w) −σ010T1 (v)R0 (w) +κ010 R1 (v)T0 (w) +

+r001 R0 (v)R1 (w) +σ001T0 (v)R1 (w) −κ001 R0 (v)T1 (w) +

+r011 R1 (v)R1 (w) −σ011T1 (v)R1 (w) −κ011 R1 (v)T1 (w)

при изменении параметра 0 ≤u ≤1 переходит в соответствующую точку двумерного сплайна

r(1,v, w) =r100 R0 (v)R0 (w) +σ100T0 (v)R0 (w) +κ100 R0 (v)T0 (w) +

+r110 R1 (v)R0 (w) −σ110T1 (v)R0 (w) +κ110 R1 (v)T0 (w) +

+r101 R0 (v)R1 (w) +σ101To (v)R1 (w) −κ101 R0 (v)T1 (w) +

+r111 R1 (v)R1 (w) −σ111T1 (v)R1 (w) −κ111 R1 (v)T1 (w)

по кривой r(u,v, w) =r(0,v, w)R0 (u) + τ0 (v, w)T0 (u) +

 

+r(1,v, w)R1 (u) − τ1 (v, w)T1 (u).

 

 

Подстановка r(0,v, w), r(1,v, w) в r(u,v, w) дает

 

 

 

r(u,v, w) = τ0 (v, w)T0 (u) −τ1 (v, w)T1 (u) +

 

 

+r000 R0

(u)R0 (v)R0 (w) +σ000 R0 (u)T0 (v)R0 (w) +κ000 R0 (u)R0 (v)T0 (w) +

 

 

+r010 R0

(u)R1 (v)R0 (w) −σ010 R0 (u)T1 (v)R0 (w) +κ010 R0 (u)R1 (v)T0 (w) +

 

 

+r001 R0

(u)R0 (v)R1 (w) +σ001 R0 (u)T0 (v)R1 (w) −κ001 R0 (u)R0 (v)T1 (w) +

(γ

2 )

+r011 R0

(u)R1 (v)R1 (w) −σ011 R0 (u)T1 (v)R1 (w) −κ011 R0 (u)R1 (v)T1 (w) +

 

 

+r100 R1 (u)R0 (v)R0 (w) +σ100 R1 (u)T0 (v)R0 (w) +κ100 R1 (u)R0 (v)T0 (w) +

+r110 R1 (u)R1 (v)R0 (w) −σ110 R1 (u)T1 (v)R0 (w) +κ110 R1 (u)R1 (v)T0 (w) +

+r101 R1 (u)R0 (v)R1 (w) +σ101 R1 (u)T0 (v)R1 (w) −κ101 R1 (u)R0 (v)T1 (w) +

+r111 R1 (u)R1 (v)R1 (w) −σ111 R1 (u)T1 (v)R1 (w) −κ111 R1 (u)R1 (v)T1 (w).

Наконец, пусть каждая точка двумерного сплайна

r(u,0, w) =r000 R0 (u)R0 (w) + τ000T0 (u)R0 (w) +κ000 R0 (u)T0 (w) +

+r100 R1 (u)R0 (w) − τ100T1 (u)R0 (w) + κ100 R1 (u)T0 (w) +

+r001 R0 (u)R1 (w) + τ001T0 (u)R1 (w) −κ001 R0 (u)T1 (w) +

+r101 R1 (u)R1 (w) − τ101T1 (u)R1 (w) −κ101 R1 (u)T1 (w)

при изменении параметра 0 ≤ v ≤1 переходит в соответствующую точку двумерного сплайна

r(u,1, w) =r010 R0 (u)R0 (w) + τ010T0 (u)R0 (w) + κ010 R0 (u)T0 (w) +

+r110 R1 (u)R0 (w) − τ110T1 (u)R0 (w) + κ110 R1 (u)T0 (w) +

+r011 R0 (u)R1 (w) + τ011T0 (u)R1 (w) −κ011 R0 (u)T1 (w) +

+r111 R1 (u)R1 (w) − τ111T1 (u)R1 (w) −κ111 R1 (u)T1 (w)

6

по кривой r(u,v, w) =r(u,0, w)R0 (v) +σ(u,v)T0 (v) +

+r(u,1, w)R1 (v) −σ(u,v)T1 (v).

Подстановка r(u,0, w), r(u,1, w) в r(u,v, w) дает r(u,v, w) =σ(u,v)T0 (v) −σ(u,v)T1 (v) +

+r000 R0 (u)R0 (v)R0 (w) + τ000T0 (u)R0 (v)R0 (w) + κ000 R0 (u)R0 (v)T0 (w) +

+r100 R1 (u)R0 (v)R0 (w) − τ100T1 (u)R0 (v)R0 (w) + κ100 R1 (u)R0 (v)T0 (w) +

+r001 R0 (u)R0 (v)R1 (w) + τ001T0 (u)R0 (v)R1 (w) −κ001 R0 (u)R0 (v)T1 (w) +

+r101 R1 (u)R0 (v)R1 (w) − τ101T1 (u)R0 (v)R1 (w) −κ101 R1 (u)R0 (v)T1 (w) + (γ3 )

+r010 R0 (u)R1 (v)R0 (w) + τ010T0 (u)R1 (v)R0 (w) +κ010 R0 (u)R1 (v)T0 (w) +

+r110 R1 (u)R1 (v)R0 (w) − τ110T1 (u)R1 (v)R0 (w) + κ110 R1 (u)R1 (v)T0 (w) +

+r011 R0 (u)R1 (v)R1 (w) + τ011T0 (u)R1 (v)R1 (w) −κ011 R0 (u)R1 (v)T1 (w) +

+r111 R1 (u)R1 (v)R1 (w) − τ111T1 (u)R1 (v)R1 (w) −κ111 R1 (u)R1 (v)T1 (w).

Получившиеся три сплайна (γ1 ),(γ2 ) и (γ3 ) тождественно совпадают если

τ0 (v, w)T0 (u) = τ000T0 (u)R0 (v)R0 (w) + τ001T0 (u)R0 (v)R1 (w) +

+τ010T0 (u)R1 (v)R0 (w) + τ011T0 (u)R1 (v)R1 (w),

−τ1 (v, w)T1 (u) = −τ100T1 (u)R0 (v)R0 (w) − τ101T1 (u)R0 (v)R1 (w) −

−τ110T1 (u)R1 (v)R0 (w) − τ111T1 (u)R1 (v)R1 (w), σ(u,v)T0 (v) = σ000 R0 (u)T0 (v)R0 (w) +σ001 R0 (u)T0 (v)R1 (w) +

+σ100 R1 (u)T0 (v)R0 (w) +σ101 R1 (u)T0 (v)R1 (w),

−σ(u,v)T1 (v) = −σ010 R0 (u)T1 (v)R0 (w) −σ011 R0 (u)T1 (v)R1 (w) −

−σ110 R1 (u)T1 (v)R0 (w) −σ111 R1 (u)T1 (v)R1 (w),

κ0 (u,v)T0 (w) = κ000 R0 (u)R0 (v)T0 (w) + κ100 R1 (u)R0 (v)T0 (w) +

+κ010 R0 (u)R1 (v)T0 (w) + κ110 R1 (u)R1 (v)T0 (w)

−κ1 (u,v)T1 (w) = −κ001 R0 (u)R0 (v)T1 (w) −κ101 R1 (u)R0 (v)T1 (w) −

−κ011 R0 (u)R1 (v)T1 (w) −κ111 R1 (u)R1 (v)T1 (w).

Итак, имеем трехмерный сплайн r(u,v, w) =

=r000 R0 (u)R0 (v)R0 (w) + τ000T0 (u)R0 (v)R0 (w) +

+σ000 R0 (u)T0 (v)R0 (w) +κ000 R0 (u)R0 (v)T0 (w) + +r100 R1 (u)R0 (v)R0 (w) − τ100T1 (u)R0 (v)R0 (w) +

+σ100 R1 (u)T0 (v)R0 (w) +κ100 R1 (u)R0 (v)T0 (w) + +r010 R0 (u)R1 (v)R0 (w) + τ010T0 (u)R1 (v)R0 (w) −

−σ010 R0 (u)T1 (v)R0 (w) +κ010 R0 (u)R1 (v)T0 (w) + +r110 R1 (u)R1 (v)R0 (w) − τ110T1 (u)R1 (v)R0 (w) −

−σ110 R1 (u)T1 (v)R0 (w) +κ110 R1 (u)R1 (v)T0 (w) +

7

+r001R0 (u)R0 (v)R1 (w) + τ001T0 (u)R0 (v)R1 (w) +

+σ001R0 (u)T0 (v)R1 (w) −κ001R0 (u)R0 (v)T1 (w) +

+r101R1 (u)R0 (v)R1 (w) − τ101T1 (u)R0 (v)R1 (w) +

+σ101R1

(u)T0

(v)R1 (w) −κ101R1 (u)R0 (v)T1 (w)

+

(6)

+r011R0 (u)R1

(v)R1

(w) + τ011T0 (u)R1 (v)R1 (w) −

 

 

 

−σ011R0 (u)T1

(v)R1 (w) −κ011R0 (u)R1 (v)T1 (w) +

 

+r111R1 (u)R1 (v)R1

(w) − τ111T1 (u)R1 (v)R0 (w) −

 

 

−σ111R1

(u)T1

(v)R1 (w) −κ111R1 (u)R1 (v)T1 (w).

 

 

Этот сплайн определяет систему некомпланарных векторов, касательных к координатным линиям u,v, w и нормальных к координатным поверхностям uv,vw, wu .

Далее будет решен ряд стандартных задач. Для кривой (1) как функции параметра u , найти

-радиус кривизны и кручение,

-построить естественный трехгранник,

-найти вектор Дарбу и центральную ось,

-построить эволюту и эвольвенту. Для каждой точки поверхности (3)

-найти главные кривизны,

-вычислить символы Кристоффеля,

-построить тензор кривизны Римана,

-построить геодезические из заданной точки поверхности в заданном

направлении. Для области (6)

-вычислить символы Кристоффеля,

-построить дифференциальные операторы первого и второго порядка.