#ifndef _VECTOR_H_ #define _VECTOR_H_ class Vector2 { public: union { float x, r; }; union { float y, g; }; Vector2(); Vector2(float p1, float p2); Vector2(const Vector2& v); Vector2& operator=(const Vector2& v); Vector2& operator+=(const Vector2& v); Vector2& operator+(const Vector2& v); Vector2& operator-=(const Vector2& v); Vector2& operator-(const Vector2& v); }; class Vector3 : public Vector2 { public: union { float z, b; }; Vector3(); Vector3(float p1, float p2, float p3); Vector3(const Vector3& v); Vector3& operator=(const Vector3& v); Vector3& operator+=(const Vector3& v); Vector3& operator+(const Vector3& v); Vector3& operator-=(const Vector3& v); Vector3& operator-(const Vector3& v); }; class Vector4 : public Vector3 { public: union { float w, a; }; Vector4(); Vector4(float p1, float p2, float p3, float p4); Vector4(const Vector4& v); Vector4& operator=(const Vector4& v); Vector4& operator+=(const Vector4& v); Vector4& operator+(const Vector4& v); Vector4& operator-=(const Vector4& v); Vector4& operator-(const Vector4& v); }; #endif