C3D Kernel  104065
Открытые члены | Статические открытые данные | Защищенные данные | Друзья

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

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

Полный список членов класса

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

 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::MbMatrix ( const MbCartPoint pnt,
const MbDirection dir 
) [inline]

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

Аргументы:
[in]pnt- Точка. Задает сдвиг относительно нуля.
[in]dir- Единичный вектор. Задает поворот.
MbMatrix::MbMatrix ( const MbCartPoint pc,
double  sx,
double  sy 
) [inline]

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

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

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

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

Методы

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

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

Аргументы:
[in]pnt- Точка. Задает сдвиг относительно нуля.
[in]dir- Единичный вектор. Задает поворот.
MbMatrix& MbMatrix::Init ( const MbCartPoint pc,
double  sx,
double  sy 
)

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

Аргументы:
[in]pnt- Точка. Задает сдвиг относительно нуля.
[in]sx,sy- Коэффициенты масштабирования по x и y соответственно.
MbMatrix& MbMatrix::Init ( const MbCartPoint pc,
double  angle 
)

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

Аргументы:
[in]pc- Точка.
[in]angle- Угол поворота.
MbMatrix& MbMatrix::Set ( const MbPlacement place)

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

Аргументы:
[in]place- Исходный плейсмент.
bool MbMatrix::IsScaling ( ) const [inline]

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

bool MbMatrix::IsIsotropic ( double &  l) const

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

Аргументы:
[out]l- Длина ортов осей X, Y.
Возвращает:
true, если матрица изотропна.
void MbMatrix::El ( size_t  i,
size_t  j,
double  e 
) [inline]

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

Аргументы:
[in]i- Индекс строки.
[in]j- Индекс столбца.
[in]e- Исходное значение, которое надо присвоить элементу матрицы.
void MbMatrix::AddEl ( size_t  i,
size_t  j,
double  e 
) [inline]

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

Аргументы:
[in]i- Индекс строки.
[in]j- Индекс столбца.
[in]e- Исходное число, которое надо прибавить к элементу матрицы.
void MbMatrix::MulEl ( size_t  i,
size_t  j,
double  e 
) [inline]

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

Аргументы:
[in]i- Индекс строки.
[in]j- Индекс столбца.
[in]e- Исходное число, на которое надо умножить элемент матрицы.
void MbMatrix::SetColumn ( size_t  icol,
const MbCartPoint column 
)

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

Аргументы:
[in]icol- Индекс столбца.
[in]column- Исходная точка.
void MbMatrix::SetColumn ( size_t  icol,
const MbVector column 
)

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

Аргументы:
[in]icol- Индекс столбца.
[in]column- Исходный вектор.
void MbMatrix::SetColumn ( size_t  icol,
const MbHomogeneous column 
)

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

Аргументы:
[in]icol- Индекс столбца.
[in]column- Исходная точка.
void MbMatrix::SetRow ( size_t  irow,
const MbVector row 
)

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

Аргументы:
[in]irow- Индекс столбца.
[in]row- Исходный вектор.
void MbMatrix::SetRow ( size_t  irow,
const MbCartPoint row 
)

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

Аргументы:
[in]irow- Индекс столбца.
[in]row- Исходная точка.
void MbMatrix::SetRow ( size_t  irow,
const MbHomogeneous row 
)

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

Аргументы:
[in]irow- Индекс столбца.
[in]row- Исходная точка.
MbMatrix& MbMatrix::Rotate ( double  angle)

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

Аргументы:
[in]angle- Угол вращения.
MbMatrix& MbMatrix::Rotate ( const MbDirection )

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

Аргументы:
[in]-Вектор направления.
MbMatrix& MbMatrix::Rotate ( const MbCartPoint ,
const MbDirection angle 
)

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

Аргументы:
[in]-Точка.
[in]angle- Вектор направления, задающий угол вращения.
void MbMatrix::TransformCoord ( double  x,
double  y,
double &  xn,
double &  yn 
) const [inline]

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

Аргументы:
[in]x,y- Старые координаты по x и y.
[in]xn,yn- Преобразованные координаты.
void MbMatrix::TransformScalarX ( double &  len) const [inline]

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

Аргументы:
[in,out]len- Длина по направлению 0X.
MbMatrix& MbMatrix::Symmetry ( const MbCartPoint origin,
const MbVector normal 
)

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

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

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

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

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

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

Объявления и описания членов класса находятся в файле:
 Указатель Классы Пространства имен Файлы Функции Переменные Определения типов Перечисления Элементы перечислений Друзья Макросы