SLProject 4.0.000
SLVec4< T > Class Template Reference

4D vector template class for standard 4D vector algebra. More...

#include <SLVec4.h>

Public Member Functions

 SLVec4 ()
 
 SLVec4 (const T V)
 
 SLVec4 (const T X, const T Y, const T Z=0, const T W=1)
 
 SLVec4 (const T v[4])
 
 SLVec4 (const SLVec2< T > &v)
 
 SLVec4 (const SLVec3< T > &v)
 
 SLVec4 (const SLVec4< T > &v)
 
 SLVec4 (const SLstring &fourFloatsWithDelimiter)
 
void set (const T X, const T Y, const T Z, const T W=1)
 
void set (const T xyz)
 
void set (const T v[4])
 
void set (const SLVec2< T > &v)
 
void set (const SLVec3< T > &v)
 
void set (const SLVec4< T > &v)
 
SLbool operator== (const SLVec4 &v) const
 
SLbool operator!= (const SLVec4 &v) const
 
SLbool operator<= (const SLVec4 &v) const
 
SLbool operator>= (const SLVec4 &v) const
 
SLbool operator< (const SLVec4 &v) const
 
SLbool operator> (const SLVec4 &v) const
 
SLbool operator<= (const T v) const
 
SLbool operator>= (const T v) const
 
SLbool operator< (const T v) const
 
SLbool operator> (const T v) const
 
SLVec4 operator+ (const SLVec4 &v) const
 
SLVec4 operator- (const SLVec4 &v) const
 
SLVec4 operator- () const
 
operator* (const SLVec4 &v) const
 
SLVec4 operator* (const T s) const
 
SLVec4 operator/ (const T s) const
 
SLVec4 operator& (const SLVec4 &v) const
 
SLVec4operator= (const SLVec2< T > &v)
 
SLVec4operator= (const SLVec3< T > &v)
 
SLVec4operator= (const SLVec4 &v)
 
SLVec4operator+= (const SLVec4 &v)
 
SLVec4operator+= (const SLVec3< T > &v)
 
SLVec4operator-= (const SLVec4 &v)
 
SLVec4operator-= (const SLVec3< T > &v)
 
SLVec4operator*= (const T s)
 
SLVec4operator/= (const T s)
 
SLVec4operator&= (const SLVec4 &v)
 
SLVec4operator&= (const SLVec3< T > &v)
 
void add (const SLVec4 &a, const SLVec4 &b)
 
void sub (const SLVec4 &a, const SLVec4 &b)
 
void scale (const T s)
 
dot (const SLVec4 &v)
 
void cross (const SLVec4 &a, const SLVec4 &b)
 
SLVec3< T > vec3 () const
 
SLVec2< T > vec2 () const
 
length () const
 
lengthSqr () const
 
SLVec4normalize ()
 
void wdiv ()
 
void clampMinMax (const T min, const T max)
 
diff (const SLVec4 &v)
 
diffRGB (const SLVec4 &v)
 
void mix (const SLVec4 &a, const SLVec4 &b, const T factor_b)
 
minXYZ ()
 
maxXYZ ()
 
minXYZW ()
 
maxXYZW ()
 
SLint maxComp ()
 
SLint minComp ()
 
SLbool isZero ()
 
void gammaCorrect (T oneOverGamma)
 Gamma correction. More...
 
void print (const SLchar *str=nullptr)
 
SLstring toString (SLstring delimiter=", ")
 Conversion to string. More...
 
void fromString (const SLstring &fourFloatsWithDelimiter, SLchar delimiter=',')
 Conversion from string. More...
 
