graphene

annotate src/gmath/matrix.h @ 6:9fbbc96e6fbe

foo
author John Tsiombikas <nuclear@member.fsf.org>
date Fri, 31 Jul 2015 04:59:28 +0300
parents d71b4e899e08
children
rev   line source
nuclear@3 1 #ifndef GMATH_MATRIX_H_
nuclear@3 2 #define GMATH_MATRIX_H_
nuclear@3 3
nuclear@3 4 #include <string.h>
nuclear@4 5 #include "vector.h"
nuclear@3 6
nuclear@3 7 namespace gph {
nuclear@3 8
nuclear@3 9 class Matrix4x4 {
nuclear@3 10 private:
nuclear@3 11 float m[4][4];
nuclear@3 12
nuclear@3 13 public:
nuclear@3 14 static Matrix4x4 identity;
nuclear@3 15
nuclear@3 16 Matrix4x4()
nuclear@3 17 {
nuclear@3 18 memcpy((float*)m, (const float*)identity.m, 16 * sizeof(float));
nuclear@3 19 }
nuclear@3 20
nuclear@3 21 Matrix4x4(const float *m)
nuclear@3 22 {
nuclear@3 23 memcpy((float*)this->m, (const float*)m, 16 * sizeof(float));
nuclear@3 24 }
nuclear@3 25
nuclear@3 26 Matrix4x4(float m00, float m01, float m02, float m03,
nuclear@3 27 float m10, float m11, float m12, float m13,
nuclear@3 28 float m20, float m21, float m22, float m23,
nuclear@3 29 float m30, float m31, float m32, float m33)
nuclear@3 30 {
nuclear@3 31 m[0][0] = m00; m[0][1] = m01; m[0][2] = m02; m[0][3] = m03;
nuclear@3 32 m[1][0] = m10; m[1][1] = m11; m[1][2] = m12; m[1][3] = m13;
nuclear@3 33 m[2][0] = m20; m[2][1] = m21; m[2][2] = m22; m[2][3] = m23;
nuclear@3 34 m[3][0] = m30; m[3][1] = m31; m[3][2] = m32; m[3][3] = m33;
nuclear@3 35 }
nuclear@3 36
nuclear@3 37 Matrix4x4(const Vector4 &v0, const Vector4 &v1, const Vector4 &v2, const Vector4 &v3)
nuclear@3 38 {
nuclear@3 39 m[0][0] = v0.x; m[0][1] = v0.y; m[0][2] = v0.z; m[0][3] = v0.w;
nuclear@3 40 m[1][0] = v1.x; m[1][1] = v1.y; m[1][2] = v1.z; m[1][3] = v1.w;
nuclear@3 41 m[2][0] = v2.x; m[2][1] = v2.y; m[2][2] = v2.z; m[2][3] = v2.w;
nuclear@3 42 m[3][0] = v3.x; m[3][1] = v3.y; m[3][2] = v3.z; m[3][3] = v3.w;
nuclear@3 43 }
nuclear@3 44
nuclear@3 45 float *operator [](int idx)
nuclear@3 46 {
nuclear@3 47 return m[idx];
nuclear@3 48 }
nuclear@3 49
nuclear@3 50 const float *operator [](int idx) const
nuclear@3 51 {
nuclear@3 52 return m[idx];
nuclear@3 53 }
nuclear@3 54 };
nuclear@3 55
nuclear@3 56 } // namespace gph
nuclear@3 57
nuclear@3 58 #endif // GMATH_MATRIX_H_