Added new convenience functions to KRMat4

--HG--
extra : convert_revision : svn%3A7752d6cf-9f14-4ad2-affc-04f1e67b81a5/trunk%40129
This commit is contained in:
kearwood
2012-10-18 07:32:21 +00:00
parent 736ca4fc4b
commit 89b273f2ce
2 changed files with 25 additions and 1 deletions

View File

@@ -34,6 +34,7 @@
#include <math.h>
#include "KRMat4.h"
#include "KRQuaternion.h"
KRMat4::KRMat4() {
// Default constructor - Initialize with an identity matrix
@@ -171,6 +172,11 @@ void KRMat4::rotate(GLfloat angle, AXIS axis) {
*this *= newMatrix;
}
void KRMat4::rotate(const KRQuaternion &q)
{
*this *= q.rotationMatrix();
}
/* Scale matrix by separate x, y, and z amounts */
void KRMat4::scale(GLfloat x, GLfloat y, GLfloat z) {
KRMat4 newMatrix; // Create new identity matrix
@@ -330,4 +336,18 @@ KRMat4 KRMat4::LookAt(const KRVector3 &cameraPos, const KRVector3 &lookAtPos, co
matLookat.getPointer()[14] = -KRVector3::Dot(lookat_z_axis, cameraPos);
return matLookat;
}
}
KRMat4 KRMat4::Invert(const KRMat4 &m)
{
KRMat4 matInvert = m;
matInvert.invert();
return matInvert;
}
KRMat4 KRMat4::Transpose(const KRMat4 &m)
{
KRMat4 matTranspose = m;
matTranspose.transpose();
return matTranspose;
}

View File

@@ -54,6 +54,7 @@ typedef enum {
Z_AXIS
} AXIS;
class KRQuaternion;
class KRMat4 {
@@ -98,10 +99,13 @@ public:
void scale(const KRVector3 &v);
void scale(GLfloat s);
void rotate(GLfloat angle, AXIS axis);
void rotate(const KRQuaternion &q);
void bias();
bool invert();
void transpose();
static KRMat4 Invert(const KRMat4 &m);
static KRMat4 Transpose(const KRMat4 &m);
static KRVector3 Dot(const KRMat4 &m, const KRVector3 &v);
static float DotW(const KRMat4 &m, const KRVector3 &v);
static KRVector3 DotWDiv(const KRMat4 &m, const KRVector3 &v);