Матрицы. Понятие. Применение

Помечено: 

В этой теме 0 ответов, 1 участник, последнее обновление  Васильев Владимир Сергеевич 1 неделя, 1 день назад.

  • Автор
    Сообщения
  • #4179

    Матрица – это набор чисел, записываемый в виде прямоугольной таблицы. Строки и столбцы матрицы можно считать векторами. Матрицы, у которых число строк равно числу столбцов, называют квадратными. Существует особая квадратная матрица I (Identity) – единичная. Она характеризуется тем, что ее диагональные элементы равны единице, а остальные — нулю:

    $$I_{i,j} = 1, i = j
    \\
    I_{i,j} = 0, i \neq j$$

    В 3D-графике, матрицы используются для преобразования координат из одной системы координат в другую. Вообще, для преобразования базиса (базис — набор векторов, задающих координатные оси) в трехмерном пространстве вполне хватает матрицы 3х3, однако, для целей 3D-графики этого не всегда достаточно. В частности, перспективное проецирование удобно представить матрицей, но для этого необходима матрица 4х4. Также с этой целью вводятся т.н. однородные координаты, где трехмерной точке (x, y, z) соответствует набор четырех координат (xw, yw, zw, w).

    Основные операции

    Из операций, определенных над матрицами, мы рассмотрим умножение, транспонирование и, частично, обращение.

    Умножение матриц

    Определяется произведение матриц так:
    Если Aij — элемент матрицы A, стоящий в i-ой строке и j-ом столбце, и C = AB, то

    $$C_{i,k} = \sum_{j}A_{i,j} \cdot B_{j,k}$$

    т.е. элементы матрицы C получаются как скалярные произведения строк A на столбцы B.

    Отсюда видно, что при умножении матриц, необходимо, чтобы в первом сомножителе было столько же столбцов, сколько строк во втором.
    Кое-кому также очевидно, что если существует произведение AB, то это еще не означает существования BA, не говоря уже об их равенстве.
    В общем, $$AB \neq BA$$, т.е. произведение матриц не коммутативно.

    Зато оно ассоциативно. Проще говоря:
    $$(AB)С = A(BC)$$

    Умножение любой матрицы на единичную, дает исходную:
    $$AI = A$$

    Транспонирование матриц

    Транспонирование обозначается как AT и возможно только для квадратных матриц. Если $$B=A^T$$, то
    $$B_{i,j} = B_{j,i}$$
    Иными словами, строки и столбцы меняются местами.

    Обращение

    Обратная к A матрица обозначается как $$A^{-1}$$ и характеризуется тем, что при умножении A на нее, получается единичная матрица:
    $$AA^{-1} = I$$

    Существует обратная к данной матрица далеко не всегда и процесс её нахождения далеко не тривиален. Однако, в 3D графике, напомню, матрицы используются для задания преобразований системы координат (базиса). Базис, заданный тремя взаимно перпендикулярными векторами единичной длины, называется ортонормированным. А у матрицы, задающей преобразование из одного ортонормированного базиса в другой, обратная матрица совпадает с транспонированной:
    $$A^{-1} = A^T$$

    Матрицы, обладающие этим свойством, называются ортогональными.
    В 3D-графике матрицы поворота ортогональны и их произведение тоже.

    Применение матриц

    Выше уже было сказано, что в 3D-графике матрицы используются для преобразования координат. С этой целью точка умножается (как однострочная матрица) на соответствующую матрицу преобразования.

    Например, для поворота точки относительно оси X и параллельного переноса, ее надо последовательно умножить на матрицу поворота и параллельного переноса (см. следующий раздел). Причем, т.к. произведение матриц не коммутативно, результат зависит от последовательности умножения:
    $$PRT \neq PTR$$, т.к.
    $$RT \neq TR,$$
    где P — точка, R — матрица поворота, T — матрица переноса.

    Ассоциативность произведения матриц позволяет не умножать каждую точку на несколько матриц, а сперва перемножить матрицы преобразования и умножать точки уже на результирующую матрицу:
    $$PRT = P(RT)$$

    Основные матрицы

    Здесь приведены наиболее часто используемые в 3D-графике матрицы.

    Параллельный перенос точки на вектор (x, y, z):

    1 0 0 0
    0 1 0 0
    0 0 1 0
    x y z 1

    Вращение относительно оси X на угол a:

    1 0 0 0
    0 cos a sin a 0
    0 -sin a cos a 0
    0 0 0 1

    Вращение относительно оси Y на угол a:

    cos a 0 -sin a 0
    0 1 0 0
    sin a 0 cos a 0
    0 0 0 1

    Вращение относительно оси Z на угол a:

    cos a sin a 0 0
    -sin a cos a 0 0
    0 0 1 0
    0 0 0 1

    Масштабирование по осям X, Y и Z на x, y и z соответственно:

    z 0 0 0
    0 y 0 0
    0 0 x 0
    0 0 0 1

    Проективная матрица с вертикальным и горизонтальным углами обзора fovx и fovy соответственно:

    ctg fovx/2 0 0 0
    0 ctg fovy/2 0 0
    0 0 Zf/(Zf – Zn) 0
    0 0 -Zn*Zf/(Zf – Zn) 1

    где Zn — ближняя z-плоскость. Zf — дальняя z-плоскость.

    Полезно знать

    В 3D-графике матрицы преобразования координат, в большинстве случаев,
    являются композицией (произведением) матриц вращения, масштабирования и
    переноса, и имеют следующую структуру:

    Rx Ry Rz 0
    Ux Uy Uz 0
    Fx Fy Fz 0
    Tx Ty Tz 1

    где R — вектор, показывающий направление оси X новой (т.е. задаваемой данной матрицей) системы координат, в координатах исходной. U и F, соответственно, направления осей Y и Z. Модули этих векторов совпадают с масштабированием по соответствующим осям в новой системе. T — вектор переноса, совмещающего начала координат исходной и новой системы. Получается, что подматрица 3х3, состоящая из векторов R, U и F, задает вращение и масштабирование, а четвертая строка отвечает за перенос.

Для ответа в этой теме необходимо авторизоваться.