C3D Toolkit  Kernel - 105122, Vision - 0.181114.105122

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

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

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

 MbMatrix3D ()
 Конструктор по умолчанию, определяет единичную матрицу.
 
 MbMatrix3D (const MbMatrix3D &init)
 Конструктор копирования.
 
 MbMatrix3D (const MbPlacement3D &place)
 Конструктор по локальной системе координат.
 
 MbMatrix3D (const MbMatrix &m)
 Конструктор по двумерной матрице.
 
 MbMatrix3D (const MbMatrix3D &A, const MbMatrix3D &B)
 Конструктор по двум матрицам. Подробнее...
 
 ~MbMatrix3D ()
 Деструктор.
 
void MouldCavityScale (MbCartPoint3D &fixedPoint, double deltaX, double deltaY, double deltaZ)
 Получить матрицу для масштабирования каверны литейной формы. Подробнее...
 
bool SetRoundedValue (bool total, double eps)
 Округлить с точностью до eps. Подробнее...
 
void Normalize ()
 Нормализовать.
 
bool CalculateFixedPoint (MbCartPoint3D &fixedPoint) const
 Вычислить неподвижную точку преобразования.
 
void GetProperties (MbProperties &)
 Выдать свойства объекта.
 
void SetProperties (const MbProperties &)
 Записать свойства объекта.
 
Функции инициализации.
void Init ()
 Инициализировать матрицу как единичную.
 
void Init (const MbMatrix3D &init)
 Инициализировать элементами другой матрицы.
 
void Init (const MbMatrix &)
 Инициализировать двумерной матрицей.
 
void Init (const MbPlacement3D &)
 Инициализировать плейсментом.
 
void Init (const MbMatrix3D &a, const MbMatrix3D &b)
 Инициализировать произведением заданных матриц. Подробнее...
 
Функции проверки свойств матриц.
bool IsInvert () const
 Выдать признак отрицательности детерминанта матрицы вращения.
 
bool IsSingle () const
 Выдать признак единичности матрицы.
 
bool IsSingleEps (double eps=PARAM_EPSILON) const
 Выдать признак единичности матрицы с заданной точностью.
 
bool IsTranslation () const
 Выдать признак не равенства нулю вектора трансляции.
 
bool IsRotation () const
 Выдать признак не единичности матрицы вращения.
 
bool IsReflection () const
 Выдать признак отрицательности детерминанта матрицы вращения.
 
bool IsOrt () const
 Выдать признак ортогональности для случая аффинной матрицы.
 
bool IsOrthogonal () const
 Выдать признак ортогональности для матрицы вращения.
 
bool IsAffine () const
 Выдать признак того, что матрица вращения произвольная аффинная.
 
bool IsScaling () const
 Выдать признак не равенства 1.0 масштабного компонента. Подробнее...
 
bool IsPerspective () const
 
bool IsUnSet () const
 Проверить, что битовые флаги не установлены.
 
bool IsSame (const MbMatrix3D &, double accuracy) const
 Являются ли объекты равными?
 
bool IsAbsIdentical (const MbMatrix3D &m) const
 Выдать признак идентичности матриц.
 
bool IsTranslationOnly () const
 Выдать признак, что есть только перенос.
 
bool IsSubstitutionOnly (double epsilon=METRIC_EPSILON) const
 Совпадают ли оси описываемой матрицей ЛСК с глобальными осями с точностью до поворотов на 90 градусов?
 
bool IsIsotropic (double &l) const
 Выдать признак изотропности. Подробнее...
 
Функции доступа к элементам матрицы.
double El (size_t i, size_t j) const
 Дать элемент матрицы.
 
const double * GetEl () const
 Дать указатель на первый элемент матрицы.
 
const MbVector3DGetAxisX () const
 Дать первую строку (ось X).
 
const MbVector3DGetAxisY () const
 Дать вторую строку (ось Y).
 
