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@3
|
5 #include "vec.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_
|