#include <Matrix.h>
Public Member Functions | |
Matrix4D (const Matrix4D &rclMtrx) | |
Construction. More... | |
Matrix4D (const Vector3d &rclBase, const Vector3d &rclDir, double fAngle) | |
Matrix4D (const Vector3f &rclBase, const Vector3f &rclDir, float fAngle) | |
Construction with an Axis. More... | |
Matrix4D (double a11, double a12, double a13, double a14, double a21, double a22, double a23, double a24, double a31, double a32, double a33, double a34, double a41, double a42, double a43, double a44) | |
Construction. More... | |
Matrix4D (float a11, float a12, float a13, float a14, float a21, float a22, float a23, float a24, float a31, float a32, float a33, float a34, float a41, float a42, float a43, float a44) | |
Construction. More... | |
Matrix4D (void) | |
Default constructor. More... | |
~Matrix4D () | |
Destruction. More... | |
Operators | |
Matrix4D | operator+ (const Matrix4D &rclMtrx) const |
Matrix addition. More... | |
Matrix4D & | operator+= (const Matrix4D &rclMtrx) |
Matrix4D | operator- (const Matrix4D &rclMtrx) const |
Matrix subtraction. More... | |
Matrix4D & | operator-= (const Matrix4D &rclMtrx) |
Matrix4D & | operator*= (const Matrix4D &rclMtrx) |
Matrix multiplication. More... | |
Matrix4D & | operator= (const Matrix4D &rclMtrx) |
Assignment. More... | |
Matrix4D | operator* (const Matrix4D &rclMtrx) const |
Matrix multiplication. More... | |
Vector3f | operator* (const Vector3f &rclVct) const |
Multiplication matrix with vector. More... | |
Vector3d | operator* (const Vector3d &rclVct) const |
void | multVec (const Vector3d &src, Vector3d &dst) const |
void | multVec (const Vector3f &src, Vector3f &dst) const |
bool | operator!= (const Matrix4D &rclMtrx) const |
Comparison. More... | |
bool | operator== (const Matrix4D &rclMtrx) const |
Comparison. More... | |
double * | operator[] (unsigned short usNdx) |
Index operator. More... | |
const double * | operator[] (unsigned short usNdx) const |
Index operator. More... | |
double | determinant () const |
Compute the determinant of the matrix. More... | |
std::string | analyse (void) const |
Analyse the transformation. More... | |
Matrix4D & | Outer (const Vector3f &rV1, const Vector3f &rV2) |
Outer product (Dyadic product) More... | |
Matrix4D & | Outer (const Vector3d &rV1, const Vector3d &rV2) |
Matrix4D & | Hat (const Vector3f &rV) |
Hat operator (skew symmetric) More... | |
Matrix4D & | Hat (const Vector3d &rV) |
void | getMatrix (double dMtrx[16]) const |
void | setMatrix (const double dMtrx[16]) |
void | getGLMatrix (double dMtrx[16]) const |
get the matrix in OpenGL style More... | |
void | setGLMatrix (const double dMtrx[16]) |
set the matrix in OpenGL style More... | |
unsigned long | getMemSpace (void) |
Manipulation | |
void | setToUnity (void) |
Makes unity matrix. More... | |
void | nullify (void) |
Makes a null matrix. More... | |
void | move (float x, float y, float z) |
moves the coordinatesystem for the x,y,z value More... | |
void | move (double x, double y, double z) |
void | move (const Vector3f &rclVct) |
moves the coordinatesystem for the vector More... | |
void | move (const Vector3d &rclVct) |
void | scale (float x, float y, float z) |
scale for the vector More... | |
void | scale (double x, double y, double z) |
void | scale (const Vector3f &rclVct) |
scale for the x,y,z value More... | |
void | scale (const Vector3d &rclVct) |
int | hasScale (double tol=0.0) const |
Check for scaling factor, 0: not scale, 1: uniform scale, or else -1. More... | |
void | rotX (double fAngle) |
Rotate around the X axis (in transformed space) for the given value in radians. More... | |
void | rotY (double fAngle) |
Rotate around the Y axis (in transformed space) for the given value in radians. More... | |
void | rotZ (double fAngle) |
Rotate around the Z axis (in transformed space) for the given value in radians. More... | |
void | rotLine (const Vector3f &rclVct, float fAngle) |
Rotate around an arbitrary axis passing the origin in radians. More... | |
void | rotLine (const Vector3d &rclVct, double fAngle) |
Rotate around an arbitrary axis passing the origin in radians. More... | |
void | rotLine (const Vector3f &rclBase, const Vector3f &rclDir, float fAngle) |
Rotate around an arbitrary axis that needn't necessarily pass the origin in radians. More... | |
void | rotLine (const Vector3d &rclBase, const Vector3d &rclDir, double fAngle) |
Rotate around an arbitrary axis that needn't necessarily pass the origin in radians. More... | |
bool | toAxisAngle (Vector3f &rclBase, Vector3f &rclDir, float &fAngle, float &fTranslation) const |
Extract the rotation axis and angle. Therefore the 3x3 submatrix must be orthogonal. More... | |
bool | toAxisAngle (Vector3d &rclBase, Vector3d &rclDir, double &fAngle, double &fTranslation) const |
void | transform (const Vector3f &rclVct, const Matrix4D &rclMtrx) |
transform (move,scale,rotate) around a point More... | |
void | transform (const Vector3d &rclVct, const Matrix4D &rclMtrx) |
void | inverse (void) |
Matrix is expected to have a 3x3 rotation submatrix. More... | |
void | inverseOrthogonal (void) |
Matrix is expected to have a 3x3 rotation submatrix. More... | |
void | inverseGauss (void) |
Arbitrary, non-singular matrix. More... | |
void | transpose (void) |
void | Print (void) const |
std::string | toString (void) const |
write the 16 double of the matrix into a string More... | |
void | fromString (const std::string &str) |
read the 16 double of the matrix from a string More... | |
Detailed Description
The Matrix4D class.
Constructor & Destructor Documentation
◆ Matrix4D() [1/6]
Matrix4D::Matrix4D | ( | void | ) |
Default constructor.
Initialises to an identity matrix
References setToUnity().
Referenced by getMemSpace().
◆ Matrix4D() [2/6]
Matrix4D::Matrix4D | ( | float | a11, |
float | a12, | ||
float | a13, | ||
float | a14, | ||
float | a21, | ||
float | a22, | ||
float | a23, | ||
float | a24, | ||
float | a31, | ||
float | a32, | ||
float | a33, | ||
float | a34, | ||
float | a41, | ||
float | a42, | ||
float | a43, | ||
float | a44 | ||
) |
Construction.
◆ Matrix4D() [3/6]
Matrix4D::Matrix4D | ( | double | a11, |
double | a12, | ||
double | a13, | ||
double | a14, | ||
double | a21, | ||
double | a22, | ||
double | a23, | ||
double | a24, | ||
double | a31, | ||
double | a32, | ||
double | a33, | ||
double | a34, | ||
double | a41, | ||
double | a42, | ||
double | a43, | ||
double | a44 | ||
) |
Construction.
◆ Matrix4D() [4/6]
Matrix4D::Matrix4D | ( | const Matrix4D & | rclMtrx | ) |
Construction.
◆ Matrix4D() [5/6]
Construction with an Axis.
References rotLine(), and setToUnity().
◆ Matrix4D() [6/6]
References rotLine(), and setToUnity().
◆ ~Matrix4D()
Base::Matrix4D::~Matrix4D | ( | ) |
Destruction.
Member Function Documentation
◆ analyse()
std::string Matrix4D::analyse | ( | void | ) | const |
Analyse the transformation.
References determinant(), and transpose().
Referenced by Base::MatrixPy::analyze().
◆ determinant()
double Matrix4D::determinant | ( | ) | const |
Compute the determinant of the matrix.
Referenced by analyse().
◆ fromString()
void Matrix4D::fromString | ( | const std::string & | str | ) |
read the 16 double of the matrix from a string
Referenced by Points::PropertyPointKernel::Restore().
◆ getGLMatrix()
void Matrix4D::getGLMatrix | ( | double | dMtrx[16] | ) | const |
get the matrix in OpenGL style
Referenced by Gui::ViewProvider::convert(), inverseGauss(), Gui::View3DInventorViewer::setEditingTransform(), Gui::LinkView::setTransform(), and Gui::ViewProvider::setTransformation().
◆ getMatrix()
void Matrix4D::getMatrix | ( | double | dMtrx[16] | ) | const |
Referenced by Base::MatrixPy::getA(), and Base::MatrixPy::setA().
◆ getMemSpace()
unsigned long Matrix4D::getMemSpace | ( | void | ) |
References Matrix4D().
◆ hasScale()
int Matrix4D::hasScale | ( | double | tol = 0.0 | ) | const |
Check for scaling factor, 0: not scale, 1: uniform scale, or else -1.
References Base::Vector3< _Precision >::Sqr().
◆ Hat() [1/2]
◆ Hat() [2/2]
Hat operator (skew symmetric)
References setToUnity().
◆ inverse()
void Matrix4D::inverse | ( | void | ) |
Matrix is expected to have a 3x3 rotation submatrix.
Referenced by PartGui::evaluateAngularPreSelection(), PathGui::PathSelectionObserver::onSelectionChanged(), PartGui::TaskMeasureAngular::onSelectionChanged(), and Gui::ViewProviderDragger::setEditViewer().
◆ inverseGauss()
void Matrix4D::inverseGauss | ( | void | ) |
Arbitrary, non-singular matrix.
References getGLMatrix(), and setGLMatrix().
Referenced by Gui::TreeWidget::dropEvent(), Base::MatrixPy::invert(), and PartDesign::SubShapeBinder::update().
◆ inverseOrthogonal()
void Matrix4D::inverseOrthogonal | ( | void | ) |
Matrix is expected to have a 3x3 rotation submatrix.
References operator*(), and transpose().
Referenced by Mesh::MeshPy::cut(), and Mesh::MeshPy::trim().
◆ move() [1/4]
void Matrix4D::move | ( | const Vector3d & | rclVct | ) |
◆ move() [2/4]
void Matrix4D::move | ( | const Vector3f & | rclVct | ) |
moves the coordinatesystem for the vector
References move().
Referenced by draftguitools.gui_circulararray.CircularArray::Activated(), and draftguitools.gui_polararray.PolarArray::Activated().
◆ move() [3/4]
void Base::Matrix4D::move | ( | double | x, |
double | y, | ||
double | z | ||
) |
◆ move() [4/4]
void Base::Matrix4D::move | ( | float | x, |
float | y, | ||
float | z | ||
) |
moves the coordinatesystem for the x,y,z value
Referenced by draftguitools.gui_circulararray.CircularArray::Activated(), draftguitools.gui_polararray.PolarArray::Activated(), Data::ComplexGeoData::applyTranslation(), Base::ViewProjMatrix::getProjectionMatrix(), Base::MatrixPy::move(), move(), Import::ImpExpDxfRead::OnReadInsert(), DraftUtils::DraftDxfRead::OnReadInsert(), transform(), and Mesh::MeshPy::translate().
◆ multVec() [1/2]
◆ multVec() [2/2]
References Base::float_traits< double >::epsilon().
◆ nullify()
void Matrix4D::nullify | ( | void | ) |
Makes a null matrix.
◆ operator!=()
◆ operator*() [1/3]
Matrix multiplication.
Referenced by inverseOrthogonal().
◆ operator*() [2/3]
◆ operator*() [3/3]
Multiplication matrix with vector.
◆ operator*=()
◆ operator+()
◆ operator+=()
◆ operator-()
◆ operator-=()
◆ operator=()
◆ operator==()
◆ operator[]() [1/2]
double * Base::Matrix4D::operator[] | ( | unsigned short | usNdx | ) |
Index operator.
◆ operator[]() [2/2]
const double * Base::Matrix4D::operator[] | ( | unsigned short | usNdx | ) | const |
Index operator.
◆ Outer() [1/2]
◆ Outer() [2/2]
Outer product (Dyadic product)
References setToUnity().
◆ Print()
void Matrix4D::Print | ( | void | ) | const |
◆ rotLine() [1/4]
Rotate around an arbitrary axis that needn't necessarily pass the origin in radians.
References rotLine(), and transform().
◆ rotLine() [2/4]
void Matrix4D::rotLine | ( | const Vector3d & | rclVct, |
double | fAngle | ||
) |
Rotate around an arbitrary axis passing the origin in radians.
References Base::Vector3< _Precision >::Normalize(), Base::Vector3< _Precision >::x, Base::Vector3< _Precision >::y, and Base::Vector3< _Precision >::z.
◆ rotLine() [3/4]
Rotate around an arbitrary axis that needn't necessarily pass the origin in radians.
References rotLine().
◆ rotLine() [4/4]
void Matrix4D::rotLine | ( | const Vector3f & | rclVct, |
float | fAngle | ||
) |
Rotate around an arbitrary axis passing the origin in radians.
Referenced by Matrix4D(), rotLine(), and TechDraw::DrawUtil::vecRotate().
◆ rotX()
void Matrix4D::rotX | ( | double | fAngle | ) |
Rotate around the X axis (in transformed space) for the given value in radians.
Referenced by Mesh::MeshPy::rotate(), and Base::MatrixPy::rotateX().
◆ rotY()
void Matrix4D::rotY | ( | double | fAngle | ) |
Rotate around the Y axis (in transformed space) for the given value in radians.
Referenced by Base::MatrixPy::rotateY().
◆ rotZ()
void Matrix4D::rotZ | ( | double | fAngle | ) |
Rotate around the Z axis (in transformed space) for the given value in radians.
Referenced by Part::Prism::execute(), Part::RegularPolygon::execute(), PartDesign::Prism::execute(), Import::ImpExpDxfRead::OnReadInsert(), DraftUtils::DraftDxfRead::OnReadInsert(), and Base::MatrixPy::rotateZ().
◆ scale() [1/4]
void Matrix4D::scale | ( | const Vector3d & | rclVct | ) |
◆ scale() [2/4]
◆ scale() [3/4]
void Base::Matrix4D::scale | ( | double | x, |
double | y, | ||
double | z | ||
) |
◆ scale() [4/4]
void Base::Matrix4D::scale | ( | float | x, |
float | y, | ||
float | z | ||
) |
scale for the vector
Referenced by App::LinkBaseExtension::extensionGetSubObject(), Base::ViewProjMatrix::getProjectionMatrix(), App::LinkBaseExtension::getTransform(), Import::ImpExpDxfRead::OnReadInsert(), DraftUtils::DraftDxfRead::OnReadInsert(), Base::MatrixPy::scale(), scale(), and Gui::ViewProviderLink::updateDataPrivate().
◆ setGLMatrix()
void Matrix4D::setGLMatrix | ( | const double | dMtrx[16] | ) |
set the matrix in OpenGL style
Referenced by inverseGauss().
◆ setMatrix()
void Matrix4D::setMatrix | ( | const double | dMtrx[16] | ) |
Referenced by Base::MatrixPy::setA().
◆ setToUnity()
void Matrix4D::setToUnity | ( | void | ) |
Makes unity matrix.
Referenced by MeshCore::FunctionContainer::GetHessian(), MeshCore::AbstractPolygonTriangulator::GetTransformToFitPlane(), Hat(), Base::Rotation::makeRotationByAxes(), Matrix4D(), Outer(), Mesh::PropertyNormalList::transformGeometry(), Mesh::PropertyCurvatureList::transformGeometry(), Points::PropertyNormalList::transformGeometry(), Points::PropertyCurvatureList::transformGeometry(), and Base::MatrixPy::unity().
◆ toAxisAngle() [1/2]
◆ toAxisAngle() [2/2]
bool Matrix4D::toAxisAngle | ( | Vector3f & | rclBase, |
Vector3f & | rclDir, | ||
float & | rfAngle, | ||
float & | fTranslation | ||
) | const |
Extract the rotation axis and angle. Therefore the 3x3 submatrix must be orthogonal.
If this matrix describes a rotation around an arbitrary axis with a translation (in axis direction) then the base point of the axis, its direction, the rotation angle and the translation part get calculated.
In this case the return value is set to true, if this matrix doesn't describe a rotation false is returned.
The translation vector can be calculated with fTranslation * rclDir, whereas the length of rclDir is normalized to 1.
Note: In case the fTranslation part is zero then passing rclBase, rclDir and rfAngle to a new matrix object creates an identical matrix.
◆ toString()
std::string Matrix4D::toString | ( | void | ) | const |
write the 16 double of the matrix into a string
◆ transform() [1/2]
◆ transform() [2/2]
transform (move,scale,rotate) around a point
References move().
Referenced by rotLine(), and Base::MatrixPy::transform().
◆ transpose()
void Matrix4D::transpose | ( | void | ) |
Referenced by analyse(), inverseOrthogonal(), Base::MatrixPy::isOrthogonal(), and Base::MatrixPy::transpose().
The documentation for this class was generated from the following files:
- src/Base/Matrix.h
- src/Base/Matrix.cpp