Original Post
hi. I tried to make a custom matrix. I need help to some function: RotationYawPitchRoll(...) CreateLookAt(...) CreatePerspectiveFOView(...) here is my matrix: [Edited by - csisy on November 21, 2009 4:17:31 AM]
struct Matrix
{
public:
float m[4][4];
inline static Matrix Identity() throw()
{
Matrix mat;
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 4; j++)
mat.m[j] = 0;
mat.m = 1;
}
return mat;
}
inline static Matrix Null() throw()
{
Matrix mat;
for (int i = 0; i < 4; i++)
for (int j = 0; j < 4; j++)
mat.m[j] = 0;
return mat;
}
inline Matrix operator* (const Matrix& mat) throw()
{
Matrix result = Matrix::Null();
for (int i = 0; i < 4; i++)
for (int j = 0; j < 4; j++)
for (int k = 0; k < 4; k++)
result.m[j] += m[k] * mat.m[k][j];
return result;
}
inline static Matrix Scale(const float& x, const float& y, const float& z) throw()
{
Matrix result = Matrix::Null();
result.m[0][0] = x;
result.m[1][1] = y;
result.m[2][2] = z;
result.m[3][3] = 1.0f;
return result;
}
inline static Matrix Translate(const Vector3& v) throw()
{
Matrix result = Matrix::Identity();
result.m[3][0] = v.X;
result.m[3][1] = v.Y;
result.m[3][2] = v.Z;
result.m[3][3] = 1.0f;
return result;
}
inline static Matrix RotationX(const float& radians) throw()
{
Matrix result = Matrix::Identity();
float s = sin(radians);
float c = cos(radians);
result.m[1][1] = c;
result.m[1][2] = s;
result.m[2][1] = -s;
result.m[2][2] = c;
return result;
}
inline static Matrix RotationY(const float& radians) throw()
{
Matrix result = Matrix::Identity();
float s = sin(radians);
float c = cos(radians);
result.m[0][0] = c;
result.m[0][2] = -s;
result.m[2][0] = s;
result.m[2][2] = c;
return result;
}
inline static Matrix RotationZ(const float& radians) throw()
{
Matrix result = Matrix::Identity();
float s = sin(radians);
float c = cos(radians);
result.m[0][0] = c;
result.m[0][1] = s;
result.m[1][0] = -s;
result.m[1][1] = c;
return result;
}
};