7#include "../SIMD/module.hpp"
8#include "../macros.hpp"
10namespace hi {
inline namespace v1 {
22 using value_type = array_type::value_type;
96 return *
this = *
this + rhs;
101 return *
this = *
this - rhs;
104 constexpr vector2& operator*=(
float const& rhs)
noexcept
106 return *
this = *
this * rhs;
116 return vector2{lhs._v + rhs._v};
126 return vector2{lhs._v - rhs._v};
146 return vector2{array_type::broadcast(lhs) * rhs._v};
156 return equal(lhs._v, rhs._v);
212 return lhs.x() * rhs.y() - lhs.y() * rhs.x();
253 return vector2{
min(
static_cast<array_type
>(lhs),
static_cast<array_type
>(rhs))};
263 return vector2{
max(
static_cast<array_type
>(lhs),
static_cast<array_type
>(rhs))};
277 return vector2{
ceil(
static_cast<array_type
>(rhs))};
292 return _v.z() == 0.0f
and _v.w() == 0.0f;
297 return std::format(
"({}, {})", rhs._v.x(), rhs._v.y());
302 return lhs << to_string(rhs);
311template<
typename CharT>
312struct std::formatter<
hi::vector2, CharT> {
320 return std::vformat_to(fc.out(),
"({}, {})", std::make_format_args(t.
x(), t.
y()));
@ other
The gui_event does not have associated data.
DOXYGEN BUG.
Definition algorithm.hpp:16
geometry/margins.hpp
Definition lookahead_iterator.hpp:5
constexpr Out narrow_cast(In const &rhs) noexcept
Cast numeric values without loss of precision.
Definition cast.hpp:377
A high-level geometric vector Part of the high-level vector, point, mat and color types.
Definition vector2.hpp:19
constexpr vector2() noexcept
Construct a empty vector / zero length.
Definition vector2.hpp:45
constexpr float & x() noexcept
Access the x element from the vector.
Definition vector2.hpp:57
constexpr float y() const noexcept
Access the y element from the vector.
Definition vector2.hpp:81
constexpr vector2(array_type const &other) noexcept
Construct a vector from a array_type-simd.
Definition vector2.hpp:38
friend constexpr vector2 round(vector2 const &rhs) noexcept
Round the elements of the vector toward nearest integer.
Definition vector2.hpp:268
constexpr bool holds_invariant() const noexcept
Check if the vector is valid.
Definition vector2.hpp:290
constexpr friend vector2 normalize(vector2 const &rhs) noexcept
Normalize a vector to a unit vector.
Definition vector2.hpp:190
constexpr vector2(float x, float y) noexcept
Construct a 3D vector from x, y and z elements.
Definition vector2.hpp:52
constexpr friend vector2 cross(vector2 const &rhs) noexcept
Get the cross product of one 2D vectors.
Definition vector2.hpp:219
constexpr friend float dot(vector2 const &lhs, vector2 const &rhs) noexcept
Get the dot product between two vectors.
Definition vector2.hpp:200
friend constexpr vector2 max(vector2 const &lhs, vector2 const &rhs) noexcept
Mix the two vectors and get the highest value of each element.
Definition vector2.hpp:261
friend constexpr vector2 ceil(vector2 const &rhs) noexcept
Round the elements of the vector toward upward and to the right.
Definition vector2.hpp:275
friend constexpr vector2 floor(vector2 const &rhs) noexcept
Round the elements of the vector toward downward and to the left.
Definition vector2.hpp:282
constexpr friend vector2 normal(vector2 const &rhs) noexcept
Get the normal on a 2D vector.
Definition vector2.hpp:241
friend float hypot(vector2 const &rhs) noexcept
Get the length of the vector.
Definition vector2.hpp:172
constexpr friend bool operator==(vector2 const &lhs, vector2 const &rhs) noexcept
Compare if two vectors are equal.
Definition vector2.hpp:154
constexpr friend vector2 operator*(float const &lhs, vector2 const &rhs) noexcept
Scale the vector by a scaler.
Definition vector2.hpp:144
constexpr friend float cross(vector2 const &lhs, vector2 const &rhs) noexcept
Get the cross product between two 2D vectors.
Definition vector2.hpp:232
constexpr friend vector2 operator+(vector2 const &lhs, vector2 const &rhs) noexcept
Add two vectors from each other.
Definition vector2.hpp:114
constexpr friend vector2 operator-(vector2 const &lhs, vector2 const &rhs) noexcept
Subtract two vectors from each other.
Definition vector2.hpp:124
constexpr float & y() noexcept
Access the y element from the vector.
Definition vector2.hpp:65
constexpr friend float det(vector2 const &lhs, vector2 const &rhs) noexcept
Get the determinate between two vectors.
Definition vector2.hpp:210
constexpr friend float rcp_hypot(vector2 const &rhs) noexcept
Get the length of the vector.
Definition vector2.hpp:181
constexpr friend float squared_hypot(vector2 const &rhs) noexcept
Get the squared length of the vector.
Definition vector2.hpp:163
constexpr float x() const noexcept
Access the x element from the vector.
Definition vector2.hpp:73
constexpr friend vector2 operator*(vector2 const &lhs, float const &rhs) noexcept
Scale the vector by a scaler.
Definition vector2.hpp:134
constexpr vector2 operator-() const noexcept
Mirror this vector.
Definition vector2.hpp:89
friend constexpr vector2 min(vector2 const &lhs, vector2 const &rhs) noexcept
Mix the two vectors and get the lowest value of each element.
Definition vector2.hpp:251