mat2.h
Go to the documentation of this file.
00001 /*******************************************************************************
00002  *  mat2.h
00003  *
00004  *  (C) 2006 AG Aktives Sehen <agas@uni-koblenz.de>
00005  *           Universitaet Koblenz-Landau
00006  *
00007  * Author: Frank Neuhaus
00008  *******************************************************************************/
00009 
00010 #ifndef MAT2_H
00011 #define MAT2_H
00012 
00013 #include <math.h>
00014 #include "Point2D.h"
00015 #include "vec2.h"
00016 
00017 class CMat2
00018 {
00019         public:
00020                 CMat2();
00021                 CMat2(float rot);
00022                 ~CMat2();
00023 
00024                 CMat2 operator *(const CMat2 &mat) const;
00025 
00026                 CVec2 operator *(const CVec2& v) const;
00027 
00028                 Point2D operator *(const Point2D& p) const;
00029         
00030         float& operator [] (unsigned int position) {
00031             return fMatrix[position];
00032         }
00033         
00034         CMat2 operator +(const CMat2 rhs) const {
00035             CMat2 newMatrix;
00036             for (unsigned int i = 0; i < 4; i++) {
00037                 newMatrix[i] = valueAt(i) + rhs.valueAt(i);
00038             }
00039             return newMatrix;
00040         }
00041         
00042         CMat2 operator -(const CMat2 rhs) const {
00043             CMat2 newMatrix;
00044             for (unsigned int i = 0; i < 4; i++) {
00045                 newMatrix[i] = valueAt(i) - rhs.valueAt(i);
00046             }
00047             return newMatrix;
00048         }
00049         
00050         float valueAt(unsigned int position) const{
00051             return fMatrix[position];
00052         }
00053         
00054                 union
00055                 {
00056                         float fMatrix[4];
00057                         float m[2][2];
00058                         struct
00059                         {
00060                                 float xx, xy;
00061                                 float yx, yy;
00062                         };
00063                 };
00064 
00065                 void transpose();
00066                 void loadIdentity();
00067 
00068                 void makeRotation(float fA);
00069 
00070                 bool invert();
00071 };
00072 
00073 
00074 
00075 #include "mat2_inl.h"
00076 
00077 #endif


robbie_architecture
Author(s): Viktor Seib
autogenerated on Mon Oct 6 2014 02:53:09