#ifndef MATH_VECTOR_H #define MATH_VECTOR_H class MathVector2 { public: float x, y; MathVector2(); MathVector2(float x, float y); bool operator==(MathVector2 other) const; bool operator!=(MathVector2 other) const; MathVector2 operator+() const; MathVector2 operator-() const; MathVector2 operator+(MathVector2 other) const; MathVector2 operator-(MathVector2 other) const; float det(MathVector2 other) const; MathVector2 round() const; }; MathVector2 operator*(float n, MathVector2 other); MathVector2 operator*(MathVector2 other, float n); MathVector2 operator/(MathVector2 other, float n); class MathVector3 { public: float x, y, z; MathVector3(); MathVector3(float x, float y, float z); bool operator==(MathVector3 other) const; bool operator!=(MathVector3 other) const; MathVector3 operator+() const; MathVector3 operator-() const; MathVector3 operator+(MathVector3 other) const; MathVector3 operator-(MathVector3 other) const; MathVector3 round() const; MathVector2 xy() const; MathVector3 cross(MathVector3 other) const; }; MathVector3 operator*(float n, MathVector3 other); MathVector3 operator*(MathVector3 other, float n); MathVector3 operator/(MathVector3 other, float n); class MathVector4 { public: float x, y, z, w; MathVector4(); MathVector4(float x, float y, float z, float w); MathVector4(float x, float y, float z); MathVector4(MathVector3 v, float w); MathVector4(MathVector3 v); bool operator==(MathVector4 other) const; bool operator!=(MathVector4 other) const; MathVector4 operator+() const; MathVector4 operator-() const; MathVector4 operator+(MathVector4 other) const; MathVector4 operator-(MathVector4 other) const; MathVector4 round() const; MathVector3 xyz() const; MathVector3 div_by_w() const; }; MathVector4 operator*(float n, MathVector4 other); MathVector4 operator*(MathVector4 other, float n); MathVector4 operator/(MathVector4 other, float n); #endif // MATH_VECTOR_H