const MbVector3DGetAxisZ () const
 Дать третью строку (ось Z).
 
const MbCartPoint3DGetOrigin () const
 Дать четвертую строку (начало системы координат).
 
MbVector3D GetColumn (size_t i) const
 Выдать i-ый вектор-столбец матрицы.
 
MbVector3D GetRow (size_t i) const
 Выдать i-ую вектор-строку матрицы.
 
MbHomogeneous3D GetFullColumn (size_t i) const
 Выдать i-ый вектор-столбец матрицы.
 
MbHomogeneous3D GetFullRow (size_t i) const
 Выдать i-ую вектор-строку матрицы.
 
void GetOffset (MbCartPoint3D &p) const
 Выдать компоненты сдвига матрицы.
 
Функции модификации элементов матрицы.
void SetEl (const double *_el)
 Присвоить значение элементам матрицы. Подробнее...
 
GLdouble * SetEl ()
 Дать массив элементов матрицы. Подробнее...
 
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)
 Умножить элемент матрицы на число. Подробнее...
 
MbVector3DSetAxisX ()
 Дать первую строку (ось X).
 
MbVector3DSetAxisY ()
 Дать вторую строку (ось Y).
 
MbVector3DSetAxisZ ()
 Дать третью строку (ось Z).
 
MbCartPoint3DSetOrigin ()
 Дать четвертую строку (начало системы координат).
 
void SetOriginZ (double or_z)
 Установить Z компоненту начала координат.
 
void SetColumn (size_t i, const MbCartPoint3D &)
 Установить значения в i-ый столбец матрицы.
 
void SetColumn (size_t i, const MbVector3D &)
 Установить значения в i-ый столбец матрицы.
 
void SetColumn (size_t i, const MbHomogeneous3D &)
 Установить значения в i-ый столбец матрицы.
 
void SetRow (size_t i, const MbCartPoint3D &)
 Установить значения в i-ую строку матрицы.
 
void SetRow (size_t i, const MbVector3D &)
 Установить значения в i-ую строку матрицы.
 
void SetRow (size_t i, const MbHomogeneous3D &)
 Установить значения в i-ую строку матрицы.
 
void SetOffset (const MbCartPoint3D &p)
 Установить компоненты сдвига матрицы.
 
void SetFlag (bool bReflection, bool bAffine=false, bool bOrt=true) const
 Установить флаг состояния. Подробнее...
 
Функции умножения матриц.
void Multiply (const MbMatrix3D &b)
 Умножить на матрицу: this = this * b;.
 
void Multiply (const MbMatrix3D &a, const MbMatrix3D &b)
 Перемножить матрицы this = a * b.
 
Функции масштабирования.
void Scale (double sx, double sy, double sz)
 Масштабировать по X, Y, Z. Подробнее...
 
void Scale (double s)
 Масштабировать по X, Y, Z.
 
void ScaleX (double s)
 Масштабировать по X.
 
void ScaleY (double s)
 Масштабировать по Y.
 
void ScaleZ (double s)
 Масштабировать по Z.
 
void ScaleAxes (double s)
 Масштабировать по X и Y и Z без сдвига.
 
double GetScaleX () const
 Выдать коэффициент масштабирования по X.
 
double GetScaleY () const
 Выдать коэффициент масштабирования по Y.
 
double GetScaleZ () const
 Выдать коэффициент масштабирования по Z.
 
Функции преобразований матрицы: сдвиг, поворот и т.д.
void Move (const MbVector3D &to)
 Сдвинуть на заданный вектор.
 
void Move (double dx, double dy, double dz)
 Сдвинуть на заданные приращения.
 
void MoveZero ()
 Сдвинуть в нуль.
 
MbMatrix3DRotateAbout (const MbVector3D &axisDir, double angle)
 Повернуть вокруг оси. Подробнее...
 
MbMatrix3DRotate (const MbAxis3D &axis, double angle)
 Повернуть вокруг заданной оси на заданный угол.
 
