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