Divide Framework 0.1
A free and open-source 3D Framework under heavy development
Loading...
Searching...
No Matches
Divide::vec4< T > Class Template Reference

#include <MathVectors.h>

+ Inheritance diagram for Divide::vec4< T >:

Public Member Functions

 vec4 () noexcept
 
 vec4 (T xIn, T yIn, T zIn, T wIn) noexcept
 
 vec4 (T xIn, T yIn, T zIn) noexcept
 
template<typename U >
requires std::is_pod_v<U>
 vec4 (U xIn, U yIn, U zIn, U wIn) noexcept
 
template<typename U >
requires std::is_pod_v<U>
 vec4 (U xIn, U yIn, U zIn) noexcept
 
 vec4 (__m128 reg) noexcept
 
 vec4 (const SimdVector< T > &reg) noexcept
 
 vec4 (T value) noexcept
 
template<typename U >
requires std::is_pod_v<U>
 vec4 (U value) noexcept
 
 vec4 (const T *v) noexcept
 
 vec4 (const vec2< T > v) noexcept
 
 vec4 (const vec2< T > v, T zIn) noexcept
 
 vec4 (const vec2< T > v, T zIn, T wIn) noexcept
 
 vec4 (const vec3< T > &v) noexcept
 
 vec4 (const vec3< T > &v, T wIn) noexcept
 
template<typename U >
requires std::is_pod_v<U>
 vec4 (const vec2< U > v) noexcept
 
template<typename U >
requires std::is_pod_v<U>
 vec4 (const vec3< U > &v) noexcept
 
template<typename U >
requires std::is_pod_v<U>
 vec4 (const vec4< U > &v) noexcept
 
bool operator> (const vec4 &v) const noexcept
 
bool operator< (const vec4 &v) const noexcept
 
bool operator<= (const vec4 &v) const noexcept
 
bool operator>= (const vec4 &v) const noexcept
 
bool operator== (const vec4 &v) const noexcept
 
bool operator!= (const vec4 &v) const noexcept
 
template<typename U >
requires std::is_pod_v<U>
bool operator!= (const vec4< U > &v) const noexcept
 
template<typename U >
requires std::is_pod_v<U>
bool operator== (const vec4< U > &v) const noexcept
 
template<typename U >
requires std::is_pod_v<U>
vec4 operator- (U _f) const noexcept
 
template<typename U >
requires std::is_pod_v<U>
vec4 operator+ (U _f) const noexcept
 
template<typename U >
requires std::is_pod_v<U>
vec4 operator* (U _f) const noexcept
 
template<typename U >
requires std::is_pod_v<U>
vec4 operator/ (U _f) const noexcept
 
vec4 operator- () const noexcept
 
template<typename U >
requires std::is_pod_v<U>
vec4 operator+ (const vec4< U > &v) const noexcept
 
template<typename U >
requires std::is_pod_v<U>
vec4 operator- (const vec4< U > &v) const noexcept
 
template<typename U >
requires std::is_pod_v<U>
vec4 operator* (const vec4< U > &v) const noexcept
 
template<typename U >
requires std::is_pod_v<U>
vec4 operator/ (const vec4< U > &v) const noexcept
 
template<typename U >
requires std::is_pod_v<U>
vec4operator+= (U _f) noexcept
 
template<typename U >
requires std::is_pod_v<U>
vec4operator-= (U _f) noexcept
 
template<typename U >
requires std::is_pod_v<U>
vec4operator*= (U _f) noexcept
 
template<typename U >
requires std::is_pod_v<U>
vec4operator/= (U _f) noexcept
 
template<typename U >
requires std::is_pod_v<U>
vec4operator*= (const vec4< U > &v) noexcept
 
template<typename U >
requires std::is_pod_v<U>
vec4operator/= (const vec4< U > &v) noexcept
 
template<typename U >
requires std::is_pod_v<U>
vec4operator+= (const vec4< U > &v) noexcept
 
template<typename U >
requires std::is_pod_v<U>
vec4operator-= (const vec4< U > &v) noexcept
 
 operator T* () noexcept
 
 operator const T * () const noexcept
 
template<typename U >
requires std::is_unsigned_v<U>
T & operator[] (U i) noexcept
 
template<typename U >
requires std::is_unsigned_v<U>
const T & operator[] (U _i) const noexcept
 
vec2< T > rb () const noexcept
 GLSL like accessors (const to prevent erroneous usage like .xyz() += n)
 
vec2< T > xz () const noexcept
 
vec2< T > ra () const noexcept
 
vec2< T > xw () const noexcept
 
vec2< T > ga () const noexcept
 
vec2< T > yw () const noexcept
 
vec3< T > bgr () const noexcept
 
vec3< T > zyx () const noexcept
 
vec3< T > rga () const noexcept
 
vec3< T > xyw () const noexcept
 
void rb (const vec2< T > rb) noexcept
 
void xz (const vec2< T > xz) noexcept
 
void xz (T xIn, T zIn) noexcept
 
void ra (const vec2< T > ra) noexcept
 
void xw (const vec2< T > xw) noexcept
 
void xw (T xIn, T wIn) noexcept
 
void ga (const vec2< T > ga) noexcept
 
void yw (const vec2< T > yw) noexcept
 
void yw (T yIn, T wIn) noexcept
 
void bgr (const vec3< T > &bgr) noexcept
 
void zyx (const vec3< T > &zyx) noexcept
 
void rga (const vec3< T > &rga) noexcept
 
void xyw (const vec3< T > &xyw) noexcept
 
void xyw (T xIn, T yIn, T wIn) noexcept
 
void xzw (T xIn, T zIn, T wIn) noexcept
 
void set (const T *v) noexcept
 set the 4 components of the vector manually using a source pointer to a (large enough) array
 