MbMatrix3DRotate (int axis, double angle)
 Повернуть вокруг оси. Подробнее...
 
void TransformLength (double &len, int axis=1) const
 Преобразовать длину. Подробнее...
 
void TransformCoord2D (double &x, double &y) const
 Преобразовать координаты. Подробнее...
 
MbMatrix3DTransform (const MbMatrix3D &matr)
 Преобразовать согласно заданной матрице.
 
void Invert (size_t n)
 Инвертировать ось.
 
MbMatrix3DSymmetry (const MbCartPoint3D &origin, const MbVector3D &normal)
 Задать матрицу преобразования симметрии (отражение). Подробнее...
 
MbMatrix3DSymmetry (const MbCartPoint3D &origin, const MbVector3D &vx, const MbVector3D &vy)
 Задать матрицу преобразования симметрии (отражение). Подробнее...
 
Расчет алгебраических свойств матрицы.
void Adj ()
 Транспонировать матрицу.
 
double Delta (size_t line, size_t column, size_t dim) const
 Вычислить алгебраическое дополнение.
 
double Det (size_t dim) const
 Вычислить определитель матрицы.
 
void Div (MbMatrix3D &) const
 Вычислить обратную матрицу.
 
Перегрузка алгебраических и логических операций.
MbMatrix3D operator* (const MbMatrix3D &m) const
 Умножить на матрицу: M = this * m.
 
MbMatrix3Doperator*= (const MbMatrix3D &m)
 Умножить на матрицу: this = this * m.
 
MbMatrix3Doperator= (const MbMatrix3D &m)
 Присвоить значение.
 
void operator+= (const MbMatrix3D &)
 Сложить матрицы.
 
void operator-= (const MbMatrix3D &)
 Вычесть из матрицы матрицу.
 
void operator*= (double factor)
 Умножить матрицу на число.
 
void operator/= (double factor)
 Разделить матрицу на число.
 
bool operator== (const MbMatrix3D &) const
 Сравнить с матрицей (точность - LENGTH_EPSILON).
 
double & operator() (size_t i, size_t j)
 Доступ по ссылке к элементу матрицы.
 
const double & operator() (size_t i, size_t j) const
 Значение элемента матрицы.
 

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

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

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

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

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

| R, P |
| V, S |
, где R - матрица вращения, тензор размерностью (3, 3), V - вектор сдвига, тензор (0, 3), P - вектор перспективы, тензор (3, 0) (всегда ноль), S - скаляр масштабного преобразования (единица).
Для ускорения вычислений матрица имеет дополнительные данные - флаг состояния.
Для получения данных матрицы извне следует пользоваться методами Get...
Для модификации данных матрицы извне следует пользоваться методами Set..., которые автоматически сбрасывают флаг системы в неустановленное состояние.

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

◆ MbMatrix3D()

MbMatrix3D::MbMatrix3D ( const MbMatrix3D A,
const MbMatrix3D B 
)
inlineexplicit

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

Матрица определяется как произведение двух исходных: C = (B * A).

Аргументы
[in]A,B- Исходные матрицы.

Методы

◆ Init()

void MbMatrix3D::Init ( const MbMatrix3D a,
const MbMatrix3D b 
)

Инициализировать произведением заданных матриц.

Инициализировать произведением заданных матриц. this = b * a (!= a * b)!!!.

Аргументы
[in]a,b- Исходные матрицы.

◆ IsScaling()

bool MbMatrix3D::IsScaling ( ) const
inline

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

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

◆ IsIsotropic()

bool MbMatrix3D::IsIsotropic ( double &  l) const

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

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

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

◆ SetEl() [1/2]

void MbMatrix3D::SetEl ( const double *  _el)
inline

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

Элементы матрицы инициализируются элементами исходного массива.

Аргументы
[in]_el- Исходный массив.

◆ SetEl() [2/2]

GLdouble* MbMatrix3D::SetEl ( )
inline

