Various matrix and quaternion imps

This commit is contained in:
Jack Andersen 2017-07-09 18:55:12 -10:00
parent 988da2267f
commit a8764732dc
2 changed files with 11 additions and 0 deletions

View File

@ -211,6 +211,14 @@ public:
TVectorUnion{0.f, 0.f, 1.f, 0.f}); TVectorUnion{0.f, 0.f, 1.f, 0.f});
} }
float determinant() const
{
return
m[1][0] * (m[2][1] * m[0][2] - m[0][1] * m[2][2]) +
m[0][0] * (m[1][1] * m[2][2] - m[2][1] * m[1][2]) +
m[2][0] * (m[0][1] * m[1][2] - m[1][1] * m[0][2]);
}
union { union {
float m[3][4]; /* 4th row for union-alignment */ float m[3][4]; /* 4th row for union-alignment */
struct struct

View File

@ -268,6 +268,9 @@ public:
CQuaternion buildEquivalent() const; CQuaternion buildEquivalent() const;
zeus::CVector3f getImaginary() const { return {x, y, z}; }
void setImaginary(const zeus::CVector3f& i) { x = i.x; y = i.y; z = i.z; }
inline float& operator[](size_t idx) { return (&w)[idx]; } inline float& operator[](size_t idx) { return (&w)[idx]; }
inline const float& operator[](size_t idx) const { return (&w)[idx]; } inline const float& operator[](size_t idx) const { return (&w)[idx]; }