5#include "MRPch/MRBindingMacros.h"
14#pragma warning(disable: 4804)
15#pragma warning(disable: 4146)
49 constexpr const T &
operator [](
int e )
const noexcept {
return *( &
x + e ); }
50 constexpr T &
operator [](
int e )
noexcept {
return *( &
x + e ); }
66 return ( 1 / len ) * (*this);
77 return std::isfinite(
x ) && std::isfinite(
y );
94 if constexpr ( std::is_integral_v<T> )
95 return { b.x / a, b.y / a };
105 if constexpr ( std::is_integral_v<T> )
106 { a.
x /= b; a.
y /= b;
return a; }
108 return a *= ( 1 / b );
119 return ( a - b ).lengthSq();
126 return ( a - b ).length();
133 return a.
x * b.
y - a.
y * b.
x;
140 return a.x * b.x + a.y * b.y;
154 return { a.
x * b.
x,a.
y * b.
y };
161 return { a.
x / b.
x, a.
y / b.
y };
168 return std::atan2( std::abs( cross( a, b ) ), dot( a, b ) );
177 if ( abs( x ) < abs( y ) )
187MR_BIND_IGNORE
inline auto begin(
const Vector2<T> & v ) {
return &v[0]; }
189MR_BIND_IGNORE
inline auto begin( Vector2<T> & v ) {
return &v[0]; }
192MR_BIND_IGNORE
inline auto end(
const Vector2<T> & v ) {
return &v[2]; }
194MR_BIND_IGNORE
inline auto end( Vector2<T> & v ) {
return &v[2]; }
#define MR_REQUIRES_IF_SUPPORTED(...)
Definition MRMacros.h:31
MR_BIND_IGNORE auto begin(const BitSet &a)
Definition MRMesh/MRBitSet.h:307
MR_BIND_IGNORE auto end(const BitSet &)
Definition MRMesh/MRBitSet.h:309
Definition MRCameraOrientationPlugin.h:8
Definition MRMatrix2.h:19
Definition MRMesh/MRMeshFwd.h:89
Definition MRSymMatrix2.h:14
Definition MRVector2.h:25
T x
Definition MRVector2.h:31
Vector2(NoInit) noexcept
Definition MRVector2.h:34
Vector2< T > div(const Vector2< T > &a, const Vector2< T > &b)
per component division
Definition MRVector2.h:159
T cross(const Vector2< T > &a, const Vector2< T > &b)
cross product
Definition MRVector2.h:131
friend constexpr bool operator!=(const Vector2< T > &a, const Vector2< T > &b)
Definition MRVector2.h:81
Vector2 furthestBasisVector() const
returns one of 2 basis unit vector that makes the biggest angle with the direction specified by this
static constexpr Vector2 plusY() noexcept
Definition MRVector2.h:42
constexpr Vector2(const Vector2< U > &v) noexcept
Definition MRVector2.h:47
static constexpr Vector2 minusX() noexcept
Definition MRVector2.h:43
friend constexpr Vector2< T > & operator-=(Vector2< T > &a, const Vector2< T > &b)
Definition MRVector2.h:101
friend constexpr Vector2< T > & operator+=(Vector2< T > &a, const Vector2< T > &b)
Definition MRVector2.h:100
friend constexpr auto operator*(T a, const Vector2< T > &b) -> Vector2< decltype(std::declval< T >() *std::declval< T >())>
Definition MRVector2.h:90
T ValueType
Definition MRVector2.h:26
friend constexpr Vector2< T > & operator/=(Vector2< T > &a, T b)
Definition MRVector2.h:103
T y
Definition MRVector2.h:31
constexpr const T & operator[](int e) const noexcept
Definition MRVector2.h:49
friend constexpr bool operator==(const Vector2< T > &a, const Vector2< T > &b)
Definition MRVector2.h:80
constexpr Vector2() noexcept
Definition MRVector2.h:33
friend constexpr auto operator/(Vector2< T > b, T a) -> Vector2< decltype(std::declval< T >()/std::declval< T >())>
Definition MRVector2.h:92
bool isFinite() const
Definition MRVector2.h:75
static constexpr Vector2 diagonal(T a) noexcept
Definition MRVector2.h:40
T distanceSq(const Vector2< T > &a, const Vector2< T > &b)
squared distance between two points, which is faster to compute than just distance
Definition MRVector2.h:117
constexpr Vector2 perpendicular() const
returns same length vector orthogonal to this (rotated 90 degrees counter-clockwise)
Definition MRVector2.h:73
T distance(const Vector2< T > &a, const Vector2< T > &b)
distance between two points, better use distanceSq for higher performance
Definition MRVector2.h:124
constexpr Vector2(T x, T y) noexcept
Definition MRVector2.h:35
T sqr(const Vector2< T > &a)
squared length
Definition MRVector2.h:145
static constexpr int elements
Definition MRVector2.h:29
auto length() const
Definition MRVector2.h:53
static constexpr Vector2 plusX() noexcept
Definition MRVector2.h:41
auto dot(const Vector2< T > &a, const Vector2< T > &b) -> decltype(a.x *b.x)
dot product
Definition MRVector2.h:138
Vector2< T > mult(const Vector2< T > &a, const Vector2< T > &b)
per component multiplication
Definition MRVector2.h:152
friend constexpr Vector2< T > & operator*=(Vector2< T > &a, T b)
Definition MRVector2.h:102
Vector2 normalized() const
Definition MRVector2.h:61
friend constexpr auto operator-(const Vector2< T > &a) -> Vector2< decltype(-std::declval< T >())>
Definition MRVector2.h:86
T lengthSq() const
Definition MRVector2.h:52
static constexpr Vector2 minusY() noexcept
Definition MRVector2.h:44
friend constexpr const Vector2< T > & operator+(const Vector2< T > &a)
Definition MRVector2.h:85
T angle(const Vector2< T > &a, const Vector2< T > &b)
angle in radians between two vectors
Definition MRVector2.h:166
Definition MRMesh/MRVector3.h:26