Added new convenience functions to KRMat4
--HG-- extra : convert_revision : svn%3A7752d6cf-9f14-4ad2-affc-04f1e67b81a5/trunk%40129
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user