C3D Toolkit  Kernel - 105122, Vision - 0.181114.105122

Расширенная матрица преобразования в двумерном пространстве. Подробнее...

Граф связей класса MbMatrix:
[см. легенду]

Открытые члены

 MbMatrix ()
 Конструктор по умолчанию.
 
 MbMatrix (const MbMatrix &init)
 Конструктор копирования.
 
 MbMatrix (const MbPlacement &place)
 Конструктор по локальной системе координат.
 
 MbMatrix (const MbCartPoint &pnt, const MbDirection &dir)
 Конструктор по точке и нормализованному вектору. Подробнее...
 
 MbMatrix (const MbCartPoint &pc, double sx, double sy)
 Конструктор матрицы масштабирования по x и y. Подробнее...
 
 MbMatrix (const MbCartPoint &pc, double angle)
 Конструктор матрицы поворота. Подробнее...
 
 ~MbMatrix ()
 Деструктор.
 
void GetProperties (MbProperties &properties)
 Выдать свойства объекта.
 
void SetProperties (const MbProperties &properties)
 Записать свойства объекта.
 
Функции инициализации.
MbMatrixInit ()
 Инициализировать матрицу как единичную.
 
MbMatrixInit (const MbCartPoint &pnt, const MbDirection &dir)
 Инициализировать матрицу по точке и нормализованному вектору. Подробнее...
 
MbMatrixInit (const MbCartPoint &pc, double sx, double sy)
 Инициализировать матрицу масштабирования по x и y. Подробнее...
 
MbMatrixInit (const MbCartPoint &pc, double angle)
 Инициализировать матрицу поворота. Подробнее...
 
MbMatrixSet (const MbPlacement &place)
 Инициализировать матрицу согласно плейсменту. Подробнее...
 
MbMatrixSetZero ()
 Задать нулевую матрицу.
 
Функции проверки свойств матриц.
bool IsInvert () const
 Выдать признак отрицательности детерминанта матрицы вращения.
 
bool IsInvertEps (double eps=EXTENT_EPSILON) const
 Выдать признак отрицательности детерминанта матрицы вращения.
 
bool IsSingle () const
 Выдать признак единичности матрицы.
 
bool IsSingleEps (double eps=LENGTH_EPSILON) const
 Выдать признак единичности матрицы с заданной точностью.
 
bool IsTranslation () const
 Выдать признак не равенства нулю вектора трансляции.
 
bool IsRotation () const
 Выдать признак не единичности матрицы вращения.
 
bool IsLeft () const
 Выдать признак лево-определенной матрицы.
 
bool IsOrt () const
 Выдать признак ортогональности для случая аффинной матрицы.
 
bool IsOrthogonal () const
 Выдать признак ортогональности для матрицы вращения.
 
bool IsAffine () const
 Выдать признак того, что матрица вращения произвольная аффинная.
 
bool IsScaling () const
 Выдать признак не равенства 1.0 масштабного компонента. Подробнее...
 
bool IsPerspective () const
 
bool IsUnSet () const
 Проверить, что битовые флаги не установлены.
 
bool IsSame (const MbMatrix &, double accuracy) const
 Являются ли объекты равными?
 
bool IsTranslationOnly () const
 Выдать признак, что есть только перенос.
 
bool IsSubstitutionOnly (double epsilon=METRIC_EPSILON) const
 Совпадают ли оси описываемой матрицей ЛСК с глобальными осями с точностью до поворотов на 90 градусов?
 
bool IsIsotropic (double &l) const
 Выдать признак изотропности. Подробнее...
 
bool CanTransformGabarit () const
 Можно ли трансформировать габарит без искажений?
 
Функции доступа к элементам матрицы.
double El (size_t i, size_t j) const
 Выдать элемент матрицы.
 
const double * GetEl () const
 Выдать указатель на первый элемент матрицы.
 
const MbVectorGetAxisX () const
 Выдать первую строку (ось X).
 
const MbVectorGetAxisY () const
 Выдать вторую строку (ось Y).
 
const MbCartPointGetOrigin () const
 Выдать третью строку (начало системы координат).
 
MbVector GetColumn (size_t i) const
 Выдать i-ый вектор-столбец матрицы.
 
MbVector GetRow (size_t i) const
 Выдать i-ую вектор-строку матрицы.
 
MbHomogeneous GetFullColumn (size_t i) const
 Выдать i-ый вектор-столбец матрицы.
 
MbHomogeneous GetFullRow (size_t i) const
 Выдать i-ую вектор-строку матрицы.
 
Функции модификации элементов матрицы.
void El (size_t i, size_t j, double e)
 Присвоить значение элементу матрицы. Подробнее...
 
