Расширенная матрица в трёхмерном пространстве MbMatrix3D

Класс MbMatrix3D объявлен в файле mb_matrix3d.h.

В трёхмерном пространстве матрица MbMatrix3D описывает преобразование из одной системы координат в другую. Матрица имеет размерность четыре на четыре. Пусть в выбранной системе координат построена локальная аффинная система координат с началом в точке r с координатами r1, r2, r3 и базисными векторами a = [a1 a2 a3], b = [b1 b2 b3], c = [c1 c2 c3]. Векторы a, b, c должны быть линейно независимыми, но могут быть не ортогональными друг другу и иметь произвольную длину. Матрица MbMatrix3D преобразования координат из локальной системы в выбранную систему координат имеет вид:

\[ \mathbf{M} = \begin{bmatrix} a_{1} & a_{2} & a_{3} & 0 \\ b_{1} & b_{2} & b_{3} & 0 \\ c_{1} & c_{2} & c_{3} & 0 \\ r_{1} & r_{2} & r_{3} & 1 \\ \end{bmatrix}. \]

Для обозначения расширенных матриц в трёхмерном пространстве будем использовать прописные буквы латинского алфавита, выделенные полужирным шрифтом, например M. Заметим, что каждому базисному вектору a, b, c и начальной точке r локальной системы координат соответствует своя строка в матрице преобразования из локальной системы в выбранную систему координат.

Матрица MbMatrix3D является расширенной и работает с однородными радиусами-векторами и однородными векторами MbHomogeneous3D в трёхмерном пространстве.

При преобразовании радиуса-вектора MbCartPoint3D по матрице MbMatrix3D точке следует добавить четвёртую координату, равную единице. Пусть точка с координатами x1, x2, x3 в локальной системе координат имеет координаты p1, p2, p3 в выбранной системе координат, тогда при участии расширенной матрицы MbMatrix3D координаты будут связаны соотношением

\[ \begin{bmatrix} p_{1} & p_{2} & p_{3} & 1 \\ \end{bmatrix} = \begin{bmatrix} x_{1} & x_{2} & x_{3} & 1 \\ \end{bmatrix} \cdot \begin{bmatrix} a_{1} & a_{2} & a_{3} & 0 \\ b_{1} & b_{2} & b_{3} & 0 \\ c_{1} & c_{2} & c_{3} & 0 \\ r_{1} & r_{2} & r_{3} & 1 \\ \end{bmatrix}. \]

Заметим, что трёхмерный радиус-вектор умножается на расширенную матрицу MbMatrix3D справа.

При преобразовании вектора MbVector3D по матрице MbMatrix3D вектору следует добавить четвёртую компоненту, равную нулю. Пусть вектор с компонентами y1, y2, y3 в локальной системе координат имеет компоненты v1, v2, v3 в выбранной системе координат, тогда при участии расширенной матрицы MbMatrix3D компоненты будут связаны соотношением

\[ \begin{bmatrix} v_{1} & v_{2} & v_{3} & 0 \\ \end{bmatrix} = \begin{bmatrix} y_{1} & y_{2} & y_{3} & 0 \\ \end{bmatrix} \cdot \begin{bmatrix} a_{1} & a_{2} & a_{3} & 0 \\ b_{1} & b_{2} & b_{3} & 0 \\ c_{1} & c_{2} & c_{3} & 0 \\ r_{1} & r_{2} & r_{3} & 1 \\ \end{bmatrix}. \]

Заметим, что трёхмерный вектор умножается на расширенную матрицу MbMatrix3D справа.