4D vector More...

#include <size.h>

+ Inheritance diagram for clan::Vec4< Type >:

Public Types

typedef Type datatype
 

Public Member Functions

 Vec4 ()
 
 Vec4 (const Type &scalar)
 
 Vec4 (const Vec2< Type > &copy, const Type &p3, const Type &p4)
 
 Vec4 (const Vec2< Type > &copy, const Vec2< Type > &copy34)
 
 Vec4 (const Vec3< Type > &copy, const Type &p4)
 
 Vec4 (const Type &p1, const Type &p2, const Type &p3, const Type &p4)
 
 Vec4 (const Type &p1, const Type &p2, const Vec2< Type > &copy34)
 
 Vec4 (const Type *array_xyzw)
 
Angle angle3 (const Vec4< Type > &vector) const
 Calculate the angle between this vector and an other vector (not taking into account the w ordinate). More...
 
Vec4< Type > & cross3 (const Vec4< Type > &vector)
 Calculate the cross product between this vector and an other vector (not taking into account the w ordinate). More...
 
Type distance3 (const Vec4< Type > &vector) const
 Calculate the distance between this vector and an other vector (not taking into account the w ordinate). More...
 
Type distance4 (const Vec4< Type > &vector) const
 Calculate the distance between this vector and an other vector (taking into account the w ordinate). More...
 
Type dot3 (const Vec4< Type > &vector) const
 Dot products this vector with an other vector (not taking into account the w ordinate). More...
 
Type dot4 (const Vec4< Type > &vector) const
 Dot products this vector with an other vector (taking into account the w ordinate). More...
 
bool is_equal (const Vec4< Type > &other, Type epsilon) const
 Returns true if equal within the bounds of an epsilon. More...
 
*Type length3 () const
 Returns the length (magnitude) of this vector (not taking into account the w ordinate). More...
 
template<>
double length3 () const
 
template<>
float length3 () const
 
*Type length4 () const
 Returns the length (magnitude) of this vector (taking into account the w ordinate). More...
 
template<>
double length4 () const
 
template<>
float length4 () const
 
Vec4< Type > & normalize3 ()
 Normalizes this vector (not taking into account the w ordinate) More...
 
Vec4< Type > & normalize4 ()
 Normalizes this vector (taking into account the w ordinate) More...
 
bool operator!= (const Vec4< Type > &vector) const
 != operator. More...
 
void operator*= (const Vec4< Type > &vector)
 *= operator. More...
 
void operator*= (Type value)
 *= operator. More...
 
void operator+= (const Vec4< Type > &vector)
 += operator. More...
 
void operator+= (Type value)
 += operator. More...
 
Vec4< Type > operator- () const
 
  • operator.
More...
 
void operator-= (const Vec4< Type > &vector)
 -= operator. More...
 
void operator-= (Type value)
 -= operator. More...
 
void operator/= (const Vec4< Type > &vector)
 /= operator. More...
 
void operator/= (Type value)
 /= operator. More...
 
bool operator< (const Vec4< Type > &vector) const
 < operator. More...
 
Vec4< Type > & operator= (const Vec4< Type > &vector)
 = operator. More...
 
bool operator== (const Vec4< Type > &vector) const
 == operator. More...
 
Vec4< Type > & rotate3 (const Angle &angle, const Vec4< Type > &axis)
 Rotate this vector around an axis. Same as glRotate[f|d](angle, a);. More...
 
Vec4< Type > & round ()
 Rounds all components on this vector. More...
 
void set_xy (const Vec2< Type > &new_v)
 
void set_zw (const Vec2< Type > &new_v)
 

Static Public Member Functions

static Vec4< Type > cross3 (const Vec4< Type > &vector1, const Vec4< Type > &vector2)
 Calculate the cross product between two vectors (not taking into account the w ordinate). More...
 
static Type dot3 (const Vec4< Type > &vector1, const Vec4< Type > &vector2)
 Dot products between two vectors (not taking into account the w ordinate). More...
 
static Type dot4 (const Vec4< Type > &vector1, const Vec4< Type > &vector2)
 Dot products between two vectors (taking into account the w ordinate). More...
 
static bool is_equal (const Vec4< Type > &first, const Vec4< Type > &second, Type epsilon)
 Returns true if equal within the bounds of an epsilon. More...
 
static Vec4< Type > normalize3 (const Vec4< Type > &vector)
 Normalizes a vector (not taking into account the w ordinate) More...
 
static Vec4< Type > normalize4 (const Vec4< Type > &vector)
 Normalizes a vector (taking into account the w ordinate) More...
 
static Vec4< Type > rotate3 (const Vec4< Type > &vector, const Angle &angle, const Vec4< Type > &axis)
 Rotate a vector around an axis. Same as glRotate[f|d](angle, a);. More...
 
static Vec4< Type > round (const Vec4< Type > &vector)
 Rounds all components on a vector. More...
 

Public Attributes

union {
   Type   r
 
   Type   s
 
   Type   x
 
}; 
 
union {
   Type   g
 
   Type   t
 
   Type   y
 
}; 
 
union {
   Type   b
 
   Type   u
 
   Type   z
 
}; 
 
union {
   Type   a
 
   Type   v
 
   Type   w
 
}; 
 

Detailed Description

template<typename Type>
class clan::Vec4< Type >

4D vector

These vector templates are defined for:
char (Vec4c), unsigned char (Vec4uc), short (Vec4s),
unsigned short (Vec4us), int (Vec4i), unsigned int (Vec4ui), float (Vec4f), double (Vec4d)

Member Typedef Documentation

template<typename Type>
typedef Type clan::Vec4< Type >::datatype

Constructor & Destructor Documentation

template<typename Type>
clan::Vec4< Type >::Vec4 ( )
inline
template<typename Type>
clan::Vec4< Type >::Vec4 ( const Type &  scalar)
inlineexplicit
template<typename Type>
clan::Vec4< Type >::Vec4 ( const Vec2< Type > &  copy,
const Type &  p3,
const Type &  p4 
)
inlineexplicit
template<typename Type>
clan::Vec4< Type >::Vec4 ( const Vec2< Type > &  copy,
const Vec2< Type > &  copy34 
)
inlineexplicit
template<typename Type>
clan::Vec4< Type >::Vec4 ( const Vec3< Type > &  copy,
const Type &  p4 
)
inlineexplicit
template<typename Type>
clan::Vec4< Type >::Vec4 ( const Type &  p1,
const Type &  p2,
const Type &  p3,
const Type &  p4 
)
inlineexplicit
template<typename Type>
clan::Vec4< Type >::Vec4 ( const Type &  p1,
const Type &  p2,
const Vec2< Type > &  copy34 
)
inlineexplicit
template<typename Type>
clan::Vec4< Type >::Vec4 ( const Type *  array_xyzw)
inlineexplicit

Member Function Documentation

template<typename Type>
Angle clan::Vec4< Type >::angle3 ( const Vec4< Type > &  vector) const

Calculate the angle between this vector and an other vector (not taking into account the w ordinate).

Parameters
vector= Second vector used to calculate angle.
Returns
The angle between the two vectors.
template<typename Type>
static Vec4<Type> clan::Vec4< Type >::cross3 ( const Vec4< Type > &  vector1,
const Vec4< Type > &  vector2 
)
static

Calculate the cross product between two vectors (not taking into account the w ordinate).

= The first vector = The second vector

Returns
= Cross product
template<typename Type>
Vec4<Type>& clan::Vec4< Type >::cross3 ( const Vec4< Type > &  vector)

Calculate the cross product between this vector and an other vector (not taking into account the w ordinate).

Operates in the native datatype

Parameters
vectorSecond vector used to perform the calculation.
Returns
reference to this object
template<typename Type>
Type clan::Vec4< Type >::distance3 ( const Vec4< Type > &  vector) const

Calculate the distance between this vector and an other vector (not taking into account the w ordinate).

Parameters
vector= Second vector used to calculate distance.
Returns
The distance between the two vectors.
template<typename Type>
Type clan::Vec4< Type >::distance4 ( const Vec4< Type > &  vector) const

Calculate the distance between this vector and an other vector (taking into account the w ordinate).

Parameters
vector= Second vector used to calculate distance.
Returns
The distance between the two vectors.
template<typename Type>
static Type clan::Vec4< Type >::dot3 ( const Vec4< Type > &  vector1,
const Vec4< Type > &  vector2 
)
inlinestatic

Dot products between two vectors (not taking into account the w ordinate).

Operates in the native datatype

Parameters
vector1First vector used for the dot product.
vector2Second vector used for the dot product.
Returns
The resulting dot product of the two vectors.
template<typename Type>
Type clan::Vec4< Type >::dot3 ( const Vec4< Type > &  vector) const
inline

Dot products this vector with an other vector (not taking into account the w ordinate).

Operates in the native datatype

Parameters
vectorSecond vector used for the dot product.
Returns
The resulting dot product of the two vectors.
template<typename Type>
static Type clan::Vec4< Type >::dot4 ( const Vec4< Type > &  vector1,
const Vec4< Type > &  vector2 
)
inlinestatic

Dot products between two vectors (taking into account the w ordinate).

Operates in the native datatype

Parameters
vector1First vector used for the dot product.
vector2Second vector used for the dot product.
Returns
The resulting dot product of the two vectors.
template<typename Type>
Type clan::Vec4< Type >::dot4 ( const Vec4< Type > &  vector) const
inline

Dot products this vector with an other vector (taking into account the w ordinate).

Operates in the native datatype

Parameters
vectorSecond vector used for the dot product.
Returns
The resulting dot product of the two vectors.
template<typename Type>
static bool clan::Vec4< Type >::is_equal ( const Vec4< Type > &  first,
const Vec4< Type > &  second,
Type  epsilon 
)
inlinestatic

Returns true if equal within the bounds of an epsilon.

Parameters
first= Value A
second= Value B
epsilon= The epsilon (eg FLT_EPSILON/2, DBL_EPSILON/2)

Referenced by clan::Vec4< float >::is_equal().

template<typename Type>
bool clan::Vec4< Type >::is_equal ( const Vec4< Type > &  other,
Type  epsilon 
) const
inline