void hsva2rgba (const SLVec4 &hsva)
 HSVA to RGBA color conversion (http://www.rapidtables.com/convert/color/hsv-to-rgb.htm) More...
 

Public Attributes

union {
   struct {
      T   x
 
      T   y
 
      T   z
 
      T   w
 
   } 
 
   struct {
      T   r
 
      T   g
 
      T   b
 
      T   a
 
   } 
 
   struct {
      T   comp [4]
 
   } 
 
}; 
 

Static Public Attributes

static SLVec4 ZERO = SLVec4<T>(0.0f, 0.0f, 0.0f, 1.0f)
 
static SLVec4 BLACK = SLVec4<T>(0.0f, 0.0f, 0.0f, 1.0f)
 
static SLVec4 GRAY = SLVec4<T>(0.5f, 0.5f, 0.5f, 1.0f)
 
static SLVec4 WHITE = SLVec4<T>(1.0f, 1.0f, 1.0f, 1.0f)
 
static SLVec4 RED = SLVec4<T>(1.0f, 0.0f, 0.0f, 1.0f)
 
static SLVec4 GREEN = SLVec4<T>(0.0f, 1.0f, 0.0f, 1.0f)
 
static SLVec4 BLUE = SLVec4<T>(0.0f, 0.0f, 1.0f, 1.0f)
 
static SLVec4 YELLOW = SLVec4<T>(1.0f, 1.0f, 0.0f, 1.0f)
 
static SLVec4 CYAN = SLVec4<T>(0.0f, 1.0f, 1.0f, 1.0f)
 
static SLVec4 MAGENTA = SLVec4<T>(1.0f, 0.0f, 1.0f, 1.0f)
 

Friends

SLVec4 operator* (T s, const SLVec4 &v)
 
std::ostream & operator<< (std::ostream &output, const SLVec4 &v)
 

Detailed Description

template<class T>
class SLVec4< T >

4D vector template class for standard 4D vector algebra.

4D vector template class with type definitions for 4D vectors and colors:
Use SLVec4f for a specific float type vector
Use SLVec4d for a specific double type vector
Use SLVec4r for a precision independent real type.

Constructor & Destructor Documentation

◆ SLVec4() [1/8]

template<class T >
SLVec4< T >::SLVec4 ( )
inline

◆ SLVec4() [2/8]

template<class T >
SLVec4< T >::SLVec4 ( const T  V)
inlineexplicit

◆ SLVec4() [3/8]

template<class T >
SLVec4< T >::SLVec4 ( const T  X,
const T  Y,
const T  Z = 0,
const T  W = 1 
)
inline

◆ SLVec4() [4/8]

template<class T >
SLVec4< T >::SLVec4 ( const T  v[4])
inlineexplicit

◆ SLVec4() [5/8]

template<class T >
SLVec4< T >::SLVec4 ( const SLVec2< T > &  v)
inlineexplicit

◆ SLVec4() [6/8]

template<class T >
SLVec4< T >::SLVec4 ( const SLVec3< T > &  v)
inlineexplicit

◆ SLVec4() [7/8]

template<class T >
SLVec4< T >::SLVec4 ( const SLVec4< T > &  v)
inline

◆ SLVec4() [8/8]

template<class T >
SLVec4< T >::SLVec4 ( const SLstring fourFloatsWithDelimiter)
inlineexplicit

Member Function Documentation

◆ add()

template<class T >
void SLVec4< T >::add ( const SLVec4< T > &  a,
const SLVec4< T > &  b 
)
inline

◆ clampMinMax()

template<class T >
void SLVec4< T >::clampMinMax ( const T  min,
const T  max 
)
inline

◆ cross()

template<class T >
void SLVec4< T >::cross ( const SLVec4< T > &  a,
const SLVec4< T > &  b 
)
inline

◆ diff()

template<class T >
T SLVec4< T >::diff ( const SLVec4< T > &  v)
inline

◆ diffRGB()

template<class T >
T SLVec4< T >::diffRGB ( const SLVec4< T > &  v)
inline

◆ dot()

template<class T >
T SLVec4< T >::dot ( const SLVec4< T > &  v)
inline

◆ fromString()

template<class T >
void SLVec4< T >::fromString ( const SLstring fourFloatsWithDelimiter,
SLchar  delimiter = ',' 
)
inline

Conversion from string.

◆ gammaCorrect()

template<class T >
void SLVec4< T >::gammaCorrect ( oneOverGamma)
inline

Gamma correction.

◆ hsva2rgba()

template<class T >
void SLVec4< T >::hsva2rgba ( const SLVec4< T > &  hsva)
inline

◆ isZero()

template<class T >
SLbool SLVec4< T >::isZero ( )
inline

◆ length()

template<class T >
T SLVec4< T >::length ( ) const
inline

◆ lengthSqr()

template<class T >
T SLVec4< T >::lengthSqr ( ) const
inline

◆ maxComp()

template<class T >
SLint SLVec4< T >::maxComp ( )
inline

◆ maxXYZ()

template<class T >
T SLVec4< T >::maxXYZ ( )
inline

◆ maxXYZW()

template<class T >
T SLVec4< T >::maxXYZW ( )
inline

◆ minComp()

template<class T >
SLint SLVec4< T >::minComp ( )
inline

◆ minXYZ()

template<class T >
T SLVec4< T >::minXYZ ( )
inline

◆ minXYZW()

template<class T >
T SLVec4< T >::minXYZW ( )
inline

◆ mix()

template<class T >
void SLVec4< T >::mix ( const SLVec4< T > &  a,
const SLVec4< T > &  b,
const T  factor_b 
)
inline

◆ normalize()

template<class T >
SLVec4 & SLVec4< T >::normalize ( )
inline

◆ operator!=()

template<class T >
SLbool SLVec4< T >::operator!= ( const SLVec4< T > &  v) const
inline

◆ operator&()

template<class T >
SLVec4 SLVec4< T >::operator& ( const SLVec4< T > &  v) const
inline

◆ operator&=() [1/2]

template<class T >
SLVec4 & SLVec4< T >::operator&= ( const SLVec3< T > &  v)
inline

◆ operator&=() [2/2]

template<class T >
SLVec4 & SLVec4< T >::operator&= ( const SLVec4< T > &  v)
inline

◆ operator*() [1/2]

template<class T >
T SLVec4< T >::operator* ( const SLVec4< T > &  v) const
inline

◆ operator*() [2/2]

template<class T >
SLVec4 SLVec4< T >::operator* ( const T  s) const
inline

◆ operator*=()

template<class T >
SLVec4 & SLVec4< T >::operator*= ( const T  s)
inline

◆ operator+()

template<class T >
SLVec4 SLVec4< T >::operator+ ( const SLVec4< T > &  v) const
inline

◆ operator+=() [1/2]

template<class T >
SLVec4 & SLVec4< T >::operator+= ( const SLVec3< T > &  v)
inline

◆ operator+=() [2/2]

template<class T >
SLVec4 & SLVec4< T >::operator+= ( const SLVec4< T > &  v)
inline

◆ operator-() [1/2]

template<class T >
SLVec4 SLVec4< T >::operator- ( ) const
inline

◆ operator-() [2/2]

template<class T >
SLVec4 SLVec4< T >::operator- ( const SLVec4< T > &  v) const
inline

◆ operator-=() [1/2]

template<class T >
SLVec4 & SLVec4< T >::operator-= ( const SLVec3< T > &  v)
inline

◆ operator-=() [2/2]

template<class T >
SLVec4 & SLVec4< T >::operator-= ( const SLVec4< T > &  v)
inline

◆ operator/()

template<class T >
SLVec4 SLVec4< T >::operator/ ( const T  s) const
inline

◆ operator/=()

template<class T >
SLVec4 & SLVec4< T >::operator/= ( const T  s)
inline

◆ operator<() [1/2]

template<class T >
SLbool SLVec4< T >::operator< ( const SLVec4< T > &  v) const
inline

◆ operator<() [2/2]

template<class T >
SLbool SLVec4< T >::operator< ( const T  v) const
inline

◆ operator<=() [1/2]

template<class T >
SLbool SLVec4< T >::operator<= ( const SLVec4< T > &  v) const
inline

◆ operator<=() [2/2]

template<class T >
SLbool SLVec4< T >::operator<= ( const T  v) const
inline

◆ operator=() [1/3]

template<class T >
SLVec4 & SLVec4< T >::operator= ( const SLVec2< T > &  v)
inline

◆ operator=() [2/3]

template<class T >
SLVec4 & SLVec4< T >::operator= ( const SLVec3< T > &  v)
inline

◆ operator=() [3/3]

template<class T >
SLVec4 & SLVec4< T >::operator= ( const SLVec4< T > &  v)
inline

◆ operator==()

template<class T >
SLbool SLVec4< T >::operator== ( const SLVec4< T > &  v) const
inline

◆ operator>() [1/2]

template<class T >
SLbool SLVec4< T >::operator> ( const SLVec4< T > &  v) const
inline

◆ operator>() [2/2]

template<class T >
SLbool SLVec4< T >::operator> ( const T  v) const
inline

◆ operator>=() [1/2]

template<class T >
SLbool SLVec4< T >::operator>= ( const SLVec4< T > &  v) const
inline

◆ operator>=() [2/2]

template<class T >
SLbool SLVec4< T >::operator>= ( const T  v) const
inline

◆ print()

template<class T >
void SLVec4< T >::print ( const SLchar str = nullptr)
inline

◆ scale()

template<class T >
void SLVec4< T >::scale ( const T  s)
inline

◆ set() [1/6]

template<class T >
void SLVec4< T >::set ( const SLVec2< T > &  v)
inline

◆ set() [2/6]

template<class T >
void SLVec4< T >::set ( const SLVec3< T > &  v)
inline

◆ set() [3/6]

template<class T >
void SLVec4< T >::set ( const SLVec4< T > &  v)
inline

◆ set() [4/6]

template<class T >
void SLVec4< T >::set ( const T  v[4])
inline

◆ set() [5/6]

template<class T >
void SLVec4< T >::set ( const T  X,
const T  Y,
const T  Z,
const T  W = 1 
)
inline

◆ set() [6/6]

template<class T >
void SLVec4< T >::set ( const T  xyz)
inline

◆ sub()

template<class T >
void SLVec4< T >::sub ( const SLVec4< T > &  a,
const SLVec4< T > &  b 
)
inline

◆ toString()

template<class T >
SLstring SLVec4< T >::toString ( SLstring  delimiter = ", ")
inline

Conversion to string.

◆ vec2()

template<class T >
SLVec2< T > SLVec4< T >::vec2 ( ) const
inline

◆ vec3()

template<class T >
SLVec3< T > SLVec4< T >::vec3 ( ) const
inline

◆ wdiv()

template<class T >
void SLVec4< T >::wdiv ( )
inline

Friends And Related Function Documentation

◆ operator*

template<class T >
SLVec4 operator* ( s,
const SLVec4< T > &  v 
)
friend

◆ operator<<

template<class T >
std::ostream & operator<< ( std::ostream &  output,
const SLVec4< T > &  v 
)
friend

Member Data Documentation

◆ 

union { ... } SLVec4< T >::@28

◆ a

template<class T >
T SLVec4< T >::a

◆ b

template<class T >
T SLVec4< T >::b

◆ BLACK

template<class T >
SLVec4< T > SLVec4< T >::BLACK = SLVec4<T>(0.0f, 0.0f, 0.0f, 1.0f)
static

◆ BLUE

template<class T >
SLVec4< T > SLVec4< T >::BLUE = SLVec4<T>(0.0f, 0.0f, 1.0f, 1.0f)
static

◆ comp

template<class T >
T SLVec4< T >::comp[4]

◆ CYAN

template<class T >
SLVec4< T > SLVec4< T >::CYAN = SLVec4<T>(0.0f, 1.0f, 1.0f, 1.0f)
static

◆ g

template<class T >
T SLVec4< T >::g

◆ GRAY

template<class T >
SLVec4< T > SLVec4< T >::GRAY = SLVec4<T>(0.5f, 0.5f, 0.5f, 1.0f)
static

◆ GREEN

template<class T >
SLVec4< T > SLVec4< T >::GREEN = SLVec4<T>(0.0f, 1.0f, 0.0f, 1.0f)
static

◆ MAGENTA

template<class T >
SLVec4< T > SLVec4< T >::MAGENTA = SLVec4<T>(1.0f, 0.0f, 1.0f, 1.0f)
static

◆ r

template<class T >
T SLVec4< T >::r

◆ RED

template<class T >
SLVec4< T > SLVec4< T >::RED = SLVec4<T>(1.0f, 0.0f, 0.0f, 1.0f)
static

◆ w

template<class T >
T SLVec4< T >::w

◆ WHITE

template<class T >
SLVec4< T > SLVec4< T >::WHITE = SLVec4<T>(1.0f, 1.0f, 1.0f, 1.0f)
static

◆ x

template<class T >
T SLVec4< T >::x

◆ y

template<class T >
T SLVec4< T >::y

◆ YELLOW

template<class T >
SLVec4< T > SLVec4< T >::YELLOW = SLVec4<T>(1.0f, 1.0f, 0.0f, 1.0f)
static

◆ z

template<class T >
T SLVec4< T >::z

◆ ZERO

template<class T >
SLVec4< T > SLVec4< T >::ZERO = SLVec4<T>(0.0f, 0.0f, 0.0f, 1.0f)
static

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