Аффинные преобразования в пространстве

Рассмотрим трехмерный случай (3D) (3-dimension) и сразу введем однородные координаты.

Поступая аналогично тому, как это было сделано в размерности два, заменим координатную тройку (x, y, z), задающую точку в пространстве, на четверку чисел

(x y z 1)

или, более общо, на четверку

(hx hy hz), h = 0.

Каждая точка пространства (кроме начальной точки О) может быть задана четверкой одновременно не равных нулю чисел; эта четверка чисел определена однозначно с точностью до общего множителя.

Предложенный переход к новому способу задания точек дает возможность воспользоваться матричной записью и в более сложных трехмерных задачах.

Любое аффинное преобразование в трехмерном пространстве может быть представлено в виде суперпозиции вращений, растяжений, отражений и переносов. Поэтому вполне уместно сначала подробно описать матрицы именно этих преобразований (ясно, что в данном случае порядок матриц должен быть равен четырем).

А. Матрицы вращения в пространстве.

Матрица вращения вокруг оси абсцисс на угол j:

1 0       0    0

0

(4.1)
cos j     sin j     0

                                        0 -sin j     cos j 0

0    0    0    1

 

 

             

Матрица вращения вокруг оси ординат на угол y:

 

                                        cos y 0 -sin y 0

                        

(4.2)
0    1         0         1

                                        sin y 0     cos y 0

                                       0    0    0    1

 

Матрица вращения вокруг оси аппликат на угол c:

 


                           cos c sin c 0 0

                  -sin

(4.3)
c    cos c    0 0

                               0    0            1     0

                               0    0       0 1

 

 

Полезно обратить внимание на место знака «-» в каждой из трех приведенных матриц.

Б. Матрица растяжения-сжатия:

 

 


                                               a      0      0      0

                                      

(4.4)                           (4.4)
0      b      0      0

                                              0      0      g      0

                                               0      0      0      1

 

где

a > 0 – коэффицент растяжения (сжатия) вдоль оси абсцисс;

b > 0 – коэффицент растяжения (сжатия) вдоль оси ординат;

g > 0 – коэффицент растяжения (сжатия) вдоль оси аппликат.

 

В. Матрицы отражения

Матрица отражения относительно плоскости ху:

 

                                               1      0      0      0

                                             

                                (4.5)
0      1      0      0

                                    0      0      -1      0

                                               0      0      0      1

 

Матрица отражения относительно плоскости yz:

 


                                             -1      0      0      0

                                            

                                (4.6)
0      1      0      0

                              0      0      1      0

                                              0      0      0      1

 

Матрица отражения относительно плоскости zx:

 


                                               1      0      0      0

                                 

                                (4.7)
0      -1      0      0

                                                 0      0      1      0

                                                 0      0      0      1

 

Г. Матрица переноса (здесь (l, m, n) - вектор переноса):

 


                                            1      0      0      0

                                    

                                (4.8)
0      1      0      0

                                             0      0      1      0

                                             l      m      n      1

 

Как и в двумерном случае, все выписанные матрицы невырождены.

Приведем важный пример построения матрицы сложного преобразования по его геометрическому описанию.

Пример 3. Построить матрицу вращения на угол j вокруг прямой L, проходящей через точку А (a, b, c) и имеющую направляющий вектор (l, m, n). Можно считать, что направляющий вектор прямой является единичным:

l2 + m2 + n2 = 1

На рис. 13 схематично показано, матрицу какого преобразования требуется найти.

 

 

Z
Y
                                                                                                                             L                                                                        

 

 

     
 
Рис.13

 


X

 

Решение сформулированной задачи разбивается на несколько шагов. Опишем последовательно каждый из них.

1-й шаг. Перенос на вектор –А (-a, -b, -c) при помощи матрицы

 

 


                                             1      0      0      0

                                    

                                (4.9)
 
