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 <math.h>
#include "KRMat4.h" #include "KRMat4.h"
#include "KRQuaternion.h"
KRMat4::KRMat4() { KRMat4::KRMat4() {
// Default constructor - Initialize with an identity matrix // Default constructor - Initialize with an identity matrix
@@ -171,6 +172,11 @@ void KRMat4::rotate(GLfloat angle, AXIS axis) {
*this *= newMatrix; *this *= newMatrix;
} }
void KRMat4::rotate(const KRQuaternion &q)
{
*this *= q.rotationMatrix();
}
/* Scale matrix by separate x, y, and z amounts */ /* Scale matrix by separate x, y, and z amounts */
void KRMat4::scale(GLfloat x, GLfloat y, GLfloat z) { void KRMat4::scale(GLfloat x, GLfloat y, GLfloat z) {
KRMat4 newMatrix; // Create new identity matrix 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); matLookat.getPointer()[14] = -KRVector3::Dot(lookat_z_axis, cameraPos);
return matLookat; 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 Z_AXIS
} AXIS; } AXIS;
class KRQuaternion;
class KRMat4 { class KRMat4 {
@@ -98,10 +99,13 @@ public:
void scale(const KRVector3 &v); void scale(const KRVector3 &v);
void scale(GLfloat s); void scale(GLfloat s);
void rotate(GLfloat angle, AXIS axis); void rotate(GLfloat angle, AXIS axis);
void rotate(const KRQuaternion &q);
void bias(); void bias();
bool invert(); bool invert();
void transpose(); void transpose();
static KRMat4 Invert(const KRMat4 &m);
static KRMat4 Transpose(const KRMat4 &m);
static KRVector3 Dot(const KRMat4 &m, const KRVector3 &v); static KRVector3 Dot(const KRMat4 &m, const KRVector3 &v);
static float DotW(const KRMat4 &m, const KRVector3 &v); static float DotW(const KRMat4 &m, const KRVector3 &v);
static KRVector3 DotWDiv(const KRMat4 &m, const KRVector3 &v); static KRVector3 DotWDiv(const KRMat4 &m, const KRVector3 &v);