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 <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;
|
||||||
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user