void set (T value) noexcept
 set the 4 components of the vector manually
 
void set (T xIn, T yIn, T zIn, T wIn) noexcept
 set the 4 components of the vector manually
 
template<typename U >
requires std::is_pod_v<U>
void set (U xIn, U yIn, U zIn, U wIn) noexcept
 
void set (const vec4 &v) noexcept
 set the 4 components of the vector using a source vector
 
void set (const vec3< T > &v) noexcept
 set the 4 components of the vector using a smaller source vector
 
void set (const vec3< T > &v, T wIn) noexcept
 set the 4 components of the vector using a smaller source vector
 
void set (const vec2< T > v) noexcept
 set the 4 components of the vector using a smaller source vector
 
void set (const vec2< T > v1, const vec2< T > v2) noexcept
 set the 4 components of the vector using smaller source vectors
 
void reset () noexcept
 set all the components back to 0
 
template<typename U >
requires std::is_pod_v<U>
bool compare (const vec4< U > &v) const noexcept
 compare 2 vectors
 
template<typename U >
requires std::is_pod_v<U>
bool compare (const vec4< U > &v, U epsi) const noexcept
 compare 2 vectors within the specified tolerance
 
void swap (vec4 *iv) noexcept
 swap the components of this vector with that of the specified one
 
void swap (vec4 &iv) noexcept
 swap the components of this vector with that of the specified one
 
vec4normalize () noexcept
 transform the vector to unit length
 
template<typename U >
requires std::is_pod_v<U>
bool isPerpendicular (const vec4< U > &other, F32 epsilon=EPSILON_F32) const noexcept
 The current vector is perpendicular to the specified one within epsilon.
 
minComponent () const noexcept
 get the smallest value of X,Y,Z or W
 
maxComponent () const noexcept
 get the largest value of X,Y,Z or W
 
dot (const vec4 &v) const noexcept
 calculate the dot product between this vector and the specified one
 
length () const noexcept
 return the vector's length
 
lengthSquared () const noexcept
 return the squared distance of the vector
 
vec4 projectToNorm (const vec4< T > &direction)
 project this vector onto the given direction
 
void round () noexcept
 round all four values
 
void lerp (const vec4 &v, T factor) noexcept
 lerp between this and the specified vector by the specified amount
 
void lerp (const vec4 &v, const vec4 &factor) noexcept
 lerp between this and the specified vector by the specified amount for each component
 
FORCE_INLINE vec4< F32operator- (const F32 _f) const noexcept
 
FORCE_INLINE vec4< F32 > & operator-= (const F32 _f) noexcept
 
FORCE_INLINE vec4< F32operator+ (const F32 _f) const noexcept
 
FORCE_INLINE vec4< F32 > & operator+= (const F32 _f) noexcept
 
FORCE_INLINE vec4< F32operator* (const F32 _f) const noexcept
 
FORCE_INLINE vec4< F32 > & operator*= (const F32 _f) noexcept
 
FORCE_INLINE vec4< F32operator/ (const F32 _f) const noexcept
 
FORCE_INLINE vec4< F32 > & operator/= (const F32 _f) noexcept
 
FORCE_INLINE vec4< F32operator+ (const vec4< F32 > &v) const noexcept
 
FORCE_INLINE vec4< F32 > & operator+= (const vec4< F32 > &v) noexcept
 
FORCE_INLINE vec4< F32operator- (const vec4< F32 > &v) const noexcept
 
FORCE_INLINE vec4< F32 > & operator-= (const vec4< F32 > &v) noexcept
 
FORCE_INLINE vec4< F32operator/ (const vec4< F32 > &v) const noexcept
 
FORCE_INLINE vec4< F32 > & operator/= (const vec4< F32 > &v) noexcept
 
FORCE_INLINE vec4< F32operator* (const vec4< F32 > &v) const noexcept
 
FORCE_INLINE vec4< F32 > & operator*= (const vec4< F32 > &v) noexcept
 
template<typename U >
requires std::is_pod_v<U>
FORCE_INLINE bool compare (const vec4< U > &v) const noexcept
 compare 2 vectors
 
FORCE_INLINE bool compare (const vec4< F32 > &v) const noexcept
 
template<typename U >
requires std::is_pod_v<U>
FORCE_INLINE bool compare (const vec4< U > &v, const U epsi) const noexcept
 compare this vector with the one specified and see if they match within the specified amount
 
FORCE_INLINE void swap (vec4< F32 > *iv) noexcept
 
FORCE_INLINE F32 length () const noexcept
 
FORCE_INLINE vec4< F32 > & normalize () noexcept
 
template<typename U >
requires std::is_pod_v<U>
FORCE_INLINE bool isPerpendicular (const vec4< U > &other, const F32 epsilon) const noexcept
 The current vector is perpendicular to the specified one within epsilon.
 

Public Attributes

union {
   struct {
      T   x
 
      T   y
 
      T   z
 
      T   w
 
   } 
 
   struct {
      T   s
 
      T   t
 
      T   p
 
      T   q
 
   } 
 
   struct {
      T   r
 
      T   g
 
      T   b
 
      T   a
 
   } 
 
   struct {
      T   pitch
 
      T   yaw
 
      T   roll
 
      T   _pad0
 
   } 
 
   struct {
      T   turn
 
      T   move
 
      T   zoom
 
      T   _pad1
 
   } 
 
   struct {
      T   left
 
      T   right
 
      T   bottom
 
      T   top
 
   } 
 
   struct {
      T   fov
 
      T   ratio
 
      T   zNear
 
      T   zFar
 
   } 
 
   struct {
      T   width
 
      T   height
 
      T   depth
 
      T   key
 
   } 
 
   struct {
      T   offsetX
 
      T   offsetY
 
      T   sizeX
 
      T   sizeY
 
   } 
 
