use from Ernesto Palacios
Dependents: RoboticArm DXL_SDK_Porting_Test
Fork of Matrix by
Diff: MatrixMath.h
- Revision:
- 8:1774aa06ab99
diff -r 7a564cf28ab6 -r 1774aa06ab99 MatrixMath.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MatrixMath.h Sat Feb 11 13:07:13 2017 +0000 @@ -0,0 +1,125 @@ +/** + * @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 ); + + + //==== 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 ); + + + static Matrix Tz( float d ); + + + /**@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 ); + + + //cross stanley + static Matrix cross(const Matrix& leftM,const Matrix& rightM); + + +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 */