void AddEl (size_t i, size_t j, double e)
 Прибавить число к элементу матрицы. Подробнее...
 
void MulEl (size_t i, size_t j, double e)
 Умножить элемент матрицы на число. Подробнее...
 
void SetColumn (size_t icol, const MbCartPoint &column)
 Присвоить элементам столбца значения координат точки. Подробнее...
 
void SetColumn (size_t icol, const MbVector &column)
 Присвоить элементам столбца значения компонент вектора. Подробнее...
 
void SetColumn (size_t icol, const MbHomogeneous &column)
 Присвоить элементам столбца значения координат однородной точки. Подробнее...
 
void SetRow (size_t irow, const MbVector &row)
 Присвоить элементам строки значения компонент вектора. Подробнее...
 
void SetRow (size_t irow, const MbCartPoint &row)
 Присвоить элементам строки значения координат точки. Подробнее...
 
void SetRow (size_t irow, const MbHomogeneous &row)
 Присвоить элементам строки значения координат однородной точки. Подробнее...
 
void SetOrigin (const MbCartPoint &p)
 Установить компоненты сдвига матрицы.
 
Функции умножения матриц.
MbMatrixPreMultiply (const MbMatrix &)
 Домножить матрицу слева
 
MbMatrixPostMultiply (const MbMatrix &)
 Домножить матрицу справа
 
Функции масштабирования.
MbMatrixScale (double s)
 Масштабировать по X и Y.
 
void ScaleX (double s)
 Масштабировать по X.
 
void ScaleY (double s)
 Масштабировать по Y.
 
double GetScaleX () const
 Выдать коэффициент масштабирования по X.
 
double GetScaleY () const
 Выдать коэффициент масштабирования по Y.
 
bool IsDifferentScale () const
 Проверить, различаются ли коэффициенты масштабирования по X и Y.
 
Функции преобразований матрицы: сдвиг, поворот и т.д.
void Shift (double shift)
 Сместить по X и Y.
 
void ShiftX (double shift)
 Сместить по X.
 
void ShiftY (double shift)
 Сместить по Y.
 
MbMatrixMove (const MbVector &v)
 Сдвинуть на вектор (домножение справа на матрицу сдвига).
 
MbMatrixMove (double dx, double dy)
 Сдвинуть на заданные приращения.
 
MbMatrixRotate (double angle)
 Повернуть на угол. Подробнее...
 
MbMatrixRotate (const MbDirection &)
 Повернуть согласно вектору направления. Подробнее...
 
MbMatrixRotate (const MbCartPoint &, const MbDirection &angle)
 Повернуть вокруг точки на угол. Подробнее...
 
void TransformCoord (double x, double y, double &xn, double &yn) const
 Преобразовать координаты. Подробнее...
 
void TransformScalarX (double &len) const
 Преобразовать длину по направлению 0X. Подробнее...
 
MbMatrixSymmetry (const MbCartPoint &origin, const MbVector &normal)
 Задать матрицу преобразования симметрии (отражение). Подробнее...
 
MbMatrixSymmetry (const MbCartPoint &origin, const MbDirection &direction)
 Найти матрицу для преобразования симметрии относительно прямой, заданной точкой и направлением.
 
Расчет алгебраических свойств матрицы.
void Adj ()
 Транспонировать матрицу.
 
double Delta (size_t line, size_t column, size_t dim) const
 Вычислить алгебраическое дополнение.
 
double Det (size_t dim) const
 Вычислить определитель матрицы.
 
void Div (MbMatrix &) const
 Вычислить обратную матрицу.
 
double NormMax () const
 Наибольший элемент матрицы по абсолютному значению.
 
Перегрузка алгебраических и логических операций.
MbMatrix operator* (const MbMatrix &) const
 Умножить на матрицу справа.
 
MbMatrixoperator*= (const MbMatrix &m)
 Домножить на матрицу справа.
 
MbMatrixoperator= (const MbMatrix &m)
 Присвоить значение.
 
bool operator== (const MbMatrix &) const
 Сравнить с матрицей (точность - LENGTH_EPSILON).
 
double & operator() (size_t i, size_t j)
 Доступ по ссылке к элементу матрицы.
 
const double & operator() (size_t i, size_t j) const
 Значение элемента матрицы.
 

Статические открытые данные

static const MbMatrix identity
 Единичная матрица, I = diag(1,1,1);.
 

Защищенные данные

double el [MATRIX_DIM_2D][MATRIX_DIM_2D]
 Элементы матрицы.
 

Друзья

void MulMatrix (const MbMatrix &, const MbMatrix &, MbMatrix &)
 Перемножить матрицы. Подробнее...
 

