.. role:: blue :class: blue .. role:: bfit :class: bfit Расширенная матрица в двумерном пространстве MbMatrix ====================================================== .. _MbMatrix_Extended_Matrix_in_Two-Dimensional_Space: .. версия ядра: 118059 Класс :blue:`MbMatrix` объявлен в файле *mb_matrix.h*. В двумерном пространстве матрица :blue:`MbMatrix3D` описывает преобразование из одной системы координат в другую. Матрица имеет размерность три на три. Пусть в выбранной системе координат построена локальная аффинная система координат с началом в точке :bfit:`r` с координатами *r*\ :subscript:`1`, *r*\ :subscript:`2` и базисными векторами :bfit:`a` = \[*a*\ :subscript:`1` *a*\ :subscript:`2`\], :bfit:`b` = \[*b*\ :subscript:`1` *b*\ :subscript:`2`\]. Векторы :bfit:`a` и :bfit:`b` не должны быть коллинеарными, но могут быть не ортогональными друг другу и иметь произвольную длину. Матрица :blue:`MbMatrix` преобразования координат из локальной системы в выбранную систему координат имеет вид: .. math:: :nowrap: \[ \text{M} = \begin{bmatrix} a_{1} & a_{2} & 0 \\ b_{1} & b_{2} & 0 \\ r_{1} & r_{2} & 1 \\ \end{bmatrix}. \] Для обозначения расширенных матриц в двумерном пространстве будем использовать прописные буквы латинского алфавита, выделенные полужирным наклонным шрифтом, например :bfit:`M`. Заметим, что каждому базисному вектору :bfit:`a`, :bfit:`b` и начальной точке :bfit:`r` локальной системы координат соответствует своя строка в матрице преобразования из локальной системы в выбранную систему координат. Матрица :blue:`MbMatrix` является расширенной и работает с однородными радиусами-векторами и однородными векторами :ref:`MbHomogeneous ` в двумерном пространстве. При преобразовании радиуса-вектора :ref:`MbCartPoint ` по матрице :blue:`MbMatrix` точке следует добавить третью координату, равную единице. Пусть точка с координатами *x*\ :subscript:`1`, *x*\ :subscript:`2` в локальной системе координат имеет координаты *p*\ :subscript:`1`, *p*\ :subscript:`2` в выбранной системе координат, тогда при участии расширенной матрицы :blue:`MbMatrix` координаты будут связаны соотношением .. math:: \begin{bmatrix} p_{1} & p_{2} & 1 \end{bmatrix} = \begin{bmatrix} x_{1} & x_{2} & 1 \end{bmatrix} \cdot \begin{bmatrix} a_{1} & a_{2} & 0 \\ b_{1} & b_{2} & 0 \\ r_{1} & r_{2} & 1 \\ \end{bmatrix} Заметим, что двумерный радиус-вектор умножается на расширенную матрицу :blue:`MbMatrix` справа. При преобразовании вектора :blue:`MbVector` по матрице :blue:`MbMatrix` вектору следует добавить третью компоненту, равную нулю. Пусть вектор с компонентами *y*\ :subscript:`1`, *y*\ :subscript:`2` в локальной системе координат имеет компоненты *r*\ :subscript:`1`, *r*\ :subscript:`2` в выбранной системе координат, тогда при участии расширенной матрицы :blue:`MbMatrix` компоненты будут связаны соотношением .. math:: :nowrap: \[ \begin{bmatrix} r_{1} & r_{2} & 0 \end{bmatrix} = \begin{bmatrix} y_{1} & y_{2} & 0 \end{bmatrix} \cdot \begin{bmatrix} a_{1} & a_{2} & 0 \\ b_{1} & b_{2} & 0 \\ r_{1} & r_{2} & 1 \\ \end{bmatrix}. \] Заметим, что двумерный вектор умножается на расширенную матрицу :blue:`MbMatrix` справа.