Main Page | Class Hierarchy | Class List | File List | Class Members

vuMatrix.h

00001 /*      Written by Steven Kilthau */
00002 
00003 #ifndef _MATRIX_H_
00004 #define _MATRIX_H_
00005 
00006 #include <iostream>
00007 #include "vuSimpleTypes.h"
00008 
00009 class vuVector;
00010 
00012 
00023 class vuMatrix
00024 {
00025 friend class vuVector;
00026 public:
00028     vuMatrix();
00030     vuMatrix(const vuMatrix& m);
00032     vuMatrix(double v);
00034 
00036     vuMatrix(const double* v);
00038     ~vuMatrix();
00039 
00041     vuMatrix& operator=(const vuMatrix& m);
00043     vuMatrix& operator=(double v);
00045     vuMatrix& operator=(const double* v);
00046 
00047     //
00048     // Generate various special matrices by
00049     // changing values in the current instance.
00050     // All transformation matrices are pre-
00051     // transforms, meaning they should be left
00052     // multiplied against a vuVector.
00053     //
00055     vuMatrix& makeIdentity(void);
00057 
00060     vuMatrix& makeRotate(const vuVector& axis, double a);
00062     vuMatrix& makeRotateX(double a);
00064     vuMatrix& makeRotateY(double a);
00066     vuMatrix& makeRotateZ(double a);
00068     vuMatrix& makeTranslate(double x, double y, double z);
00070     vuMatrix& makeScale(double x, double y, double z);
00072     vuMatrix& makeShearXY(double s);
00074     vuMatrix& makeShearXZ(double s);
00076     vuMatrix& makeShearYX(double s);
00078     vuMatrix& makeShearYZ(double s);
00080     vuMatrix& makeShearZX(double s);
00082     vuMatrix& makeShearZY(double s);
00084     vuMatrix& makeReflectX(void);
00086     vuMatrix& makeReflectY(void);
00088     vuMatrix& makeReflectZ(void);
00090     vuMatrix& makePerspective(double d);
00092     vuMatrix& makePerspectiveKeepZ(double d);
00093 
00095     double* operator[](unsigned int index);
00097     const double* operator[](unsigned int index) const;
00099 
00100     double* getData(void);
00102     double const* getData(void) const;
00103 
00105     vuMatrix invOrtho() const;
00107     vuMatrix operator+(const vuMatrix& m) const;
00109     vuMatrix operator-(const vuMatrix& m) const;
00111     vuMatrix operator*(const vuMatrix& m) const;
00113     vuVector operator*(const vuVector& v) const;
00115     vuMatrix operator*(double s) const;
00117     friend vuMatrix operator*(double s,const vuMatrix& m);
00119     vuMatrix& operator+=(const vuMatrix& m);
00121     vuMatrix& operator-=(const vuMatrix& m);
00123     vuMatrix& operator*=(const vuMatrix& m);
00125     vuMatrix& operator*=(double s);
00126 
00128     bool operator==(const vuMatrix& m) const;
00130     bool operator!=(const vuMatrix& m) const;
00131 
00133     vuMatrix inverse(void) ;
00134 
00136 
00139     void invertRotationMatrix();
00140 
00142     friend std::ostream& operator<<(std::ostream& out,const vuMatrix& m);
00144     friend std::istream& operator>>(std::istream& in, vuMatrix& m);
00145 
00146 private:
00147     double val[16]; 
00148 };
00149 
00150 #endif

Generated on Thu Apr 13 04:55:56 2006 by  doxygen 1.4.4