Самоучитель по 3dsmax 7

         

Но есть еще параллельный перенос, есть еще масштабирование


Но есть еще параллельный перенос, есть еще масштабирование. Что делать с ними?

На самом деле, эти преобразования тоже легко записываются в виде матриц. Только вместо матриц 3x3 и 3-мерных векторов используются так называемые однородные 4-мерные координаты и матрицы 4x4. При этом вместо векторов вида [ x ] [ y ] [ z ]

используются вектора вида [ x ] [ y ] [ z ] [ 1 ]

а вместо произвольных матриц 3x3 используются матрицы 4x4 такого вида: [ a b c d ] [ e f g h ] [ i j k l ] [ 0 0 0 1 ]

Видно, что если d = h = l = 0, то в результате применения всех операций получается то же самое, что и для матриц 3x3.

Матрица параллельного переноса теперь определяется как [ 1 0 0 dx ] [ 0 1 0 dy ] [ 0 0 1 dz ] [ 0 0 0 1 ]

Матрицу масштабирования можно определить и для матриц 3x3, и для матриц 4x4: [ kx 0 0 ] [ kx 0 0 0 ] [ 0 ky 0 ] или [ 0 ky 0 0 ] [ 0 0 kz ] [ 0 0 kz 0 ] [ 0 0 0 1 ]

где kx, ky, kz - коэффициенты масштабирования по соответствующим осям.

Таким образом, получаем следующее. Любое нужное нам преобразование пространства можно задать матрицей 4x4 определенной структуры, разной для разных преобразований. Результат последовательного выполнений нескольких преобразований совпадает с результатом одного преобразования T, которое также задается матрицей 4x4, вычисляемой как произведение матриц всех этих преобразований. Важен порядок умножения, так как A*B != B*A. Результат применения преобразования T к вектору [ x y z ] считается как результат умножения матрицы T на вектор [ x y z 1 ].



Содержание раздела