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

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

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

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)

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

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