This class provides with operations for Matrix Objects + some changes
Diff: MatrixMath.h
- Revision:
- 2:d487bb616ec1
- Parent:
- 1:c74cdf14aea2
- Child:
- 3:48754fe86e08
diff -r c74cdf14aea2 -r d487bb616ec1 MatrixMath.h --- a/MatrixMath.h Sat Oct 22 23:18:55 2011 +0000 +++ b/MatrixMath.h Sun Oct 30 04:41:00 2011 +0000 @@ -1,78 +1,116 @@ -/** - * @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 preform operations over - * Matrix Objects - * version 0.8. - * - * Methods will be added as neccesary. - * - */ -class MatrixMath{ -public: - - - /**@brief - * Transposes Matrix, return new Object. - * @param Mat matrix to calculate - * @return the determinant - */ - static Matrix Transpose( const Matrix& Mat ); - - - /**@brief - * Calculate the inverse of a nxn Matrix BUT 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 ); - - - static float dotProduct( 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 **// - - static Matrix RotX( const Matrix& matrix, float radians ); - - static Matrix RotY( const Matrix& matrix, float radians ); - - static Matrix RotZ( const Matrix& matrix, float radians ); - - static Matrix Transl( const Matrix& matrix, 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 */ +/** + * @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 preform operations over + * Matrix Objects + * version 0.8. + * + * Methods will be added as neccesary. + * + */ +class MatrixMath{ +public: + + + /**@brief + * Transposes Matrix, return new Object. + * @param Mat matrix to calculate + * @return the determinant + */ + static Matrix Transpose( const Matrix& Mat ); + + + /**@brief + * Calculate the inverse of a nxn Matrix BUT 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 Matrix, n x n. + * @param Rows Number of Rowns and Columns + * @return Identity Matrix of dimensions Rows x 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] Matrix. + * @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 'y' axis in radians. + * @param radians rotation angle. + * @return Rotation Matrix[4,4] along 'y' 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 */