   struct {
      vec2< T >   xy
 
      vec2< T >   zw
 
   } 
 
   struct {
      vec2< T >   rg
 
      vec2< T >   ba
 
   } 
 
   struct {
      vec3< T >   xyz
 
      T   _w
 
   } 
 
   struct {
      vec3< T >   rgb
 
      T   _a
 
   } 
 
   struct {
      T   _x
 
      vec3< T >   yzw
 
   } 
 
   struct {
      T   _r
 
      vec3< T >   gba
 
   } 
 
   struct {
      T   _x1
 
      vec2< T >   yz
 
      T   _w1
 
   } 
 
   struct {
      T   _r1
 
      vec2< T >   gb
 
      T   _a1
 
   } 
 
   T   _v [4] = {T{0}, T{0}, T{0}, T{1}}
 
   SimdVector< T >   _reg
 
}; 
 

Detailed Description

template<typename T>
class Divide::vec4< T >

Definition at line 914 of file MathVectors.h.

Constructor & Destructor Documentation

◆ vec4() [1/18]

template<typename T >
Divide::vec4< T >::vec4 ( )
inlinenoexcept

Definition at line 919 of file MathVectors.h.

◆ vec4() [2/18]

template<typename T >
Divide::vec4< T >::vec4 ( xIn,
yIn,
zIn,
wIn 
)
inlinenoexcept

Definition at line 921 of file MathVectors.h.

◆ vec4() [3/18]

template<typename T >
Divide::vec4< T >::vec4 ( xIn,
yIn,
zIn 
)
inlinenoexcept

Definition at line 924 of file MathVectors.h.

◆ vec4() [4/18]

template<typename T >
template<typename U >
requires std::is_pod_v<U>
Divide::vec4< T >::vec4 ( xIn,
yIn,
zIn,
wIn 
)
inlinenoexcept

Definition at line 928 of file MathVectors.h.

◆ vec4() [5/18]

template<typename T >
template<typename U >
requires std::is_pod_v<U>
Divide::vec4< T >::vec4 ( xIn,
yIn,
zIn 
)
inlinenoexcept

Definition at line 932 of file MathVectors.h.

◆ vec4() [6/18]

template<typename T >
Divide::vec4< T >::vec4 ( __m128  reg)
inlinenoexcept

Definition at line 935 of file MathVectors.h.

◆ vec4() [7/18]

template<typename T >
Divide::vec4< T >::vec4 ( const SimdVector< T > &  reg)
inlinenoexcept

Definition at line 938 of file MathVectors.h.

◆ vec4() [8/18]

template<typename T >
Divide::vec4< T >::vec4 ( value)
inlinenoexcept

Definition at line 941 of file MathVectors.h.

◆ vec4() [9/18]

template<typename T >
template<typename U >
requires std::is_pod_v<U>
Divide::vec4< T >::vec4 ( value)
inlinenoexcept

Definition at line 945 of file MathVectors.h.

◆ vec4() [10/18]

template<typename T >
Divide::vec4< T >::vec4 ( const T *  v)
inlinenoexcept

Definition at line 948 of file MathVectors.h.

◆ vec4() [11/18]

template<typename T >
Divide::vec4< T >::vec4 ( const vec2< T >  v)
inlinenoexcept

Definition at line 951 of file MathVectors.h.

◆ vec4() [12/18]

template<typename T >
Divide::vec4< T >::vec4 ( const vec2< T >  v,
zIn 
)
inlinenoexcept

Definition at line 954 of file MathVectors.h.

◆ vec4() [13/18]

template<typename T >
Divide::vec4< T >::vec4 ( const vec2< T >  v,
zIn,
wIn 
)
inlinenoexcept

Definition at line 957 of file MathVectors.h.

◆ vec4() [14/18]

template<typename T >
Divide::vec4< T >::vec4 ( const vec3< T > &  v)
inlinenoexcept

Definition at line 960 of file MathVectors.h.

◆ vec4() [15/18]

template<typename T >
Divide::vec4< T >::vec4 ( const vec3< T > &  v,
wIn 
)
inlinenoexcept

Definition at line 963 of file MathVectors.h.

◆ vec4() [16/18]

template<typename T >
template<typename U >
requires std::is_pod_v<U>
Divide::vec4< T >::vec4 ( const vec2< U >  v)
inlinenoexcept

Definition at line 967 of file MathVectors.h.

◆ vec4() [17/18]

template<typename T >
template<typename U >
requires std::is_pod_v<U>
Divide::vec4< T >::vec4 ( const vec3< U > &  v)
inlinenoexcept

Definition at line 971 of file MathVectors.h.

◆ vec4() [18/18]

template<typename T >
template<typename U >
requires std::is_pod_v<U>
Divide::vec4< T >::vec4 ( const vec4< U > &  v)
inlinenoexcept

Definition at line 975 of file MathVectors.h.

Member Function Documentation

◆ bgr() [1/2]

template<typename T >
vec3< T > Divide::vec4< T >::bgr ( ) const
inlinenoexcept

Definition at line 1162 of file MathVectors.h.

◆ bgr() [2/2]

template<typename T >
void Divide::vec4< T >::bgr ( const vec3< T > &  bgr)
inlinenoexcept

Definition at line 1215 of file MathVectors.h.

◆ compare() [1/5]

FORCE_INLINE bool Divide::vec4< F32 >::compare ( const vec4< F32 > &  v) const
noexcept

Definition at line 890 of file MathVectors.inl.

◆ compare() [2/5]

template<typename T >
template<typename U >
requires std::is_pod_v<U>
bool Divide::vec4< T >::compare ( const vec4< U > &  v) const
noexcept

compare 2 vectors

◆ compare() [3/5]

template<typename T >
template<typename U >
requires std::is_pod_v<U>
FORCE_INLINE bool Divide::vec4< T >::compare ( const vec4< U > &  v) const
noexcept

