inline Vector2T operator / (const T Scalar) const { assert(Scalar != 0.0); T Inv = (T) 1.0f / Scalar; return Vector2T( X * Inv, Y * Inv); }
inline Vector2T Rotate(const Vector2T &oVector, const T angle) { return Vector2T(oVector.X * ooge::math::Cos(angle) - oVector.Y * ooge::math::Sin(angle), oVector.X * ooge::math::Sin(angle) + oVector.Y * ooge::math::Cos(angle)); }
inline Vector2T MidPoint(const Vector2T &oVector) const { return Vector2T((X + oVector.X) * 0.5f, (Y + oVector.Y) * 0.5f); }
inline Vector2T operator - () const { return Vector2T( -X, -Y); }
inline Vector2T operator * (const T Scalar) const { return Vector2T( X * Scalar, Y * Scalar); }
inline Vector2T operator / (const Vector2T &oVector) const { return Vector2T( X / oVector.X, Y / oVector.Y); }
inline Vector2T operator - (const Vector2T &oVector) const { return Vector2T( X - oVector.X, Y - oVector.Y); }
inline Vector2T operator * (const Vector2T &oVector) const { return Vector2T( X * oVector.X, Y * oVector.Y); }
inline Vector2T operator + (const Vector2T &oVector) const { return Vector2T( X + oVector.X, Y + oVector.Y); }
Vector2T operator *(float s) const { return Vector2T(x * s, y * s); }
Vector2T operator /(float s) const { return Vector2T(x / s, y / s); }
Vector2T operator -(const Vector2T& v) const { return Vector2T(x - v.x, y - v.y); }
inline Vector2T operator +(const Vector2T& v) const { return Vector2T(x + v.x, y + v.y); }