Дать массив элементов матрицы.

ТОЛЬКО ДЛЯ OGL !!!

Возвращает
Указатель на начало массива элементов матрицы.

◆ El()

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

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

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

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

◆ AddEl()

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

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

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

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

◆ MulEl()

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

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

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

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

◆ SetFlag()

void MbMatrix3D::SetFlag ( bool  bReflection,
bool  bAffine = false,
bool  bOrt = true 
) const

Установить флаг состояния.

Установить флаг состояния.

Аргументы
[in]bReflection- Флаг отрицательности детерминанта матрицы вращения.
[in]bAffine- Флаг аффинности.
[in]bOrt- Флаг ортогональности.

◆ Scale()

void MbMatrix3D::Scale ( double  sx,
double  sy,
double  sz 
)
inline

Масштабировать по X, Y, Z.

Масштабировать по X, Y, Z.

Аргументы
[in]sx,sy,sz- Коэффициенты масштабирования для каждой из осей.

◆ RotateAbout()

MbMatrix3D& MbMatrix3D::RotateAbout ( const MbVector3D axisDir,
double  angle 
)

Повернуть вокруг оси.

Повернуть вокруг оси, проходящей через центр координат в направлении axisDir.

Аргументы
[in]axisDir- Вектор, задающий направление поворота.
[in]angle- Угол поворота.
Возвращает
Матрица возвращает ссылку на себя.

◆ Rotate()

MbMatrix3D& MbMatrix3D::Rotate ( int  axis,
double  angle 
)

Повернуть вокруг оси.

Повернуть вокруг оси X, Y, Z.

Аргументы
[in]axis- Номер оси, т.е. AXIS_0X, AXIS_0Y или AXIS_0Z.
[in]angle- Угол поворота.
Возвращает
Матрица возвращает ссылку на себя.

◆ TransformLength()

void MbMatrix3D::TransformLength ( double &  len,
int  axis = 1 
) const

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

Длина преобразуются согласно матрице (*this).

Аргументы
[in,out]len- Длина.
[in]axis- Ось, по которой отмеряется длина.

◆ TransformCoord2D()

void MbMatrix3D::TransformCoord2D ( double &  x,
double &  y 
) const
inline

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

Координаты преобразуются согласно матрице. Преобразовываются две координаты (z = 0).

Аргументы
[in,out]x,y- Координаты по x и y.

◆ Symmetry() [1/2]

MbMatrix3D& MbMatrix3D::Symmetry ( const MbCartPoint3D origin,
const MbVector3D normal 
)

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

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

Аргументы
[in]origin- Точка плоскости.
[in]normal- Нормаль плоскости.
Возвращает
Матрица возвращает ссылку на себя.

◆ Symmetry() [2/2]

MbMatrix3D& MbMatrix3D::Symmetry ( const MbCartPoint3D origin,
const MbVector3D vx,
const MbVector3D vy 
)

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

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

Аргументы
[in]origin- Точка плоскости (начало системы координат).
[in]vx,vy- Векторы, параллельные плоскости.
Возвращает
Матрица возвращает ссылку на себя.

◆ MouldCavityScale()

void MbMatrix3D::MouldCavityScale ( MbCartPoint3D fixedPoint,
double  deltaX,
double  deltaY,
double  deltaZ 
)

Получить матрицу для масштабирования каверны литейной формы.

Получить матрицу для масштабирования каверны литейной формы.

Аргументы
[in]fixedPoint- Неподвижная точка.
[in]deltaX,deltaY,deltaZ- Относительное приращение размера по направлению соответствующей координаты.

◆ SetRoundedValue()

bool MbMatrix3D::SetRoundedValue ( bool  total,
double  eps 
)

Округлить с точностью до eps.

Округлить с точностью до eps.

Аргументы
[in]total- Если true, то округлять в любом случае.
[in]eps- Точность округления.
Возвращает
true, если округление было выполнено.

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