ВУЗ:
Составители:
Основы компьютерной графики для программистов 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
Страницы
- « первая
- ‹ предыдущая
- …
- 30
- 31
- 32
- 33
- 34
- …
- следующая ›
- последняя »
