/* math/vector2f.h This file is part of the Osirion project and is distributed under the terms of the GNU General Public License version 2 */ #ifndef __INCLUDED_MATH_VECTOR2F_H__ #define __INCLUDED_MATH_VECTOR2F_H__ #include namespace math { /// a point or vector in 2D space class Vector2f { public: /// default constructor Vector2f(); /// assignment constructor Vector2f(float const x, float const y); /// copy constructor Vector2f(Vector2f const &other); /// assign (0,0) void clear(); /// assignment operator void assign(float const x, float const y); /// assignment operator void assign(Vector2f const &other); /// assignment operator Vector2f & operator=(Vector2f const &other); /// vector subtraction Vector2f & operator-=(Vector2f const &other); /// vector sum Vector2f & operator+=(Vector2f const &other); /// vector subtraction Vector2f operator-(Vector2f const &other) const; /// vector sum Vector2f operator+(Vector2f const &other) const; /// array operator inline float& operator[](const size_t index) { return coord[index]; } /// array operator inline float operator[](const size_t index) const { return coord[index]; } /// a pointer to the internal data inline float *ptr() const { return (float *) coord; } /// x coordinate float &x; /// y coordinate float &y; private: float coord[2]; }; } #endif // __INCLUDED_MATH_VECTOR2F_H__