00001
00002 #ifndef _MATRIX44_H_
00003 #define _MATRIX44_H_
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #include "Peonstdafx.h"
00027 #include "Vector3.h"
00028
00029 namespace peon
00030 {
00031
00041 class PEONMAIN_API Matrix44
00042 {
00043 public:
00044
00046 float m[16];
00047
00048 Matrix44(){ }
00049
00050 Matrix44( float m0, float m4, float m8, float m12,
00051 float m1, float m5, float m9, float m13,
00052 float m2, float m6, float m10, float m14,
00053 float m3, float m7, float m11, float m15 );
00054
00055 void identity(void);
00056 void translate(const Vector3 &trans);
00057 void translate_x(const float &dist);
00058 void translate_y(const float &dist);
00059 void translate_z(const float &dist);
00060 void rotate(const float &angle, Vector3 &axis);
00061 void rotate_x(const float &angle);
00062 void rotate_y(const float &angle);
00063 void rotate_z(const float &angle);
00064 void scale(const Vector3 &scale);
00065 void transformPoint( Vector3 *vec );
00066 void transformVector( Vector3 *vec );
00067
00068
00069 Matrix44 operator + (const Matrix44 &other);
00070 Matrix44 operator - (const Matrix44 &other);
00071 Matrix44 operator * (const Matrix44 &other);
00072
00073 Matrix44 operator * (const float scalar);
00074 };
00075
00076
00077
00078 }
00079
00080 #endif
00081