
4. Аффинные преобразования в пространстве
Аналогично тому, как это было сделано для двумерного случая, заменим координатную тройку (x, y, z), задающую точку в пространстве, на четверку (x, y, z, 1) или в общем виде на (hx, hy, hz, 1),
где h ¹ 0.
Можно показать, что любое аффинное преобразование в трехмерном пространстве может быть представлено в виде комбинации поворотов, растяжений (сжатий), отражений и переносов. Выпишем все матрицы, определяющие эти преобразования:
А. Матрицы поворота в пространстве
Матрица поворота вокруг оси абцисс на угол j:
1
0 0 0
Rx = 0 cos j sin j 0 ( 14 )
0 - sin j cos j 0
0 0 0 1
Матрица поворота вокруг оси ординат на угол y:
cos y 0 - sin y 0
Ry = 0 1 0 0 ( 15 )
sin y 0 cos y 0
0 0 0 1
Матрица поворота вокруг оси аппликат на угол c:
cos c sin c 0 0
Rz = - sin c cos c 0 0 ( 16 )
0 0 1 0
0 0 0 1
Б. Матрица растяжения ( сжатия )
a
0 0 0
D = 0 b 0 0 ( 17 )
0 0 g 0
0 0 0 1
где a,b,g- коэффициенты растяжения ( сжатия ) вдоль осей абсцисс, ординат и аппликат, соответственно.
В. Матрицы отражения:
Матрица отражения относительно плоскости XY:
1 0 0 0
Мz = 0 1 0 0 ( 18 )
0 0 - 1 0
0 0 0 1
Матрица отражения относительно плоскости YZ:
- 1 0 0 0
Мx = 0 1 0 0 ( 19 )
0 0 1 0
0 0 0 1
Матрица отражения относительно плоскости ZX:
1
0 0 0
Мy = 0 - 1 0 0 ( 20 )
0 0 1 0
0 0 0 1
Г. Матрица переноса
1 0 0 0
T = 0 1 0 0 ( 21 )
0 0 1 0
lmn1
где ( l,m,n) - вектор переноса.
Матрицы (14 ¸21) отражают простейшие геометрические преобразования точки в пространстве. Матрица сложного аффинного преобразования получается в результате перемножения такого рода матриц и имеет в общем случае вид:
a1 a2 a3 0
P = b1 b2 b3 0 ( 22 )
g1 g2 g3 0
l m n 1
Пусть требуется подвергнуть заданному аффинному преобразованию выпуклый многогранник, имеющий n вершин (рис. 10). Матрица, однозначно описывающая такое тело, имеет вид:
x1 y1 z1 1
x2 y2 z2 1
V0 = . . . . (23)
. . . .
xn yn zn 1
где xi, yi, zi- координатыi- й вершины.
По геометрическому описанию преобразования находим его матрицу P . Тогда новый выпуклый многогранник описывается набором вершин:
x1*y1*z1* 1
x2* y2* z2* 1
V* = V0 * P = . . . . ( 24 )
. . . .
xn* yn* zn* 1