compare 2 vectors

Definition at line 880 of file MathVectors.inl.

◆ compare() [4/5]

template<typename T >
template<typename U >
requires std::is_pod_v<U>
FORCE_INLINE bool Divide::vec4< T >::compare ( const vec4< U > &  v,
const U  epsi 
) const
noexcept

compare this vector with the one specified and see if they match within the specified amount

Definition at line 900 of file MathVectors.inl.

◆ compare() [5/5]

template<typename T >
template<typename U >
requires std::is_pod_v<U>
bool Divide::vec4< T >::compare ( const vec4< U > &  v,
epsi 
) const
noexcept

compare 2 vectors within the specified tolerance

◆ dot()

template<typename T >
FORCE_INLINE T Divide::vec4< T >::dot ( const vec4< T > &  v) const
noexcept

calculate the dot product between this vector and the specified one

Definition at line 961 of file MathVectors.inl.

◆ ga() [1/2]

template<typename T >
vec2< T > Divide::vec4< T >::ga ( ) const
inlinenoexcept

Definition at line 1154 of file MathVectors.h.

◆ ga() [2/2]

template<typename T >
void Divide::vec4< T >::ga ( const vec2< T >  ga)
inlinenoexcept

Definition at line 1203 of file MathVectors.h.

◆ isPerpendicular() [1/2]

template<typename T >
template<typename U >
requires std::is_pod_v<U>
FORCE_INLINE bool Divide::vec4< T >::isPerpendicular ( const vec4< U > &  other,
const F32  epsilon 
) const
noexcept

The current vector is perpendicular to the specified one within epsilon.

Definition at line 1011 of file MathVectors.inl.

◆ isPerpendicular() [2/2]

template<typename T >
template<typename U >
requires std::is_pod_v<U>
bool Divide::vec4< T >::isPerpendicular ( const vec4< U > &  other,
F32  epsilon = EPSILON_F32 
) const
noexcept

The current vector is perpendicular to the specified one within epsilon.

◆ length() [1/2]

template<typename T >
T Divide::vec4< T >::length ( ) const
inlinenoexcept

return the vector's length

Definition at line 1312 of file MathVectors.h.

◆ length() [2/2]

FORCE_INLINE F32 Divide::vec4< F32 >::length ( ) const
noexcept

Definition at line 967 of file MathVectors.inl.

◆ lengthSquared()

template<typename T >
FORCE_INLINE T Divide::vec4< T >::lengthSquared
noexcept

return the squared distance of the vector

Definition at line 974 of file MathVectors.inl.

◆ lerp() [1/2]

template<typename T >
FORCE_INLINE void Divide::vec4< T >::lerp ( const vec4< T > &  v,
const vec4< T > &  factor 
)
noexcept

lerp between this and the specified vector by the specified amount for each component

lerp between this and the specified vector by the specified amount for each component

Definition at line 1040 of file MathVectors.inl.

◆ lerp() [2/2]

template<typename T >
FORCE_INLINE void Divide::vec4< T >::lerp ( const vec4< T > &  v,
factor 
)
noexcept

lerp between this and the specified vector by the specified amount

Definition at line 1032 of file MathVectors.inl.

◆ maxComponent()

template<typename T >
FORCE_INLINE T Divide::vec4< T >::maxComponent
noexcept

get the largest value of X,Y,Z or W

get the largest value of X, Y, Z or W

Definition at line 1025 of file MathVectors.inl.

◆ minComponent()

template<typename T >
FORCE_INLINE T Divide::vec4< T >::minComponent
noexcept

get the smallest value of X,Y,Z or W

get the smallest value of X, Y, Z or W

Definition at line 1018 of file MathVectors.inl.

◆ normalize() [1/2]

template<typename T >
FORCE_INLINE vec4< T > & Divide::vec4< T >::normalize
noexcept

transform the vector to unit length

Definition at line 988 of file MathVectors.inl.

◆ normalize() [2/2]

FORCE_INLINE vec4< F32 > & Divide::vec4< F32 >::normalize ( )
noexcept

Definition at line 1002 of file MathVectors.inl.

◆ operator const T *()

template<typename T >
Divide::vec4< T >::operator const T * ( ) const
inlinenoexcept

Definition at line 1121 of file MathVectors.h.

◆ operator T*()

template<typename T >
Divide::vec4< T >::operator T* ( )
inlinenoexcept

Definition at line 1117 of file MathVectors.h.

◆ operator!=() [1/2]

template<typename T >
bool Divide::vec4< T >::operator!= ( const vec4< T > &  v) const
inlinenoexcept

Definition at line 999 of file MathVectors.h.

◆ operator!=() [2/2]

template<typename T >
template<typename U >
requires std::is_pod_v<U>
bool Divide::vec4< T >::operator!= ( const vec4< U > &  v) const
inlinenoexcept

Definition at line 1004 of file MathVectors.h.

◆ operator*() [1/4]

FORCE_INLINE vec4< F32 > Divide::vec4< F32 >::operator* ( const F32  _f) const
noexcept

Definition at line 789 of file MathVectors.inl.

◆ operator*() [2/4]

FORCE_INLINE vec4< F32 > Divide::vec4< F32 >::operator* ( const vec4< F32 > &  v) const
noexcept

Definition at line 864 of file MathVectors.inl.

◆ operator*() [3/4]

template<typename T >
template<typename U >
requires std::is_pod_v<U>
vec4 Divide::vec4< T >::operator* ( const vec4< U > &  v) const
inlinenoexcept

Definition at line 1059 of file MathVectors.h.

◆ operator*() [4/4]

template<typename T >
template<typename U >
requires std::is_pod_v<U>
vec4 Divide::vec4< T >::operator* ( _f) const
inlinenoexcept