0      1      0      0

                                             0      0      1      0

                                              -a -b -c 1

 

    В результате этого переноса мы добиваемся того, чтобы прямая L проходила через начало координат.

    2-й шаг. Совмещение оси аппликат прямой L двумя поворотами вокруг оси абсцисс и оси ординат.

    1-й поворот – вокруг оси абсцисс на угол y (подлежащий определению). Чтобы найти этот угол, рассмотрим ортогональную проекцию L’ исходной прямой L на плоскость X = 0 (рис. 14).

 

 

Z
X
                 L’ L q         

                                            Y

        Y                 

 


   0

     
Рис. 14

 


Направляющий вектор прямой L’ определяется просто – он равен

(0, m, n).

Отсюда сразу же вытекает, что

 

 (4.10)

 

где         (4.11)

 

Соответствующая матрица вращения имеет следующий вид:

 


                                         1 0 0 0

                                0 n/d m/d 0

                           (4.12)
                                         0 -m/d n/d 0

                                         0 0 0      1

 

Под действием преобразования, описываемого этой матрицей, координаты вектора (l, m, n) изменятся. Подсчитав их, в результате получим

 

                               (l, m, n, 1)[ Rx ] = (l, 0, d, 1).                                (4.13)

 

2-й поворот вокруг оси оси ординат на угол q, определяемый соотношениями

                                сos q = l,  sin q = -d                                         (4.14)

 

соответствующая матрица вращения записывается в следующем виде:

l      0       d     0

                                (4.15)
[ Ry ] =
0      1      0      0

-d      0       l      0

0      0      0      1

 

3-й шаг. Вращение вокруг прямой L на заданный угол j.

Так как теперь прямая L совпадает с осью аппликат, то соответствующая матрица имеет следующий вид:

 


        [ Rz ] =
cos j sin j 0 0

(4.16)
-sin j    cos j    0 0

0    0            1     0

0    0       0 1

 

4-й шаг. Поворот вокруг оси ординат на угол -q.

5-й шаг. Поворот вокруг оси абсцисс на угол -y.

Однако вращение в пространстве некоммутативно. Поэтому порядок, в котором проводятся вращения, является весьма существенным.

6-й шаг. Перенос на вектор А (a, b, c).

Перемножив найденные матрицы в порядке их построения, получим следующую матрицу:

[ T ][ Rx ][ Ry ][ Rz ][ Ry ]-1[ Rx ]-1 [ T ]-1.

 

Выпишем окончательный результат, считая для простоты, что ось вращения ходит через начальную точку.

 


l 2 + cos j(1 – l 2)        l (1 – cos j)m + n sin j        l (1 – cos j)n – m sin j          0

l (1 – cos j)m – n sin j       m2 + cos j(1 – m2)    m(1 – cos j)n + l sin j          0

l (1 – cos j)n + m sin j     m(1 – cos j)n – l sin j            n2 + cos j(1 - n2)       0

0                                     0                                      0                                   1

 

Рассматривая примеры подобного рода, мы будем получать в результате невырожденные матрицы вида


a1     a2    a3    0

                                (4.17)
[ А ] =
b1     b2     b3     0

g1     g2      g3     0

l      m      n      1

 

При помощи таких матриц можно преобразовать любые плоские и пространственные фигуры.

Пример 4.  Требуется подвергнуть заданному аффинному преобразованию выпуклый многогранник.

Для этого сначала по геометрическому описанию отображения находим его матрицу [ A ]. Замечая далее, что произвольный выпуклый многогранник однозначно задается набором всех своих вершин

Vi (xi, yi, zi), i = 1,…,n,

Строим матрицу


x1 y1 z1 1

                                   V =   ..........                                       (4.18)       

xn yn zn 1

 

Подвергая этот набор преобразованию, описываемому найденной невырожденной матрицей четвертого порядка, [ V ][ A ], мы получаем набор вершин нового выпуклого многогранника – образа исходного (рис. 15).

 

Z

         
   

 

 


   0                                       

                                           Y    

X

Рис. 15

 



 

 

 


















Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: