|
#ifndef OAG_MATRIX3X3_H
#define OAG_MATRIX3X3_H
namespace oag
{
class Matrix3x3
{
public:
Matrix3x3(void);
Matrix3x3(Matrix3x3& mat);
Matrix3x3(Matrix3x3* mat);
~Matrix3x3(void);
//Attributes
public:
float m00, m01, m02;
float m10, m11, m12;
float m20, m21, m22;
//Operations
private:
void MakeZero();
public:
void MakeIdentity();
void SetScale(double x, double y);
void SetTranslation(double x, double y);
//Operators
Matrix3x3 operator = (const Matrix3x3& mat);
Matrix3x3 operator + (const Matrix3x3& mat);
Matrix3x3 operator += (const Matrix3x3& mat);
Matrix3x3 operator - (const Matrix3x3& mat);
Matrix3x3 operator -= (const Matrix3x3& mat);
Matrix3x3 operator * (const Matrix3x3& mat);
Matrix3x3 operator *= (const Matrix3x3& mat);
};
inline Matrix3x3 Matrix3x3::operator =(const oag::Matrix3x3 &mat)
{
m00 = mat.m00; m01 = mat.m01; m02 = mat.m02;
m10 = mat.m10; m11 = mat.m11; m12 = mat.m12;
m20 = mat.m20; m21 = mat.m21; m22 = mat.m22;
return *this;
}
inline Matrix3x3 Matrix3x3::operator +(const oag::Matrix3x3 &mat)
{
Matrix3x3 result(this);
result.m00 += mat.m00; result.m01 += mat.m01; result.m02 += mat.m02;
result.m10 += mat.m10; result.m11 += mat.m11; result.m12 += mat.m12;
result.m20 += mat.m20; result.m21 += mat.m21; result.m22 += mat.m22;
return result;
}
inline Matrix3x3 Matrix3x3::operator +=(const oag::Matrix3x3 &mat)
{
m00 += mat.m00; m01 += mat.m01; m02 += mat.m02;
m10 += mat.m10; m11 += mat.m11; m12 += mat.m12;
m20 += mat.m20; m21 += mat.m21; m22 += mat.m22;
return *this;
}
inline Matrix3x3 Matrix3x3::operator -(const oag::Matrix3x3 &mat)
{
Matrix3x3 result(this);
result.m00 -= mat.m00; result.m01 -= mat.m01; result.m02 -= mat.m02;
result.m10 -= mat.m10; result.m11 -= mat.m11; result.m12 -= mat.m12;
result.m20 -= mat.m20; result.m21 -= mat.m21; result.m22 -= mat.m22;
return result;
}
inline Matrix3x3 Matrix3x3::operator -=(const oag::Matrix3x3 &mat)
{
m00 -= mat.m00; m01 -= mat.m01; m02 -= mat.m02;
m10 -= mat.m10; m11 -= mat.m11; m12 -= mat.m12;
m20 -= mat.m20; m21 -= mat.m21; m22 -= mat.m22;
return *this;
}
inline Matrix3x3 Matrix3x3::operator *(const oag::Matrix3x3 &mat)
{
Matrix3x3 result;
result.m00 = ( m00 * mat.m00 ) + ( m01 * mat.m10 ) + ( m02 * mat.m20 );
result.m01 = ( m00 * mat.m01 ) + ( m01 * mat.m11 ) + ( m02 * mat.m21 );
result.m02 = ( m00 * mat.m02 ) + ( m01 * mat.m12 ) + ( m02 * mat.m22 );
return result;
}
inline Matrix3x3 Matrix3x3::operator *=(const oag::Matrix3x3 &mat)
{
m00 = ( m00 * mat.m00 ) + ( m01 * mat.m10 ) + ( m02 * mat.m20 );
m01 = ( m00 * mat.m01 ) + ( m01 * mat.m11 ) + ( m02 * mat.m21 );
m02 = ( m00 * mat.m02 ) + ( m01 * mat.m12 ) + ( m02 * mat.m22 );
return *this;
}
};
#endif
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
I live in Matão, a small city in Brazil. I studied as Programmer in a College for Software Development in Database.
After finishing the College I have been working with java, c# and Computer Graphics with searches for OpenGL.