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

Vector.h

Go to the documentation of this file.
00001 
00007 #ifndef _VECTOR_H_
00008 #define _VECTOR_H_
00009 
00010 #include "Math.h"
00011 
00012 /********************************************************************
00013  * Vec2 (2D vector)
00014  */
00015 class Vec2 {
00016         public:
00017                 Vec2();
00018                 Vec2(const float xy);
00019                 Vec2(const float xx, const float yy);
00020                 virtual ~Vec2();
00021 
00022                 float   length();
00023                 Vec2    normalize();
00024                 Vec2    operator +  (const Vec2 &v);
00025                 Vec2    operator -  (const Vec2 &v);
00026                 Vec2    operator -  ();
00027                 Vec2    operator *  (const float s);
00028                 Vec2    operator *  (const Vec2 &v);
00029                 //Vec2  operator ^  (const Vec2 &v);
00030                 Vec2    operator /  (const float s);
00031                 Vec2    operator /  (const Vec2 &v);
00032                 void    operator =  (const Vec2 &v);
00033                 void    operator += (const Vec2 &v);
00034                 void    operator -= (const Vec2 &v);
00035                 void    operator *= (const float s);
00036                 void    operator *= (const Vec2 &v);
00037                 void    operator /= (const float s);
00038                 void    operator /= (const Vec2 &v);
00039                 bool    operator >  (Vec2 &v);
00040                 bool    operator == (const Vec2 &v);
00041                 bool    operator != (const Vec2 &v);
00042                 float   &operator [] (const int index) { return *(&x + index); }
00043                 operator const float *() const { return &x; }
00044 
00045         public:
00046                 float x, y;
00047 };
00048 
00049 /********************************************************************
00050  * Vec3 (3D vector)
00051  */
00052 class Vec3 {
00053         public:
00054                 Vec3();
00055                 Vec3(const float xyz);
00056                 Vec3(const float xx, const float yy, const float zz);
00057                 virtual ~Vec3();
00058 
00059                 float   length();
00060                 Vec3    normalize();
00061                 Vec3    operator +  (const Vec3 &v);
00062                 Vec3    operator -  (const Vec3 &v);
00063                 Vec3    operator -  ();
00064                 Vec3    operator *  (const float s);
00065                 Vec3    operator *  (const Vec3 &v);
00066                 Vec3    operator ^  (const Vec3 &v);
00067                 Vec3    operator /  (const float s);
00068                 Vec3    operator /  (const Vec3 &v);
00069                 void    operator =  (const Vec3 &v);
00070                 void    operator += (const Vec3 &v);
00071                 void    operator -= (const Vec3 &v);
00072                 void    operator *= (const float s);
00073                 void    operator *= (const Vec3 &v);
00074                 void    operator /= (const float s);
00075                 void    operator /= (const Vec3 &v);
00076                 bool    operator >  (Vec3 &v);
00077                 bool    operator == (const Vec3 &v);
00078                 bool    operator != (const Vec3 &v);
00079                 float   &operator [] (const int index) { return *(&x + index); }
00080                 operator const float *() const { return &x; }
00081 
00082         public:
00083                 float x, y, z;
00084 };
00085 
00086 /********************************************************************
00087  * Vec4 (4D vector)
00088  */
00089 class Vec4 {
00090         public:
00091                 Vec4();
00092                 Vec4(const float xyzw);
00093                 Vec4(const float xx, const float yy, const float zz, const float ww);
00094 
00095                 Vec4(const Vec2 v, const float zz = 0.0f, const float ww = 0.0f);
00096                 Vec4(const float xx, const Vec2 v, const float ww);
00097                 Vec4(const float xx, const float yy, const Vec2 v);
00098                 Vec4(const Vec2 v, const Vec2 u);
00099 
00100                 Vec4(const Vec3 v, const float ww = 0.0f);
00101                 Vec4(const float xx, const Vec3 v);
00102 
00103                 virtual ~Vec4();
00104 
00105                 float   length();
00106                 Vec4    normalize();
00107                 Vec4    operator +  (const Vec4 &v);
00108                 Vec4    operator -  (const Vec4 &v);
00109                 Vec4    operator -  ();
00110                 Vec4    operator *  (const float s);
00111                 Vec4    operator *  (const Vec4 &v);
00112                 //Vec4  operator ^  (const Vec4 &v);
00113                 Vec4    operator /  (const float s);
00114                 Vec4    operator /  (const Vec4 &v);
00115                 void    operator =  (const Vec4 &v);
00116                 void    operator += (const Vec4 &v);
00117                 void    operator -= (const Vec4 &v);
00118                 void    operator *= (const float s);
00119                 void    operator *= (const Vec4 &v);
00120                 void    operator /= (const float s);
00121                 void    operator /= (const Vec4 &v);
00122                 bool    operator >  (Vec4 &v);
00123                 bool    operator == (const Vec4 &v);
00124                 bool    operator != (const Vec4 &v);
00125                 float   &operator [] (const int index) { return *(&x + index); }
00126                 operator const float *() const { return &x; }
00127 
00128         public:
00129                 float x, y, z, w;
00130 };
00131 
00132 float dot(const Vec2 &u, const Vec2 &v);
00133 float dot(const Vec3 &u, const Vec3 &v);
00134 float dot(const Vec4 &u, const Vec4 &v);
00135 
00136 #endif

Generated on Sun Jun 5 15:47:05 2005 for Defacto by  doxygen 1.4.3