/*----------------------------------------------------------------- LOG GEM - Graphics Environment for Multimedia vector-classes zmoelnig@iem.at, tigital@mac.com For information on usage and redistribution, and for a DISCLAIMER OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. -----------------------------------------------------------------*/ #ifndef _INCLUDE__GEM_UTILS_VECTOR_H_ #define _INCLUDE__GEM_UTILS_VECTOR_H_ #include "Gem/ExportDef.h" // This is our 2D point class. This will be used to store the UV coordinates. class GEM_EXTERN CVector2 { public: float x, y; }; // This is our basic 3D point/vector class class GEM_EXTERN CVector3 { public: // the elements of a vector: float x, y, z; // A default constructor CVector3(void); // This is our constructor that allows us to initialize our data upon creating an instance CVector3(float X, float Y, float Z); // Here we overload the + operator so we can add vectors together CVector3 operator+(CVector3 vVector) const; // Here we overload the - operator so we can subtract vectors CVector3 operator-(CVector3 vVector) const; // Here we overload the - operator so we can negate the vector CVector3 operator-(void) const; // Here we overload the * operator so we can multiply by scalars CVector3 operator*(float num) const; // Here we overload the * operator so we can dot-multiply float operator*(CVector3 vVector) const; // cross-multiplication CVector3 cross(CVector3 vVector) const; // Here we overload the / operator so we can divide by a scalar CVector3 operator/(float num) const; // here we calculate the absolute-value of the vector float abs(void) const; // here we calculate the square of the absolute-value of the vector float abs2(void) const; // here we normalize the vector CVector3 normalize(void) const; // here we compare 2 vectors on approx. equality bool equals(CVector3 vVector, float epsilon) const; }; #endif /* _INCLUDE__GEM_UTILS_VECTOR_H_ */