This class provides with operations for Matrix Objects + some changes

MatrixMath_Kinematics.cpp

Committer:
Yo_Robot
Date:
2011-10-30
Revision:
4:d360c068d55f
Parent:
2:d487bb616ec1
Child:
5:93948a9bbde2

File content as of revision 4:d360c068d55f:

/**
 * @brief  Kinematics Operations
 * @file   MatrixMath_Kinematics.cpp
 * @author Erneseto Palacios
 *
 *  Develop Under  GPL v3.0 License
 * http://www.gnu.org/licenses/gpl-3.0.html
 */

#include "mbed.h"
#include "Matrix.h"
#include "MatrixMath.h"


Matrix MatrixMath::RotX( float radians )
{
    float cs = cos( radians );
    float sn = sin( radians );

    Matrix rotate( 4, 4 );

    rotate << 1 << 0  <<  0  << 0
	       << 0 << cs << -sn << 0
	       << 0 << sn <<  cs << 0
	       << 0 << 0  <<  0  << 1;

    return rotate;

}

Matrix MatrixMath::RotY( float radians )
{
    float cs = cos( radians );
    float sn = sin( radians );

    Matrix rotate( 4, 4 );

    rotate << cs   << 0   <<  sn  << 0
	       <<  0   << 1   <<  0   << 0
	       << -sn  << 0   <<  cs  << 0
	       <<  0   << 0   <<  0   << 1;

    return rotate;
}

Matrix MatrixMath::RotZ( float radians )
{
    float cs = cos( radians );
    float sn = sin( radians );

    Matrix rotate( 4, 4 );

    rotate << cs   << -sn  <<  0  << 0
           << sn   <<  cs  <<  0  << 0
	       <<  0   <<  0   <<  1  << 0
	       <<  0   <<  0   <<  0  << 1;

    return rotate;
}


Matrix MatrixMath::Transl( float x, float y, float z )
{
    Matrix Translation = MatrixMath::Eye( 3 );  //Identity Matrix
    Matrix Position( 4, 1 );                   // Position Matrix

    Position << x << y << z << 1;             // position @ x,y,z

    Matrix::AddRow( Translation, 4 );             // Add Row
    Matrix::AddCol( Translation, Position, 4 );  // Add Position Matrix

    return Translation;
}