This class provides with operations for Matrix Objects + some changes
MatrixMath.h
- Committer:
- saloutos
- Date:
- 2020-10-01
- Revision:
- 7:1c6ba87fa6a3
- Parent:
- 6:aa5e94cddb3f
File content as of revision 7:1c6ba87fa6a3:
/** * @brief Version 0.9 * @file MatrixMath.h * @author Ernesto Palacios * * Created on 15 de septiembre de 2011, 09:44 AM. * * Develop Under GPL v3.0 License * http://www.gnu.org/licenses/gpl-3.0.html * */ #ifndef MATRIXMATH_H #define MATRIXMATH_H #include "mbed.h" #include "Matrix.h" /** * @brief This class provides STATIC methods to perform operations * over Matrix Objects, version 0.9. */ class MatrixMath{ public: /**@brief * Transposes Matrix, return new Object. * @param Mat matrix to calculate * @return Transposed Matrix */ static Matrix Transpose( const Matrix& Mat ); /**@brief * Calculate the inverse of a [n,n] Matrix BUT you check first if * the determinant is != 0, Same matrix will be return if Det( Mat ) == 0. * @param Mat matrix to calcute inverse. * @return Matrix Inverse */ static Matrix Inv( const Matrix& Mat ); /**@brief * Creates an identity [n,n] Matrix * @param Rows Number of Rowns and Columns * @return Identity Matrix of dimensions [Rows,Rows] */ static Matrix Eye( int Rows ); /**@brief * Returns the dot Product of any two same leght vectors. * In this case a vector is defined as a [1,n] or [n,1] Matrix. * Very Flexible Function. * @param leftM First Vector * @param rightM Second Vector * @return Dot Product or Scalar Product. */ static float dot( const Matrix& leftM, const Matrix& rightM ); /**@brief Calculates the determinant of a Matrix. * @param Mat matrix to calculate. * @return the determinant. */ static float det( const Matrix& Mat ); /**@brief Calculates Kronecker product of two Matrix. * Kronecker product is an operation on two matrices of arbitrary * size resulting in a block matrix. If A is an m × n matrix * and B is a p × q matrix, then the Kronecker product A ⊗ B is * the pm × qn block matrix: * - - * | a_11 B ... a_1n B | * A ⊗ B = | ... ... ... | * | a_m1 B ... a_mn B | * - - * @param Mat_A Matrix m × n * @param Mat_B Matrix p × q * @return Kron Matrix pm × qn. */ static Matrix kron(const Matrix& Mat_A, const Matrix& Mat_B); //==== For Kinematics ====// /**@brief * Calculates the Rotation Matrix Transform along 'x' axis in radians. * @param radians rotation angle. * @return Rotation Matrix[4,4] along 'x' axis. */ static Matrix RotX( float radians ); /**@brief * Calculates the Rotation Matrix Transform along 'y' axis in radians. * @param radians rotation angle. * @return Rotation Matrix[4,4] along 'y' axis. */ static Matrix RotY( float radians ); /**@brief * Calculates the Rotation Matrix Transform along 'z' axis in radians. * @param radians rotation angle. * @return Rotation Matrix[4,4] along 'z' axis. */ static Matrix RotZ( float radians ); /**@brief * Calculates the Translation Matrix to coordenates (x' y' z'). * @param x axis translation * @param y axis translation * @param z axis translation * @return Translation Matrix[4,4] x'y'z'. */ static Matrix Transl( float x, float y, float z ); private: /**@brief * Calculates the Determinant of a 3x3 Matrix * @param Mat Already made sure is a 3 by 3 * @return Float, determinant. */ float Det3x3( const Matrix& Mat ); }; #endif /* MATRIXMATH_H */