00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #if !defined(AFX_Matrix16_H__AD959187_7A1C_11D2_957C_00A0C9A4CA3E__INCLUDED_)
00022 #define AFX_Matrix16_H__AD959187_7A1C_11D2_957C_00A0C9A4CA3E__INCLUDED_
00023
00024 #include <common/Defines.h>
00025 #include <math.h>
00026
00027 class Matrix16
00028 {
00029 public:
00030 Matrix16(float *init = 0);
00031 ~Matrix16();
00032
00033 void multiply(float *b);
00034 void scale(float x, float y, float z);
00035 void translate(float x, float y, float z);
00036 void identity();
00037
00038 float &operator[](const int m) { DIALOG_ASSERT(m<=15); return M[m]; }
00039 float const &operator[](const int m) const { DIALOG_ASSERT(m<=15); return M[m]; }
00040
00041 operator float*() { return M; }
00042
00043 protected:
00044 float M[16];
00045
00046 };
00047
00048 #endif // !defined(AFX_Matrix16_H__AD959187_7A1C_11D2_957C_00A0C9A4CA3E__INCLUDED_)
00049