Подробное описание

Расширенная матрица преобразования в двумерном пространстве.

Расширенная матрица преобразования в двумерном пространстве.
Расширенная матрица имеет размерность (3, 3) и представляет собой обычную матрицу, окаймлённую снизу вектором сдвига а справа нулевым столбцом. Трансформация точки p по матрице M имеет вид: r = p * M (строка координат умножается на матрицу слева).
Матрица преобразования из локальной системы координат может быть получена следующим образом:
первая строка матрицы должна быть заполнена соответствующими компонентами первого вектора локальной системы, вторая строка матрицы должна быть заполнена соответствующими компонентами второго вектора локальной системы, последняя строка матрицы должна быть заполнена соответствующими координатами положения начала локальной системы. Матрица трансформации состоит из четырёх блоков:
| R, P | | V, S | где R - матрица вращения, тензор размерностью (2, 2), V - вектор сдвига, тензор (0, 2), P - вектор перспективы, тензор (2, 0) (всегда ноль), S - скаляр масштабного преобразования (единица).

Конструктор(ы)

◆ MbMatrix() [1/3]

MbMatrix::MbMatrix ( const MbCartPoint pnt,
const MbDirection dir 
)
inline

Конструктор по точке и нормализованному вектору.

Конструктор по точке и нормализованному вектору.

Аргументы
[in]pnt- Точка. Задает сдвиг относительно нуля.
[in]dir- Единичный вектор. Задает поворот.

◆ MbMatrix() [2/3]

MbMatrix::MbMatrix ( const MbCartPoint pc,
double  sx,
double  sy 
)
inline

Конструктор матрицы масштабирования по x и y.

Конструктор матрицы масштабирования по x и y.

Аргументы
[in]pnt- Точка. Задает сдвиг относительно нуля.
[in]sx,sy- Коэффициенты масштабирования по x и y соответственно.

◆ MbMatrix() [3/3]

MbMatrix::MbMatrix ( const MbCartPoint pc,
double  angle 
)
inline

Конструктор матрицы поворота.

Конструктор матрицы поворота вокруг точки pc на угол angle.

Аргументы
[in]pc- Точка.
[in]angle- Угол поворота.

Методы

◆ Init() [1/3]

MbMatrix & MbMatrix::Init ( const MbCartPoint pnt,
const MbDirection dir 
)
inline

Инициализировать матрицу по точке и нормализованному вектору.

Инициализировать матрицу по точке и нормализованному вектору.

Аргументы
[in]pnt- Точка. Задает сдвиг относительно нуля.
[in]dir- Единичный вектор. Задает поворот.

◆ Init() [2/3]

MbMatrix& MbMatrix::Init ( const MbCartPoint pc,
double  sx,
double  sy 
)

Инициализировать матрицу масштабирования по x и y.

Инициализировать матрицу масштабирования по x и y.

Аргументы
[in]pnt- Точка. Задает сдвиг относительно нуля.
[in]sx,sy- Коэффициенты масштабирования по x и y соответственно.

◆ Init() [3/3]

MbMatrix& MbMatrix::Init ( const MbCartPoint pc,
double  angle 
)

Инициализировать матрицу поворота.

Инициализировать матрицу поворота вокруг точки pc на угол angle.

Аргументы
[in]pc- Точка.
[in]angle- Угол поворота.

◆ Set()

MbMatrix& MbMatrix::Set ( const MbPlacement place)

Инициализировать матрицу согласно плейсменту.

Инициализировать матрицу согласно плейсменту.

Аргументы
[in]place- Исходный плейсмент.

◆ IsScaling()

bool MbMatrix::IsScaling ( ) const
inline

Выдать признак не равенства 1.0 масштабного компонента.

Выдать признак не равенства нулю вектора перспективы.

◆ IsIsotropic()

bool MbMatrix::IsIsotropic ( double &  l) const

Выдать признак изотропности.

Выполняется проверка, является ли матрица ортогональной с равными по длине осями X, Y (круг остается кругом).

Аргументы
[out]l- Длина ортов осей X, Y.
Возвращает
true, если матрица изотропна.

◆ El()

void MbMatrix::El ( size_t  i,
size_t  j,
double  e 
)
inline

Присвоить значение элементу матрицы.

Присвоить значение элементу матрицы.

Аргументы
[in]i- Индекс строки.
[in]j- Индекс столбца.
[in]e- Исходное значение, которое надо присвоить элементу матрицы.

◆ AddEl()

void MbMatrix::AddEl ( size_t  i,
size_t  j,
double  e 
)
inline

Прибавить число к элементу матрицы.

Прибавить число к элементу матрицы.

