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

UptoLike

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

Основы компьютерной графики для программистов 32
____________________________________________________________________________________________________________________
http://www.ksu.ru/persons/9134.ru.html
[]
(
)
[
]
1,,,,,1,,,
zyxzyx
DzDyDxDDDTzyx
+
+
+
=
.
Операция масштабирования:
()
=
1000
000
000
000
,,
z
y
zyx
S
S
S
SSSS
[
]
(
)
[
]
1,,,,,1,,, zSySxSSSSSzyx
zyxzyx
=
Перейдем к операции поворота; c ней, в трехмерном случае, придется разбираться чуть
побольше чем в двумерном. Так как при двумерном повороте в плоскости
xy
координаты
z остаются неизменными, то поворот вокруг оси z записывается так:
()
=
1000
0100
00
00
αα
α
α
α
CosSin
SinCos
R
z
.
Матрица поворота вокруг оси
x
имеет вид:
()
=
1000
00
00
0001
αα
αα
α
CosSin
SinCos
R
x
,
и вокруг оси
y :
()
=
1000
00
0010
00
αα
α
α
α
CosSin
SinCos
R
y
Обратите внимание на смену положения синуса угла с отрицательным знаком в
матрице поворота вокруг оси
y . Правильность этих матриц легко проверить поворотом
одного из ортов на
o
90 , при этом он должен перейти в следующий по порядку орт на
соответствующей координатной оси.
Обратные преобразования будут выражаться обратными матрицами. Для операции
переноса надо лишь заменить знаки компонент вектора переноса на противоположные:
(
)
(
)
zyxzyx
DDDTDDDT =
,,,,
1
;
для операции масштабированияна обратные значения:
(
)
(
)
zyxzyx
SSSSSSSS /1,/1,/1,,
1
=
;
для поворотавыбором отрицательного угла поворота:
Основы компьютерной графики для программистов                                                                   32
____________________________________________________________________________________________________________________



                           [x, y, z,1] ⋅ T (D x , D y , D z ) = [x + D x , y + D y , z + D z ,1].
Операция масштабирования:
                                                                          ⎡S             0         0       0⎤
                                                                          ⎢0           Sy          0       0⎥
                                              (
                                             S Sx , Sy , Sz          )   =⎢
                                                                          ⎢0             0        Sz
                                                                                                            ⎥
                                                                                                           0⎥
                                                                          ⎢                                 ⎥
                                                                          ⎣0             0        0        1⎦
                                  [x, y, z,1] ⋅ S (S x , S y , S z ) = [S x ⋅ x, S y ⋅ y, S z ⋅ z,1]
Перейдем к операции поворота; c ней, в трехмерном случае, придется разбираться чуть
побольше чем в двумерном. Так как при двумерном повороте в плоскости xy
координаты z остаются неизменными, то поворот вокруг оси z записывается так:
                                                        ⎡ Cosα                       Sinα         0 0⎤
                                                        ⎢− Sinα                   Cosα            0 0⎥
                                             R z (α ) = ⎢                                            ⎥.
                                                        ⎢ 0                            0          1 0⎥
                                                        ⎢                                            ⎥
                                                        ⎣ 0                            0          0 1⎦
Матрица поворота вокруг оси x имеет вид:
                                                        ⎡1    0                               0          0⎤
                                                        ⎢0 Cosα                            Sinα          0⎥
                                             R x (α ) = ⎢                                                 ⎥,
                                                        ⎢0 − Sinα                          Cosα          0⎥
                                                        ⎢                                                 ⎥
                                                        ⎣0    0                             0            1⎦
и вокруг оси y :

                                                        ⎡Cosα                    0 − Sinα                 0⎤
                                                        ⎢ 0                     1            0            0⎥
                                             R y (α ) = ⎢                                                  ⎥
                                                        ⎢ Sinα                   0       Cosα             0⎥
                                                        ⎢                                                  ⎥
                                                        ⎣ 0                      0        0               1⎦
Обратите внимание на смену положения синуса угла с отрицательным знаком в
матрице поворота вокруг оси y . Правильность этих матриц легко проверить поворотом
                                         o
одного из ортов на 90 , при этом он должен перейти в следующий по порядку орт на
соответствующей координатной оси.
Обратные преобразования будут выражаться обратными матрицами. Для операции
переноса надо лишь заменить знаки компонент вектора переноса на противоположные:
                                               T −1 (Dx , Dy , Dz ) = T (− Dx ,− Dy ,− Dz ) ;

для операции масштабирования – на обратные значения:
                                                  S −1 (S x , S y , S z ) = S (1 / S x ,1 / S y ,1 / S z ) ;

для поворота – выбором отрицательного угла поворота:


http://www.ksu.ru/persons/9134.ru.html