Returns true if equal within the bounds of an epsilon.

Parameters
other= Other value
epsilon= The epsilon (eg FLT_EPSILON/2, DBL_EPSILON/2)
template<>
double clan::Vec4< double >::length3 ( ) const
inline

References clan::x, clan::y, and clan::z.

template<>
float clan::Vec4< float >::length3 ( ) const
inline

References clan::x, clan::y, and clan::z.

template<>
double clan::Vec4< double >::length4 ( ) const
inline

References clan::w, clan::x, clan::y, and clan::z.

template<>
float clan::Vec4< float >::length4 ( ) const
inline

References clan::w, clan::x, clan::y, and clan::z.

template<typename Type>
static Vec4<Type> clan::Vec4< Type >::normalize3 ( const Vec4< Type > &  vector)
static

Normalizes a vector (not taking into account the w ordinate)

Operates in the native datatype

Parameters
vector= The vector to use
Returns
the normalized vector
template<typename Type>
Vec4<Type>& clan::Vec4< Type >::normalize3 ( )

Normalizes this vector (not taking into account the w ordinate)

Operates in the native datatype

Returns
reference to this object
template<typename Type>
static Vec4<Type> clan::Vec4< Type >::normalize4 ( const Vec4< Type > &  vector)
static

Normalizes a vector (taking into account the w ordinate)

Operates in the native datatype

Parameters
vector= The vector to use
Returns
the normalized vector
template<typename Type>
Vec4<Type>& clan::Vec4< Type >::normalize4 ( )

Normalizes this vector (taking into account the w ordinate)

Operates in the native datatype

Returns
reference to this object
template<typename Type>
bool clan::Vec4< Type >::operator!= ( const Vec4< Type > &  vector) const
inline

!= operator.

template<typename Type>
void clan::Vec4< Type >::operator*= ( const Vec4< Type > &  vector)
inline

*= operator.

template<typename Type>
void clan::Vec4< Type >::operator*= ( Type  value)
inline

*= operator.

template<typename Type>
void clan::Vec4< Type >::operator+= ( const Vec4< Type > &  vector)
inline

+= operator.

template<typename Type>
void clan::Vec4< Type >::operator+= ( Type  value)
inline

+= operator.

template<typename Type>
Vec4<Type> clan::Vec4< Type >::operator- ( ) const
inline

  • operator.

template<typename Type>
void clan::Vec4< Type >::operator-= ( const Vec4< Type > &  vector)
inline

-= operator.

template<typename Type>
void clan::Vec4< Type >::operator-= ( Type  value)
inline

-= operator.

template<typename Type>
void clan::Vec4< Type >::operator/= ( const Vec4< Type > &  vector)
inline

/= operator.

template<typename Type>
void clan::Vec4< Type >::operator/= ( Type  value)
inline

/= operator.

template<typename Type>
bool clan::Vec4< Type >::operator< ( const Vec4< Type > &  vector) const
inline

< operator.

template<typename Type>
Vec4<Type>& clan::Vec4< Type >::operator= ( const Vec4< Type > &  vector)
inline

= operator.

template<typename Type>
bool clan::Vec4< Type >::operator== ( const Vec4< Type > &  vector) const
inline

== operator.

template<typename Type>
static Vec4<Type> clan::Vec4< Type >::rotate3 ( const Vec4< Type > &  vector,
const Angle angle,
const Vec4< Type > &  axis 
)
static

Rotate a vector around an axis. Same as glRotate[f|d](angle, a);.

Not taking into account the w ordinate
The w ordinate is not modified

Parameters
vector= The vector to use
angleAngle to rotate
axisRotation axis.
Returns
The rotated vector
template<typename Type>
Vec4<Type>& clan::Vec4< Type >::rotate3 ( const Angle angle,
const Vec4< Type > &  axis 
)

Rotate this vector around an axis. Same as glRotate[f|d](angle, a);.

Not taking into account the w ordinate
The w ordinate is not modified

Parameters
angleAngle to rotate
axisRotation axis.
Returns
reference to this object
template<typename Type>
static Vec4<Type> clan::Vec4< Type >::round ( const Vec4< Type > &  vector)
static

Rounds all components on a vector.

Includes the w ordinate
Uses Asymmetric Arithmetic Rounding

Parameters
vector= The vector to use
Returns
The rounded vector
template<typename Type>
Vec4<Type>& clan::Vec4< Type >::round ( )

Rounds all components on this vector.

Includes the w ordinate
Uses Asymmetric Arithmetic Rounding

Returns
reference to this object
template<typename Type>
void clan::Vec4< Type >::set_xy ( const Vec2< Type > &  new_v)
inline
template<typename Type>
void clan::Vec4< Type >::set_zw ( const Vec2< Type > &  new_v)
inline

Member Data Documentation

union { ... }
union { ... }
union { ... }
union { ... }
template<typename Type>
Type clan::Vec4< Type >::s
template<typename Type>
Type clan::Vec4< Type >::t
template<typename Type>
Type clan::Vec4< Type >::u
template<typename Type>
Type clan::Vec4< Type >::v

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