Definition at line 1025 of file MathVectors.h.

◆ operator*=() [1/4]

FORCE_INLINE vec4< F32 > & Divide::vec4< F32 >::operator*= ( const F32  _f)
noexcept

Definition at line 796 of file MathVectors.inl.

◆ operator*=() [2/4]

FORCE_INLINE vec4< F32 > & Divide::vec4< F32 >::operator*= ( const vec4< F32 > &  v)
noexcept

Definition at line 871 of file MathVectors.inl.

◆ operator*=() [3/4]

template<typename T >
template<typename U >
requires std::is_pod_v<U>
vec4 & Divide::vec4< T >::operator*= ( const vec4< U > &  v)
inlinenoexcept

Definition at line 1097 of file MathVectors.h.

◆ operator*=() [4/4]

template<typename T >
template<typename U >
requires std::is_pod_v<U>
vec4 & Divide::vec4< T >::operator*= ( _f)
inlinenoexcept

Definition at line 1083 of file MathVectors.h.

◆ operator+() [1/4]

FORCE_INLINE vec4< F32 > Divide::vec4< F32 >::operator+ ( const F32  _f) const
noexcept

Definition at line 774 of file MathVectors.inl.

◆ operator+() [2/4]

FORCE_INLINE vec4< F32 > Divide::vec4< F32 >::operator+ ( const vec4< F32 > &  v) const
noexcept

Definition at line 819 of file MathVectors.inl.

◆ operator+() [3/4]

template<typename T >
template<typename U >
requires std::is_pod_v<U>
vec4 Divide::vec4< T >::operator+ ( const vec4< U > &  v) const
inlinenoexcept

Definition at line 1049 of file MathVectors.h.

◆ operator+() [4/4]

template<typename T >
template<typename U >
requires std::is_pod_v<U>
vec4 Divide::vec4< T >::operator+ ( _f) const
inlinenoexcept

Definition at line 1020 of file MathVectors.h.

◆ operator+=() [1/4]

FORCE_INLINE vec4< F32 > & Divide::vec4< F32 >::operator+= ( const F32  _f)
noexcept

Definition at line 781 of file MathVectors.inl.

◆ operator+=() [2/4]

FORCE_INLINE vec4< F32 > & Divide::vec4< F32 >::operator+= ( const vec4< F32 > &  v)
noexcept

Definition at line 826 of file MathVectors.inl.

◆ operator+=() [3/4]

template<typename T >
template<typename U >
requires std::is_pod_v<U>
vec4 & Divide::vec4< T >::operator+= ( const vec4< U > &  v)
inlinenoexcept

Definition at line 1107 of file MathVectors.h.

◆ operator+=() [4/4]

template<typename T >
template<typename U >
requires std::is_pod_v<U>
vec4 & Divide::vec4< T >::operator+= ( _f)
inlinenoexcept

Definition at line 1073 of file MathVectors.h.

◆ operator-() [1/5]

template<typename T >
vec4 Divide::vec4< T >::operator- ( ) const
inlinenoexcept

Definition at line 1043 of file MathVectors.h.

◆ operator-() [2/5]

FORCE_INLINE vec4< F32 > Divide::vec4< F32 >::operator- ( const F32  _f) const
noexcept

Definition at line 759 of file MathVectors.inl.

◆ operator-() [3/5]

FORCE_INLINE vec4< F32 > Divide::vec4< F32 >::operator- ( const vec4< F32 > &  v) const
noexcept

Definition at line 834 of file MathVectors.inl.

◆ operator-() [4/5]

template<typename T >
template<typename U >
requires std::is_pod_v<U>
vec4 Divide::vec4< T >::operator- ( const vec4< U > &  v) const
inlinenoexcept

Definition at line 1054 of file MathVectors.h.

◆ operator-() [5/5]

template<typename T >
template<typename U >
requires std::is_pod_v<U>
vec4 Divide::vec4< T >::operator- ( _f) const
inlinenoexcept

Definition at line 1015 of file MathVectors.h.

◆ operator-=() [1/4]

FORCE_INLINE vec4< F32 > & Divide::vec4< F32 >::operator-= ( const F32  _f)
noexcept

Definition at line 766 of file MathVectors.inl.

◆ operator-=() [2/4]

FORCE_INLINE vec4< F32 > & Divide::vec4< F32 >::operator-= ( const vec4< F32 > &  v)
noexcept

Definition at line 841 of file MathVectors.inl.

◆ operator-=() [3/4]

template<typename T >
template<typename U >
requires std::is_pod_v<U>
vec4 & Divide::vec4< T >::operator-= ( const vec4< U > &  v)
inlinenoexcept

Definition at line 1112 of file MathVectors.h.

◆ operator-=() [4/4]

template<typename T >
template<typename U >
requires std::is_pod_v<U>
vec4 & Divide::vec4< T >::operator-= ( _f)
inlinenoexcept

Definition at line 1078 of file MathVectors.h.

◆ operator/() [1/4]

FORCE_INLINE vec4< F32 > Divide::vec4< F32 >::operator/ ( const F32  _f) const
noexcept

Definition at line 804 of file MathVectors.inl.

◆ operator/() [2/4]

FORCE_INLINE vec4< F32 > Divide::vec4< F32 >::operator/ ( const vec4< F32 > &  v) const
noexcept

Definition at line 849 of file MathVectors.inl.

◆ operator/() [3/4]

template<typename T >
template<typename U >
requires std::is_pod_v<U>
vec4 Divide::vec4< T >::operator/ ( const vec4< U > &  v) const
inlinenoexcept

Definition at line 1064 of file MathVectors.h.

◆ operator/() [4/4]

template<typename T >
template<typename U >
requires std::is_pod_v<U>
vec4 Divide::vec4< T >::operator/ ( _f) const
inlinenoexcept

Definition at line 1030 of file MathVectors.h.

◆ operator/=() [1/4]

FORCE_INLINE vec4< F32 > & Divide::vec4< F32 >::operator/= ( const F32  _f)
noexcept

Definition at line 811 of file MathVectors.inl.

◆ operator/=() [2/4]

FORCE_INLINE vec4< F32 > & Divide::vec4< F32 >::operator/= ( const vec4< F32 > &  v)
noexcept

Definition at line 856 of file MathVectors.inl.

◆ operator/=() [3/4]

template<typename T >
template<typename U >
requires std::is_pod_v<U>
vec4 & Divide::vec4< T >::operator/= ( const vec4< U > &  v)
inlinenoexcept

Definition at line 1102 of file MathVectors.h.

◆ operator/=() [4/4]

template<typename T >
template<typename U >
requires std::is_pod_v<U>
vec4 & Divide::vec4< T >::operator/= ( _f)
inlinenoexcept

Definition at line 1088 of file MathVectors.h.

◆ operator<()

template<typename T >
bool Divide::vec4< T >::operator< ( const vec4< T > &  v) const
inlinenoexcept

Definition at line 983 of file MathVectors.h.

◆ operator<=()

template<typename T >
bool Divide::vec4< T >::operator<= ( const vec4< T > &  v) const
inlinenoexcept

Definition at line 987 of file MathVectors.h.

◆ operator==() [1/2]

template<typename T >
bool Divide::vec4< T >::operator== ( const vec4< T > &  v) const
inlinenoexcept

Definition at line 995 of file MathVectors.h.

◆ operator==() [2/2]

template<typename T >
template<typename U >
requires std::is_pod_v<U>
bool Divide::vec4< T >::operator== ( const vec4< U > &  v) const
inlinenoexcept

Definition at line 1009 of file MathVectors.h.

◆ operator>()

template<typename T >
bool Divide::vec4< T >::operator> ( const vec4< T > &  v) const
inlinenoexcept

Definition at line 979 of file MathVectors.h.

◆ operator>=()

template<typename T >
bool Divide::vec4< T >::operator>= ( const vec4< T > &  v) const
inlinenoexcept

Definition at line 991 of file MathVectors.h.

◆ operator[]() [1/2]

template<typename T >
template<typename U >
requires std::is_unsigned_v<U>
const T & Divide::vec4< T >::operator[] ( _i) const
inlinenoexcept

Definition at line 1132 of file MathVectors.h.

◆ operator[]() [2/2]

template<typename T >
template<typename U >
requires std::is_unsigned_v<U>
T & Divide::vec4< T >::operator[] ( i)
inlinenoexcept

Definition at line 1127 of file MathVectors.h.

◆ projectToNorm()

template<typename T >
FORCE_INLINE vec4< T > Divide::vec4< T >::projectToNorm ( const vec4< T > &  direction)

project this vector onto the given direction

Definition at line 981 of file MathVectors.inl.

◆ ra() [1/2]

template<typename T >
vec2< T > Divide::vec4< T >::ra ( ) const
inlinenoexcept

Definition at line 1146 of file MathVectors.h.

◆ ra() [2/2]

template<typename T >
void Divide::vec4< T >::ra ( const vec2< T >  ra)
inlinenoexcept

Definition at line 1191 of file MathVectors.h.

◆ rb() [1/2]

template<typename T >
vec2< T > Divide::vec4< T >::rb ( ) const
inlinenoexcept

GLSL like accessors (const to prevent erroneous usage like .xyz() += n)

Definition at line 1138 of file MathVectors.h.

◆ rb() [2/2]

template<typename T >
void Divide::vec4< T >::rb ( const vec2< T >  rb)
inlinenoexcept

Definition at line 1179 of file MathVectors.h.

◆ reset()

template<typename T >
void Divide::vec4< T >::reset ( )
inlinenoexcept

set all the components back to 0

Definition at line 1286 of file MathVectors.h.

◆ rga() [1/2]

template<typename T >
vec3< T > Divide::vec4< T >::rga ( ) const
inlinenoexcept

Definition at line 1170 of file MathVectors.h.

◆ rga() [2/2]

template<typename T >
void Divide::vec4< T >::rga ( const vec3< T > &  rga)
inlinenoexcept

Definition at line 1223 of file MathVectors.h.

◆ round()

template<typename T >
FORCE_INLINE void Divide::vec4< T >::round
noexcept

round all four values

Definition at line 917 of file MathVectors.inl.

◆ set() [1/9]

template<typename T >
void Divide::vec4< T >::set ( const T *  v)
inlinenoexcept

set the 4 components of the vector manually using a source pointer to a (large enough) array

Definition at line 1241 of file MathVectors.h.

◆ set() [2/9]

template<typename T >
void Divide::vec4< T >::set ( const vec2< T >  v)
inlinenoexcept

set the 4 components of the vector using a smaller source vector

Definition at line 1276 of file MathVectors.h.

◆ set() [3/9]

template<typename T >
void Divide::vec4< T >::set ( const vec2< T >  v1,
const vec2< T >  v2 
)
inlinenoexcept

set the 4 components of the vector using smaller source vectors

Definition at line 1281 of file MathVectors.h.

◆ set() [4/9]

template<typename T >
void Divide::vec4< T >::set ( const vec3< T > &  v)
inlinenoexcept

set the 4 components of the vector using a smaller source vector

Definition at line 1266 of file MathVectors.h.

◆ set() [5/9]

template<typename T >
void Divide::vec4< T >::set ( const vec3< T > &  v,
wIn 
)
inlinenoexcept

set the 4 components of the vector using a smaller source vector

Definition at line 1271 of file MathVectors.h.

◆ set() [6/9]

template<typename T >
void Divide::vec4< T >::set ( const vec4< T > &  v)
inlinenoexcept

set the 4 components of the vector using a source vector

Definition at line 1261 of file MathVectors.h.

◆ set() [7/9]

template<typename T >
void Divide::vec4< T >::set ( value)
inlinenoexcept

set the 4 components of the vector manually

Definition at line 1246 of file MathVectors.h.

◆ set() [8/9]

template<typename T >
void Divide::vec4< T >::set ( xIn,
yIn,
zIn,
wIn 
)
inlinenoexcept

set the 4 components of the vector manually

Definition at line 1251 of file MathVectors.h.

◆ set() [9/9]

template<typename T >
template<typename U >
requires std::is_pod_v<U>
void Divide::vec4< T >::set ( xIn,
yIn,
zIn,
wIn 
)
inlinenoexcept

Definition at line 1256 of file MathVectors.h.

◆ swap() [1/3]

template<typename T >
FORCE_INLINE void Divide::vec4< T >::swap ( vec4< T > &  iv)
noexcept

swap the components of this vector with that of the specified one

swap this vector's values with that of the specified vector

Definition at line 941 of file MathVectors.inl.

◆ swap() [2/3]

template<typename T >
FORCE_INLINE void Divide::vec4< T >::swap ( vec4< T > *  iv)
noexcept

swap the components of this vector with that of the specified one

swap this vector's values with that of the specified vector

Definition at line 925 of file MathVectors.inl.

◆ swap() [3/3]

FORCE_INLINE void Divide::vec4< F32 >::swap ( vec4< F32 > *  iv)
noexcept

Definition at line 934 of file MathVectors.inl.

◆ xw() [1/3]

template<typename T >
vec2< T > Divide::vec4< T >::xw ( ) const
inlinenoexcept

Definition at line 1150 of file MathVectors.h.

◆ xw() [2/3]

template<typename T >
void Divide::vec4< T >::xw ( const vec2< T >  xw)
inlinenoexcept

Definition at line 1195 of file MathVectors.h.

◆ xw() [3/3]

template<typename T >
void Divide::vec4< T >::xw ( xIn,
wIn 
)
inlinenoexcept

Definition at line 1199 of file MathVectors.h.

◆ xyw() [1/3]

template<typename T >
vec3< T > Divide::vec4< T >::xyw ( ) const
inlinenoexcept

Definition at line 1174 of file MathVectors.h.

◆ xyw() [2/3]

template<typename T >
void Divide::vec4< T >::xyw ( const vec3< T > &  xyw)
inlinenoexcept

Definition at line 1227 of file MathVectors.h.

◆ xyw() [3/3]

template<typename T >
void Divide::vec4< T >::xyw ( xIn,
yIn,
wIn 
)
inlinenoexcept

Definition at line 1231 of file MathVectors.h.

◆ xz() [1/3]

template<typename T >
vec2< T > Divide::vec4< T >::xz ( ) const
inlinenoexcept

Definition at line 1142 of file MathVectors.h.

◆ xz() [2/3]

template<typename T >
void Divide::vec4< T >::xz ( const vec2< T >  xz)
inlinenoexcept

Definition at line 1183 of file MathVectors.h.

◆ xz() [3/3]

template<typename T >
void Divide::vec4< T >::xz ( xIn,
zIn 
)
inlinenoexcept

Definition at line 1187 of file MathVectors.h.

◆ xzw()

template<typename T >
void Divide::vec4< T >::xzw ( xIn,
zIn,
wIn 
)
inlinenoexcept

Definition at line 1235 of file MathVectors.h.

◆ yw() [1/3]

template<typename T >
vec2< T > Divide::vec4< T >::yw ( ) const
inlinenoexcept

Definition at line 1158 of file MathVectors.h.

◆ yw() [2/3]

template<typename T >
void Divide::vec4< T >::yw ( const vec2< T >  yw)
inlinenoexcept

Definition at line 1207 of file MathVectors.h.

◆ yw() [3/3]

template<typename T >
void Divide::vec4< T >::yw ( yIn,
wIn 
)
inlinenoexcept

Definition at line 1211 of file MathVectors.h.

◆ zyx() [1/2]

template<typename T >
vec3< T > Divide::vec4< T >::zyx ( ) const
inlinenoexcept

Definition at line 1166 of file MathVectors.h.

◆ zyx() [2/2]

template<typename T >
void Divide::vec4< T >::zyx ( const vec3< T > &  zyx)
inlinenoexcept

Definition at line 1219 of file MathVectors.h.

Member Data Documentation

◆ 

union { ... } Divide::vec4< T >::@45

◆ _a

template<typename T >
T Divide::vec4< T >::_a

Definition at line 1378 of file MathVectors.h.

◆ _a1

template<typename T >
T Divide::vec4< T >::_a1

Definition at line 1394 of file MathVectors.h.

◆ _pad0

template<typename T >
T Divide::vec4< T >::_pad0

Definition at line 1342 of file MathVectors.h.

◆ _pad1

template<typename T >
T Divide::vec4< T >::_pad1

Definition at line 1346 of file MathVectors.h.

◆ _r

template<typename T >
T Divide::vec4< T >::_r

Definition at line 1386 of file MathVectors.h.

◆ _r1

template<typename T >
T Divide::vec4< T >::_r1

Definition at line 1394 of file MathVectors.h.

◆ _reg

template<typename T >
SimdVector<T> Divide::vec4< T >::_reg

Definition at line 1398 of file MathVectors.h.

◆ _v

template<typename T >
T Divide::vec4< T >::_v[4] = {T{0}, T{0}, T{0}, T{1}}

Definition at line 1397 of file MathVectors.h.

◆ _w

template<typename T >
T Divide::vec4< T >::_w

Definition at line 1374 of file MathVectors.h.

◆ _w1

template<typename T >
T Divide::vec4< T >::_w1

Definition at line 1390 of file MathVectors.h.

◆ _x

template<typename T >
T Divide::vec4< T >::_x

Definition at line 1382 of file MathVectors.h.

◆ _x1

template<typename T >
T Divide::vec4< T >::_x1

Definition at line 1390 of file MathVectors.h.

◆ a

template<typename T >
T Divide::vec4< T >::a

Definition at line 1338 of file MathVectors.h.

◆ b

template<typename T >
T Divide::vec4< T >::b

Definition at line 1338 of file MathVectors.h.

◆ ba

template<typename T >
vec2<T> Divide::vec4< T >::ba

Definition at line 1370 of file MathVectors.h.

◆ bottom

template<typename T >
T Divide::vec4< T >::bottom

Definition at line 1350 of file MathVectors.h.

◆ depth

template<typename T >
T Divide::vec4< T >::depth

Definition at line 1358 of file MathVectors.h.

◆ fov

template<typename T >
T Divide::vec4< T >::fov

Definition at line 1354 of file MathVectors.h.

◆ g

template<typename T >
T Divide::vec4< T >::g

Definition at line 1338 of file MathVectors.h.

◆ gb

template<typename T >
vec2<T> Divide::vec4< T >::gb

Definition at line 1394 of file MathVectors.h.

◆ gba

template<typename T >
vec3<T> Divide::vec4< T >::gba

Definition at line 1386 of file MathVectors.h.

◆ height

template<typename T >
T Divide::vec4< T >::height

Definition at line 1358 of file MathVectors.h.

◆ key

template<typename T >
T Divide::vec4< T >::key

Definition at line 1358 of file MathVectors.h.

◆ left

template<typename T >
T Divide::vec4< T >::left

Definition at line 1350 of file MathVectors.h.

◆ move

template<typename T >
T Divide::vec4< T >::move

Definition at line 1346 of file MathVectors.h.

◆ offsetX

template<typename T >
T Divide::vec4< T >::offsetX

Definition at line 1362 of file MathVectors.h.

◆ offsetY

template<typename T >
T Divide::vec4< T >::offsetY

Definition at line 1362 of file MathVectors.h.

◆ p

template<typename T >
T Divide::vec4< T >::p

Definition at line 1334 of file MathVectors.h.

◆ pitch

template<typename T >
T Divide::vec4< T >::pitch

Definition at line 1342 of file MathVectors.h.

◆ q

template<typename T >
T Divide::vec4< T >::q

Definition at line 1334 of file MathVectors.h.

◆ r

template<typename T >
T Divide::vec4< T >::r

Definition at line 1338 of file MathVectors.h.

◆ ratio

template<typename T >
T Divide::vec4< T >::ratio

Definition at line 1354 of file MathVectors.h.

◆ rg

template<typename T >
vec2<T> Divide::vec4< T >::rg

Definition at line 1370 of file MathVectors.h.

◆ rgb

template<typename T >
vec3<T> Divide::vec4< T >::rgb

Definition at line 1378 of file MathVectors.h.

◆ right

template<typename T >
T Divide::vec4< T >::right

Definition at line 1350 of file MathVectors.h.

◆ roll

template<typename T >
T Divide::vec4< T >::roll

Definition at line 1342 of file MathVectors.h.

◆ s

template<typename T >
T Divide::vec4< T >::s

Definition at line 1334 of file MathVectors.h.

◆ sizeX

template<typename T >
T Divide::vec4< T >::sizeX

Definition at line 1362 of file MathVectors.h.

◆ sizeY

template<typename T >
T Divide::vec4< T >::sizeY

Definition at line 1362 of file MathVectors.h.

◆ t

template<typename T >
T Divide::vec4< T >::t

Definition at line 1334 of file MathVectors.h.

◆ top

template<typename T >
T Divide::vec4< T >::top

Definition at line 1350 of file MathVectors.h.

◆ turn

template<typename T >
T Divide::vec4< T >::turn

Definition at line 1346 of file MathVectors.h.

◆ w

template<typename T >
T Divide::vec4< T >::w

Definition at line 1330 of file MathVectors.h.

◆ width

template<typename T >
T Divide::vec4< T >::width

Definition at line 1358 of file MathVectors.h.

◆ x

template<typename T >
T Divide::vec4< T >::x

Definition at line 1330 of file MathVectors.h.

◆ xy

template<typename T >
vec2<T> Divide::vec4< T >::xy

Definition at line 1366 of file MathVectors.h.

◆ xyz

template<typename T >
vec3<T> Divide::vec4< T >::xyz

Definition at line 1374 of file MathVectors.h.

◆ y

template<typename T >
T Divide::vec4< T >::y

Definition at line 1330 of file MathVectors.h.

◆ yaw

template<typename T >
T Divide::vec4< T >::yaw

Definition at line 1342 of file MathVectors.h.

◆ yz

template<typename T >
vec2<T> Divide::vec4< T >::yz

Definition at line 1390 of file MathVectors.h.

◆ yzw

template<typename T >
vec3<T> Divide::vec4< T >::yzw

Definition at line 1382 of file MathVectors.h.

◆ z

template<typename T >
T Divide::vec4< T >::z

Definition at line 1330 of file MathVectors.h.

◆ zFar

template<typename T >
T Divide::vec4< T >::zFar

Definition at line 1354 of file MathVectors.h.

◆ zNear

template<typename T >
T Divide::vec4< T >::zNear

Definition at line 1354 of file MathVectors.h.

◆ zoom

template<typename T >
T Divide::vec4< T >::zoom

Definition at line 1346 of file MathVectors.h.

◆ zw

template<typename T >
vec2<T> Divide::vec4< T >::zw

Definition at line 1366 of file MathVectors.h.


The documentation for this class was generated from the following files: