Main Page   Class Hierarchy   Compound List   File List   Compound Members  

misc.hpp

00001 #ifndef misc_H
00002 #define misc_H
00003 
00004 
00005 #include <memory.h>
00006 
00007 #define SQUARE(number) (number*number)
00008 #define PI 3.141593 
00009 #define DEG_TO_RAD(deg) ((float)(deg)*PI/180)
00010 
00011 
00012 /*void tokenize(const string& str,
00013                       vector<string>& tokens,
00014                       const string& delimiters = " ")
00015         */                                
00016 //static void swap(unsigned char & a, unsigned char & b);
00017 //void CreateRenderTexture(unsigned int textureArray[], int size, int channels, int type, int textureID);
00018 //void CreateTexture(unsigned int textureArray[],char *strFileName,int textureID);
00019 
00020 
00022 
00032 class vector3f
00033 {
00034 public:
00035 
00036         // all memset does is initialize the vertices to zero.
00037         vector3f()
00038         {       memset(vertex, 0, sizeof(float[3]));    }
00039 
00040         vector3f(float x, float y, float z);
00041 
00042         ~vector3f();
00043 
00044         float vertex[3];
00045 
00046         void print(); 
00047         
00048         void LoadZero(void);
00049         float Length(void);
00050         float LengthSquared(void);
00051 
00052         vector3f& operator= (const vector3f &v1);
00053 
00054         friend bool operator== (const vector3f &v1, const vector3f &v2);
00055         friend bool operator<= (const vector3f &v1, const vector3f &v2);
00056         friend bool operator>= (const vector3f &v1, const vector3f &v2);
00057 
00058         friend bool operator< (const vector3f &v1, const vector3f &v2);
00059         friend bool operator> (const vector3f &v1, const vector3f &v2);
00060 
00061 //      friend vector3f operator= (const vector3f &v1, const vector3f &v2);
00062         friend vector3f operator+ (const vector3f &v1, const vector3f &v2);
00063 //      friend vector3f operator+= (const vector3f &v1);
00064         friend vector3f operator+ (const vector3f &v1, const float scalar);
00065         friend vector3f operator- (const vector3f &v1, const vector3f &v2);
00066         friend vector3f operator- (const vector3f &v1, const float scalar);
00067         friend vector3f operator* (const vector3f &v1, const vector3f &v2);
00068         friend vector3f operator* (const vector3f &v1, const float scalar);
00069         friend vector3f operator/ (const vector3f &v1, const vector3f &v2);
00070         friend vector3f operator/ (const vector3f &v1, const float scalar);
00071 
00072         vector3f Abs(void);
00073 
00074         friend float dot(const vector3f &v1, const vector3f &v2);
00075         friend vector3f Cross(const vector3f &v1, const vector3f &v2);
00076 
00077         //void Eq(vector3f *other);
00078         //float* Return4f();
00079 
00080         void Set(float x,float y,float z);
00081 };
00082 
00083 // gcc wasn't liking this as friend
00084 //float dot(const vechttp://sdldoc.csn.ul.ie/sdlkey.phptor3f &v1, const vector3f &v2);
00085 
00087 
00093 class matrix16f
00094 {
00095 public:
00096         float matrix[16];
00097 
00098         void LoadZero(void);
00099         void LoadIdentity(void);
00100 
00101         void print(); 
00102 
00103         void Translate(float x, float y, float z);
00104         void Scale(float x, float y, float z);
00105 
00106         void RotateX(int deg);
00107         void RotateY(int deg);
00108         void RotateZ(int deg);
00109 
00110         void RotateX(float rad);
00111         void RotateY(float rad);
00112         void RotateZ(float rad);
00113 
00114         void RotateXYZ(float x, float y, float z);
00115         void Rotate(matrix16f m1);
00116         
00117         void Set(vector3f right, vector3f up, vector3f out);
00118         
00119         //void Eq(float m[16]);
00120         matrix16f& operator= (const matrix16f &m1);
00121 
00122         
00123         vector3f Transform(vector3f point);
00124         matrix16f FlipOrientation(void);
00125 
00126         void Normalize(void);
00127         //matrix16f Invert(void);
00128 
00129         friend matrix16f operator+ (const matrix16f &m1, const matrix16f &m2);
00131         friend matrix16f operator+ (const matrix16f &m1, const vector3f  &v2);
00132         friend matrix16f operator- (const matrix16f &m1, const matrix16f &m2);
00133         friend matrix16f operator* (const matrix16f &m1, const float scalar);
00134         friend matrix16f operator* (const matrix16f &m1, const matrix16f &m2);
00135         friend matrix16f operator/ (const matrix16f &m1, const float scalar);
00136         friend bool operator== (const matrix16f &m1, const matrix16f &m2);
00137 
00138         matrix16f()
00139                 {       memset(matrix, 0, sizeof(float[16]));   }
00140 };
00141 
00142 
00144 
00149 class matrix9f
00150 {
00151 public:
00152         float matrix[9];
00153 
00154         matrix9f()
00155         {       memset(matrix, 0, sizeof(float[9]));    }
00156 
00157         void LoadZero(void);
00158         void LoadIdentity(void);
00159         
00160         
00161         void RotateX(int deg);
00162         void RotateY(int deg);
00163         void RotateZ(int deg);
00164 
00165         matrix9f& operator= (const matrix9f &m1);
00166 
00167 
00168         //vector3f Transform(vector3f point);
00169         matrix9f Transpose(void);
00170         matrix9f Inverse(void);
00171         //matrix16f Invert(void);
00172 
00173         friend matrix9f Star(vector3f a);
00174 
00175 
00176         friend matrix9f operator+ (const matrix9f &m1, const matrix9f &m2);
00177         friend matrix16f operator+ (const matrix16f &m1, const matrix9f &m2);
00178         friend matrix9f operator- (const matrix9f &m1, const matrix9f &m2);
00179         friend matrix9f operator* (const matrix9f &m1, const float scalar);
00180         friend matrix9f operator* (const matrix9f &m1, const matrix9f &m2);
00181         friend vector3f operator* (const matrix9f &m1, const vector3f &v2);
00182 
00183         friend matrix9f operator* (const matrix9f &m1, const matrix16f &m2);
00184         friend matrix9f operator* (const matrix16f &m1, const matrix9f &m2);
00185 
00186         friend matrix9f operator/ (const matrix9f &m1, const float scalar);
00187         friend bool operator== (const matrix9f &m1, const matrix9f &m2);
00188 };
00189 
00190 
00191 float det(float f0, float f1, float f2, float f3);
00192 
00193 //float dot(vector3f &v1, vector3f &v2);
00194 vector3f Cross(const vector3f &v1, const vector3f &v2);
00195 
00196 typedef struct _triangleV {
00197         vector3f *vertNorm[3];
00198         vector3f *vertice[3];   
00199         vector3f norm;                  // triangle norm
00200 } triangleV;
00201 
00202 vector3f findNorm(int index, int numSurfTriangles, vector3f **surfTriangles);
00203 
00204 #endif
00205 

Generated on Sat May 10 10:09:36 2003 for volume-src-limited by doxygen1.2.14 written by Dimitri van Heesch, © 1997-2002