Аргументы
[in]i- Индекс строки.
[in]j- Индекс столбца.
[in]e- Исходное число, которое надо прибавить к элементу матрицы.

◆ MulEl()

void MbMatrix::MulEl ( size_t  i,
size_t  j,
double  e 
)
inline

Умножить элемент матрицы на число.

Умножить элемент матрицы на число.

Аргументы
[in]i- Индекс строки.
[in]j- Индекс столбца.
[in]e- Исходное число, на которое надо умножить элемент матрицы.

◆ SetColumn() [1/3]

void MbMatrix::SetColumn ( size_t  icol,
const MbCartPoint column 
)

Присвоить элементам столбца значения координат точки.

Присвоить элементам столбца значения координат точки.

Аргументы
[in]icol- Индекс столбца.
[in]column- Исходная точка.

◆ SetColumn() [2/3]

void MbMatrix::SetColumn ( size_t  icol,
const MbVector column 
)

Присвоить элементам столбца значения компонент вектора.

Присвоить элементам столбца значения компонент вектора.

Аргументы
[in]icol- Индекс столбца.
[in]column- Исходный вектор.

◆ SetColumn() [3/3]

void MbMatrix::SetColumn ( size_t  icol,
const MbHomogeneous column 
)

Присвоить элементам столбца значения координат однородной точки.

Присвоить элементам столбца значения координат однородной точки.

Аргументы
[in]icol- Индекс столбца.
[in]column- Исходная точка.

◆ SetRow() [1/3]

void MbMatrix::SetRow ( size_t  irow,
const MbVector row 
)

Присвоить элементам строки значения компонент вектора.

Присвоить элементам строки значения компонент вектора.

Аргументы
[in]irow- Индекс столбца.
[in]row- Исходный вектор.

◆ SetRow() [2/3]

void MbMatrix::SetRow ( size_t  irow,
const MbCartPoint row 
)

Присвоить элементам строки значения координат точки.

Присвоить элементам строки значения координат точки.

Аргументы
[in]irow- Индекс столбца.
[in]row- Исходная точка.

◆ SetRow() [3/3]

void MbMatrix::SetRow ( size_t  irow,
const MbHomogeneous row 
)

Присвоить элементам строки значения координат однородной точки.

Присвоить элементам строки значения координат однородной точки.

Аргументы
[in]irow- Индекс столбца.
[in]row- Исходная точка.

◆ Rotate() [1/3]

MbMatrix& MbMatrix::Rotate ( double  angle)

Повернуть на угол.

Поворот совершается вокруг оси Z.

Аргументы
[in]angle- Угол вращения.

◆ Rotate() [2/3]

MbMatrix& MbMatrix::Rotate ( const MbDirection )

Повернуть согласно вектору направления.

Поворот совершается вокруг оси Z, т.к. матрица двумерная. Вектор направления определяет угол поворота.

Аргументы
[in]-Вектор направления.

◆ Rotate() [3/3]

MbMatrix& MbMatrix::Rotate ( const MbCartPoint ,
const MbDirection angle 
)

Повернуть вокруг точки на угол.

Повернуть вокруг точки на угол.

Аргументы
[in]-Точка.
[in]angle- Вектор направления, задающий угол вращения.

◆ TransformCoord()

void MbMatrix::TransformCoord ( double  x,
double  y,
double &  xn,
double &  yn 
) const
inline

Преобразовать координаты.

Координаты преобразуются согласно матрице.

Аргументы
[in]x,y- Старые координаты по x и y.
[in]xn,yn- Преобразованные координаты.

◆ TransformScalarX()

void MbMatrix::TransformScalarX ( double &  len) const
inline

Преобразовать длину по направлению 0X.

Длина преобразуются согласно матрице. Если матрица имеет разные масштабы по X и Y, то масштаб по Y проигнорируется.

Аргументы
[in,out]len- Длина по направлению 0X.

◆ Symmetry()

MbMatrix& MbMatrix::Symmetry ( const MbCartPoint origin,
const MbVector normal 
)

Задать матрицу преобразования симметрии (отражение).

Находится матрица для преобразования симметрии относительно прямой, заданной точкой и нормалью к прямой.

Аргументы
[in]origin- Точка прямой.
[in]normal- Нормаль прямой.

Документация по друзьям класса и функциям, относящимся к классу

◆ MulMatrix

void MulMatrix ( const MbMatrix ,
const MbMatrix ,
MbMatrix  
)
friend

Перемножить матрицы.

Умножение матрицы m1 на матрицу m2 (вместо res = m1 * m2).

Аргументы
[in]m1,m2- Исходные матрицы.
[out]res- Результирующая матрица.

Объявления и описания членов класса находятся в файле: