Основы компьютерной графики для программистов. Казанцев А.В. - 54 стр.

UptoLike

Составители: 

Основы компьютерной графики для программистов 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