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

UptoLike

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

Основы компьютерной графики для программистов 30
____________________________________________________________________________________________________________________
http://www.ksu.ru/persons/9134.ru.html
[]
[]
=
100
0
0
1,,1,,
''
αα
α
α
CosSin
SinCos
yxyx
Определим матрицу поворота
()
=
100
0
0
αα
α
α
α
CosSin
SinCos
R
Аналогично двум предыдущим случаям, покажем, что матрица поворота остается
таковой при последовательных поворотах.
()()
=
=
100
0
0
100
0
0
ββ
β
β
αα
α
α
βα
CosSin
SinCos
CosSin
SinCos
RR
() ()
()()
++
++
=
100
0
0
βαβα
β
α
β
α
CosSin
SinCos
Таким образом, доказано, что два, а значит и любое количество последовательных
поворотов можно записать в виде одной матрицы суммарного поворота. Также легко
заметить что любая последовательность операций, включающая в себя перенос,
масштабирование и вращение в однородных координатах, может быть представлена
одной матрицей, которая является произведением матриц данных операций.
Рассмотрим, каким образом
с помощью композиции матричных преобразований можно
получить одно общее результирующее преобразование. Для этого будем использовать
матрицы T, S и R. С вычислительной точки зрения гораздо проще и быстрее применять
матрицу уже готового преобразования вместо того, чтобы применять их
последовательно одну за другой. К точке более эффективно применять одно
результирующее преобразование, чем ряд преобразований
друг за другом.
Для примера рассмотрим задачу поворота объекта на плоскости относительно
некоторой произвольной точки
0
p . Пока мы умеем поворачивать объекты только
вокруг начала координат. Но можно представить эту задачу как последовательность
шагов, на каждом из которых будет применяться только элементарная операция:
перенос, масштабирование или вращение.
Вот эта последовательность элементарных преобразований (рис. 27):
1.
Перенос, при котором точка
0
p переходит в начало координат.
2.
Поворот на заданный угол.
Основы компьютерной графики для программистов                                                                  30
____________________________________________________________________________________________________________________



                                                               ⎡ Cosα        Sinα       0⎤
                                         [   '   '
                                                     ]
                                         x , y ,1 = [x, y,1] ⋅ ⎢− Sinα
                                                               ⎢
                                                                             Cosα       0⎥
                                                                                          ⎥
                                                               ⎢⎣ 0           0         1⎥⎦

                                  ⎡ Cosα                             Sinα         0⎤
                                  ⎢
Определим матрицу поворота R(α ) = − Sinα                           Cosα          0⎥
                                  ⎢                                                 ⎥
                                  ⎢⎣ 0                                   0        1⎥⎦
Аналогично двум предыдущим случаям, покажем, что матрица поворота остается
таковой при последовательных поворотах.
                                       ⎡ Cosα            Sinα    0⎤ ⎡ Cosβ              Sinβ   0⎤
                          R(α )R(β ) = ⎢− Sinα           Cosα    0⎥ ⎢− Sinβ         Cosβ       0⎥ =
                                       ⎢                           ⎥⎢                            ⎥
                                       ⎢⎣ 0                0     1⎥⎦ ⎢⎣ 0                0     1⎥⎦

  ⎡ Cos (α + β ) Sin(α + β ) 0⎤
= ⎢− Sin(α + β ) Cos (α + β ) 0⎥
  ⎢                             ⎥
  ⎢⎣     0            0       1⎥⎦
Таким образом, доказано, что два, а значит и любое количество последовательных
поворотов можно записать в виде одной матрицы суммарного поворота. Также легко
заметить что любая последовательность операций, включающая в себя перенос,
масштабирование и вращение в однородных координатах, может быть представлена
одной матрицей, которая является произведением матриц данных операций.
Рассмотрим, каким образом с помощью композиции матричных преобразований можно
получить одно общее результирующее преобразование. Для этого будем использовать
матрицы T, S и R. С вычислительной точки зрения гораздо проще и быстрее применять
матрицу уже готового преобразования вместо того, чтобы применять их
последовательно одну за другой. К точке более эффективно применять одно
результирующее преобразование, чем ряд преобразований друг за другом.
Для примера рассмотрим задачу поворота объекта на плоскости относительно
некоторой произвольной точки p 0 . Пока мы умеем поворачивать объекты только
вокруг начала координат. Но можно представить эту задачу как последовательность
шагов, на каждом из которых будет применяться только элементарная операция:
перенос, масштабирование или вращение.
Вот эта последовательность элементарных преобразований (рис. 27):
      1. Перенос, при котором точка p 0 переходит в начало координат.
      2. Поворот на заданный угол.




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