diff options
Diffstat (limited to 'src/crepe/api/Vector2.h')
| -rw-r--r-- | src/crepe/api/Vector2.h | 49 | 
1 files changed, 31 insertions, 18 deletions
diff --git a/src/crepe/api/Vector2.h b/src/crepe/api/Vector2.h index bf9d124..6613641 100644 --- a/src/crepe/api/Vector2.h +++ b/src/crepe/api/Vector2.h @@ -1,5 +1,7 @@  #pragma once +#include <format> +  namespace crepe {  //! 2D vector @@ -11,55 +13,55 @@ struct Vector2 {  	T y = 0;  	//! Subtracts another vector from this vector and returns the result. -	Vector2 operator-(const Vector2<T> & other) const; +	Vector2<T> operator-(const Vector2<T> & other) const;  	//! Subtracts a scalar value from both components of this vector and returns the result. -	Vector2 operator-(T scalar) const; +	Vector2<T> operator-(T scalar) const;  	//! Adds another vector to this vector and returns the result. -	Vector2 operator+(const Vector2<T> & other) const; +	Vector2<T> operator+(const Vector2<T> & other) const;  	//! Adds a scalar value to both components of this vector and returns the result. -	Vector2 operator+(T scalar) const; +	Vector2<T> operator+(T scalar) const;  	//! Multiplies this vector by another vector element-wise and returns the result. -	Vector2 operator*(const Vector2<T> & other) const; +	Vector2<T> operator*(const Vector2<T> & other) const;  	//! Multiplies this vector by a scalar and returns the result. -	Vector2 operator*(T scalar) const; +	Vector2<T> operator*(T scalar) const;  	//! Divides this vector by another vector element-wise and returns the result. -	Vector2 operator/(const Vector2<T> & other) const; +	Vector2<T> operator/(const Vector2<T> & other) const;  	//! Divides this vector by a scalar and returns the result. -	Vector2 operator/(T scalar) const; +	Vector2<T> operator/(T scalar) const;  	//! Adds another vector to this vector and updates this vector. -	Vector2 & operator+=(const Vector2<T> & other); +	Vector2<T> & operator+=(const Vector2<T> & other);  	//! Adds a scalar value to both components of this vector and updates this vector. -	Vector2 & operator+=(T other); +	Vector2<T> & operator+=(T other);  	//! Subtracts another vector from this vector and updates this vector. -	Vector2 & operator-=(const Vector2<T> & other); +	Vector2<T> & operator-=(const Vector2<T> & other);  	//! Subtracts a scalar value from both components of this vector and updates this vector. -	Vector2 & operator-=(T other); +	Vector2<T> & operator-=(T other);  	//! Multiplies this vector by another vector element-wise and updates this vector. -	Vector2 & operator*=(const Vector2<T> & other); +	Vector2<T> & operator*=(const Vector2<T> & other);  	//! Multiplies this vector by a scalar and updates this vector. -	Vector2 & operator*=(T other); +	Vector2<T> & operator*=(T other);  	//! Divides this vector by another vector element-wise and updates this vector. -	Vector2 & operator/=(const Vector2<T> & other); +	Vector2<T> & operator/=(const Vector2<T> & other);  	//! Divides this vector by a scalar and updates this vector. -	Vector2 & operator/=(T other); +	Vector2<T> & operator/=(T other);  	//! Returns the negation of this vector. -	Vector2 operator-() const; +	Vector2<T> operator-() const;  	//! Checks if this vector is equal to another vector.  	bool operator==(const Vector2<T> & other) const; @@ -89,9 +91,20 @@ struct Vector2 {  	T distance_squared(const Vector2<T> & other) const;  	//! Returns the perpendicular vector to this vector. -	Vector2 perpendicular() const; +	Vector2<T> perpendicular() const; + +	//! Checks if both components of the vector are NaN. +	bool is_nan() const; + +	//! Rotate this vector clockwise by \c deg degrees +	Vector2<T> rotate(float deg) const;  };  } // namespace crepe +template <typename T> +struct std::formatter<crepe::Vector2<T>> : std::formatter<std::string> { +	format_context::iterator format(crepe::Vector2<T> vec, format_context & ctx) const; +}; +  #include "Vector2.hpp"  |