Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
MatrixMath.h
- Committer:
- Yo_Robot
- Date:
- 2011-10-30
- Revision:
- 2:d487bb616ec1
- Parent:
- 1:c74cdf14aea2
- Child:
- 3:48754fe86e08
File content as of revision 2:d487bb616ec1:
/**
* @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 */