#ifndef VECTOR_H #define VECTOR_H #include #include class Vector2 { public: float x, y; Vector2(); Vector2(const Vector2& v); Vector2(float x, float y); bool operator==(const Vector2& v) const; Vector2& operator+=(const Vector2& v); Vector2 operator+(const Vector2& v); Vector2& operator-=(const Vector2& v); Vector2 operator-(const Vector2& v); Vector2& operator*=(const float f); Vector2& operator/=(const float f); float length(); std::string str(); }; class Vector3 : public Vector2 { public: typedef boost::shared_ptr p; float z; Vector3(); Vector3(const Vector3& v); Vector3(float x, float y, float z); bool operator==(const Vector3& v); bool operator!=(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 float f); Vector3 operator*(const float f); Vector3& operator/=(const float f); Vector3 operator/(const float f); Vector3 cross(const Vector3& v); float dot(const Vector3& v); Vector2 xz(); float length(); std::string str(); }; #endif