1#ifndef LXGUI_GUI_VECTOR2_HPP 
    2#define LXGUI_GUI_VECTOR2_HPP 
    4#include "lxgui/lxgui.hpp" 
    5#include "lxgui/utils.hpp" 
   15    using float_type = std::conditional_t<std::is_floating_point_v<T>, T, 
double>;
 
   19    constexpr vector2(T nx, T ny) noexcept : 
x(nx), 
y(ny) {}
 
   23        x(
static_cast<T
>(v.x)), 
y(
static_cast<T
>(v.y)) {}
 
 
   25    void set(T nx, T ny) 
noexcept {
 
 
   61        vec.
x = 
static_cast<T
>(orig.
x * ca - orig.
y * sa);
 
   62        vec.
y = 
static_cast<T
>(orig.
x * sa + orig.
y * ca);
 
 
   99        return (
x == v.x) && (
y == v.y);
 
 
  103        return (
x != v.x) || (
y != v.y);
 
 
  111        return vector2(
x * value.x, 
y * value.y);
 
 
  131        return vector2(
x / value.x, 
y / value.y);
 
 
  147        return x * v.x + 
y * v.y;
 
 
 
  184template<
typename O, 
typename T>
 
  186    return stream << v.
x << 
", " << v.
y;
 
 
std::ostream & operator<<(std::ostream &stream, const color &c)
 
color operator*(const color &c1, const color &c2) noexcept
 
T get_norm_squared() const noexcept
 
vector2 operator*(T value) const noexcept
 
void set(T nx, T ny) noexcept
 
vector2 operator*(const vector2 &value) const noexcept
 
float_type get_norm() const noexcept
 
vector2< float_type > get_normal() const noexcept
 
static const vector2 unit_y
 
vector2 operator/(const vector2 &value) const noexcept
 
static const vector2 unit_x
 
constexpr vector2(T nx, T ny) noexcept
 
static const vector2 zero
 
static const vector2 unit
 
T dot(const vector2 &v) const noexcept
 
vector2< float_type > get_unit() const noexcept
 
vector2 & operator*=(const vector2 &value) noexcept
 
vector2 get_rotated(float_type angle) const noexcept
 
vector2 & operator/=(const vector2 &value) noexcept
 
vector2 & operator/=(T value) noexcept
 
vector2 & operator*=(T value) noexcept
 
constexpr vector2()=default
 
vector2 operator-(const vector2 &v) const noexcept
 
vector2 & operator+=(const vector2 &v) noexcept
 
vector2 & operator-=(const vector2 &v) noexcept
 
std::conditional_t< std::is_floating_point_v< T >, T, double > float_type
 
vector2 operator/(T value) const noexcept
 
vector2 operator-() const noexcept
 
constexpr vector2(const vector2< U > &v) noexcept
 
vector2 operator+(const vector2 &v) const noexcept
 
bool operator!=(const vector2 &v) const noexcept
 
vector2 get_scaled(const vector2 &v) const noexcept
 
bool operator==(const vector2 &v) const noexcept