eleni@0: #ifndef VECTOR_H_ eleni@0: #define VECTOR_H_ eleni@0: eleni@0: class Matrix4x4; eleni@0: eleni@0: class Vector3 { eleni@0: public: eleni@0: float x,y,z; eleni@0: Vector3(); eleni@0: Vector3(float x, float y, float z); eleni@0: void transform(const Matrix4x4 &tm); eleni@0: void printv(); eleni@0: }; eleni@0: eleni@0: bool operator < (const Vector3 &a, const Vector3 &b); eleni@0: bool operator > (const Vector3 &a, const Vector3 &b); eleni@0: bool operator == (const Vector3 &a, const Vector3 &b); eleni@0: eleni@0: Vector3 operator + (const Vector3 &a, const Vector3 &b); eleni@0: Vector3 operator - (const Vector3 &a, const Vector3 &b); eleni@0: Vector3 operator - (const Vector3 &a); eleni@0: Vector3 operator * (const Vector3 &a, const Vector3 &b); eleni@0: Vector3 operator * (const Vector3 &a, float b); eleni@0: Vector3 operator * (float b, const Vector3 &a); eleni@0: Vector3 operator / (const Vector3 &a, float b); eleni@0: eleni@0: const Vector3 &operator += (Vector3 &a, const Vector3 &b); eleni@0: eleni@0: float length (const Vector3 &a); eleni@0: float dot (const Vector3 &a, const Vector3 &b); eleni@0: Vector3 cross (const Vector3 &a, const Vector3 &b); eleni@0: Vector3 normalize (const Vector3 &a); eleni@0: eleni@0: Vector3 reflect(const Vector3 &v, const Vector3 &n); eleni@0: eleni@0: class Vector4 { eleni@0: public: eleni@0: float x, y, z, w; eleni@0: Vector4(); eleni@0: Vector4(float x, float y, float z, float w); eleni@0: void transform(const Matrix4x4 &tm); eleni@0: void printv(); eleni@0: }; eleni@0: eleni@0: bool operator < (const Vector4 &a, const Vector4 &b); eleni@0: bool operator > (const Vector4 &a, const Vector4 &b); eleni@0: bool operator == (const Vector4 &a, const Vector4 &b); eleni@0: eleni@0: Vector4 operator + (const Vector4 &a, const Vector4 &b); eleni@0: Vector4 operator - (const Vector4 &a, const Vector4 &b); eleni@0: Vector4 operator - (const Vector4 &a); eleni@0: Vector4 operator * (const Vector4 &a, const Vector4 &b); eleni@0: Vector4 operator * (const Vector4 &a, float b); eleni@0: Vector4 operator * (float b, const Vector4 &a); eleni@0: Vector4 operator / (const Vector4 &a, float b); eleni@0: eleni@0: const Vector4 &operator += (Vector4 &a, const Vector4 &b); eleni@0: eleni@0: float length (const Vector4 &a); eleni@0: float dot (const Vector4 &a, const Vector4 &b); eleni@0: Vector4 cross (const Vector4 &v1, const Vector4 &v2, const Vector4 &v3); eleni@0: Vector4 normalize (const Vector4 &a); eleni@0: eleni@0: Vector4 reflect(const Vector4 &v, const Vector4 &n); eleni@0: eleni@0: eleni@0: #endif eleni@0: