ВУЗ:
Составители:
Основы компьютерной графики для программистов 54
____________________________________________________________________________________________________________________
http://www.ksu.ru/persons/9134.ru.html
(
)
[
]
1,,,
23
ttttx =
x
d
c
b
a
⎥
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎢
⎣
⎡
.
Обозначим вектор строку
[
]
1,,,
23
tttT = и вектор столбец коэффициентов
=
x
C
x
d
c
b
a
⎥
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎢
⎣
⎡
,
тогда
()
x
TCtx = .
Из (*) следует, что
()
[
]
xx
CPx 1,0,0,00
1
=
= ,
(
)
[
]
xx
CPx 1,1,1,11
4
=
=
. Для касательных
()
[
]
x
Ctttx 0,1,2,3
2'
= , ⇒
()
[]
xx
CRx 0,1,0,00
1
'
== ,
()
[]
xx
CRx 0,1,2,31
4
'
== . Отсюда получаем векторно-матричное уравнение:
x
x
x
x
x
C
R
R
P
P
⎥
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎢
⎣
⎡
=
⎥
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎢
⎣
⎡
0123
0100
1111
1000
4
1
4
1
.
Эта система решается относительно
x
C
нахождением обратной матрицы размером
44 × .
hxh
x
x
x
x
x
GM
R
R
P
P
C =
⎥
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎢
⎣
⎡
⎥
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎢
⎣
⎡
−−−
−
=
4
1
4
1
0001
0100
1233
1122
.
Здесь
h
M - эрмитова матрица,
h
G - геометрический вектор Эрмита. Подставим
выражение
x
C для нахождения
(
)
tx :
(
)
hxh
GTMtx
=
. Аналогично для остальных
координат:
()
hyh
GTMty = ,
()
hzh
GTMtz = .
Выпишем в явном виде формулы для вычисления координат точек сплайна. Так как
(
)
(
)
(
)
(
)
[
]
23232323
,2,32,132 tttttttttTM
h
−+−+−+−= , то умножая справа на
hx
G ,
получаем:
()
hxh
GTMtx =
(
)
(
)
(
)
(
)
23
4
23
1
23
4
23
1
232132 ttRtttRttPttP
xxxx
−++−++−++−=
.
Четыре функции в скобках называются функциями сопряжения.
Форму кривой, заданной в форме Эрмита, легко изменять если учитывать, что
направление вектора касательной задает начальное направление, а модуль вектора
касательной задает степень вытянутости кривой в направлении этого вектора, как
показано на рис. 42.
Основы компьютерной графики для программистов 54
____________________________________________________________________________________________________________________
⎡a ⎤
⎢b ⎥
[ ]
x(t ) = t , t , t ,1 ⎢ ⎥ .
3 2
⎢c ⎥
⎢ ⎥
⎣d ⎦ x
⎡a ⎤
⎢b ⎥
[ ]
Обозначим вектор строку T = t , t , t ,1 и вектор столбец коэффициентов C x = ⎢ ⎥ ,
3 2
⎢c ⎥
⎢ ⎥
⎣d ⎦ x
тогда x(t ) = TC x .
Из (*) следует, что x(0 ) = P1x = [0,0,0,1]C x , x(1) = P4 x = [1,1,1,1]C x . Для касательных
[ ]
x ' (t ) = 3t 2 ,2t ,1,0 C x , ⇒
x ' (0) = R1x = [0,0,1,0]C x ,
x ' (1) = R4 x = [3,2,1,0]C x . Отсюда получаем векторно-матричное уравнение:
⎡ P1x ⎤ ⎡0 0 0 1⎤
⎢ P ⎥ ⎢1 1 1 1⎥⎥
⎢ 4x ⎥ = ⎢ Cx .
⎢ R1x ⎥ ⎢0 0 1 0⎥
⎢ ⎥ ⎢ ⎥
⎣ R4 x ⎦ ⎣ 3 2 1 0⎦
Эта система решается относительно C x нахождением обратной матрицы размером
4× 4.
⎡ 2 −2 1 1 ⎤ ⎡ P1x ⎤
⎢− 3 3 − 2 − 1⎥ ⎢ P ⎥
Cx = ⎢ ⎥ ⎢ 4 x ⎥ = M h Ghx .
⎢0 0 1 0 ⎥ ⎢ R1x ⎥
⎢ ⎥⎢ ⎥
⎣1 0 0 0 ⎦ ⎣ R4 x ⎦
Здесь M h - эрмитова матрица, Gh - геометрический вектор Эрмита. Подставим
выражение C x для нахождения x(t ) : x(t ) = TM h Ghx . Аналогично для остальных
координат: y (t ) = TM h Ghy , z (t ) = TM hGhz .
Выпишем в явном виде формулы для вычисления координат точек сплайна. Так как
[( )( )( )( )]
TM h = 2t 3 − 3t 2 + 1 , − 2t 3 + 3t 2 , t 3 − 2t 2 + t , t 3 − t 2 , то умножая справа на Ghx ,
получаем:
( ) ( ) ( ) ( )
x(t ) = TM h Ghx = P1x 2t 3 − 3t 2 + 1 + P4 x − 2t 3 + 3t 2 + R1x t 3 − 2t 2 + t + R4 x t 3 − t 2 .
Четыре функции в скобках называются функциями сопряжения.
Форму кривой, заданной в форме Эрмита, легко изменять если учитывать, что
направление вектора касательной задает начальное направление, а модуль вектора
касательной задает степень вытянутости кривой в направлении этого вектора, как
показано на рис. 42.
http://www.ksu.ru/persons/9134.ru.html
Страницы
- « первая
- ‹ предыдущая
- …
- 52
- 53
- 54
- 55
- 56
- …
- следующая ›
- последняя »
