Added rotationMatrix method to KRQuaternion

--HG--
extra : convert_revision : svn%3A7752d6cf-9f14-4ad2-affc-04f1e67b81a5/trunk%40114
This commit is contained in:
kearwood
2012-10-03 21:00:05 +00:00
parent b13de25a4c
commit 1f00f86225
2 changed files with 20 additions and 0 deletions

View File

@@ -233,3 +233,21 @@ void KRQuaternion::conjugate() {
m_val[3] = -m_val[3];
}
KRMat4 KRQuaternion::rotationMatrix() const {
KRMat4 matRotate;
matRotate.getPointer()[0] = 1.0 - 2.0 * (m_val[2] * m_val[2] + m_val[3] * m_val[3]);
matRotate.getPointer()[1] = 2.0 * (m_val[1] * m_val[2] - m_val[0] * m_val[3]);
matRotate.getPointer()[2] = 2.0 * (m_val[0] * m_val[2] + m_val[1] * m_val[3]);
matRotate.getPointer()[4] = 2.0 * (m_val[1] * m_val[2] + m_val[0] * m_val[3]);
matRotate.getPointer()[5] = 1.0 - 2.0 * (m_val[1] * m_val[1] + m_val[3] * m_val[3]);
matRotate.getPointer()[6] = 2.0 * (m_val[2] * m_val[3] - m_val[0] * m_val[1]);
matRotate.getPointer()[8] = 2.0 * (m_val[1] * m_val[3] - m_val[0] * m_val[2]);
matRotate.getPointer()[9] = 2.0 * (m_val[0] * m_val[1] + m_val[2] * m_val[3]);
matRotate.getPointer()[10] = 1.0 - 2.0 * (m_val[1] * m_val[1] + m_val[2] * m_val[2]);
return matRotate;
}

View File

@@ -34,6 +34,7 @@
#include <math.h>
#import "KREngine-common.h"
#import "KRMat4.h"
class KRVector3;
@@ -69,6 +70,7 @@ public:
void setEuler(const KRVector3 &euler);
KRVector3 euler() const;
KRMat4 rotationMatrix() const;
void normalize();
static KRQuaternion Normalize(const KRQuaternion &v1);