vmath  vmath-0.13
Vector3< T > Class Template Reference

Class for three dimensional vector. More...

#include <vmath.h>

+ Collaboration diagram for Vector3< T >:

Public Member Functions

 Vector3 ()
 Creates and sets to (0,0,0) More...
 
 Vector3 (T nx, T ny, T nz)
 Creates and sets to (x,y,z) More...
 
 Vector3 (const Vector3< T > &src)
 Copy constructor. More...
 
template<class FromT >
 Vector3 (const Vector3< FromT > &src)
 Copy casting constructor. More...
 
Vector3< T > operator= (const Vector3< T > &rhs)
 Copy operator. More...
 
template<class FromT >
Vector3< T > operator= (const Vector3< FromT > &rhs)
 Copy casting operator. More...
 
T & operator[] (int n)
 Array access operator. More...
 
const T & operator[] (int n) const
 Constant array access operator. More...
 
Vector3< T > operator+ (const Vector3< T > &rhs) const
 Addition operator. More...
 
Vector3< T > operator- (const Vector3< T > &rhs) const
 Subtraction operator. More...
 
Vector3< T > operator* (const Vector3< T > &rhs) const
 Multiplication operator. More...
 
Vector3< T > operator/ (const Vector3< T > &rhs) const
 Division operator. More...
 
Vector3< T > & operator+= (const Vector3< T > &rhs)
 Addition operator. More...
 
Vector3< T > & operator-= (const Vector3< T > &rhs)
 Subtraction operator. More...
 
Vector3< T > & operator*= (const Vector3< T > &rhs)
 Multiplication operator. More...
 
Vector3< T > & operator/= (const Vector3< T > &rhs)
 Division operator. More...
 
dotProduct (const Vector3< T > &rhs) const
 Dot product of two vectors. More...
 
Vector3< T > crossProduct (const Vector3< T > &rhs) const
 Cross product operator. More...
 
Vector3< T > operator+ (T rhs) const
 Addition operator. More...
 
Vector3< T > operator- (T rhs) const
 Subtraction operator. More...
 
Vector3< T > operator* (T rhs) const
 Multiplication operator. More...
 
Vector3< T > operator/ (T rhs) const
 Division operator. More...
 
Vector3< T > & operator+= (T rhs)
 Addition operator. More...
 
Vector3< T > & operator-= (T rhs)
 Subtraction operator. More...
 
Vector3< T > & operator*= (T rhs)
 Multiplication operator. More...
 
Vector3< T > & operator/= (T rhs)
 Division operator. More...
 
bool operator== (const Vector3< T > &rhs) const
 Equality test operator. More...
 
bool operator!= (const Vector3< T > &rhs) const
 Inequality test operator. More...
 
Vector3< T > operator- () const
 Unary negate operator. More...
 
length () const
 Get length of vector. More...
 
lengthSq () const
 Return square of length. More...
 
void normalize ()
 Normalize vector. More...
 
void rotate (T ax, T ay, T az)
 Rotate vector around three axis. More...
 
Vector3< T > lerp (T fact, const Vector3< T > &r) const
 Linear interpolation of two vectors. More...
 
 operator T* ()
 Conversion to pointer operator. More...
 
 operator const T * () const
 Conversion to pointer operator. More...
 
std::string toString () const
 Gets string representation. More...
 

Public Attributes

union {
   T   x
 First element of vector, alias for X-coordinate. More...
 
   T   s
 First element of vector, alias for S-coordinate. More...
 
   T   r
 First element of vector, alias for R-coordinate. More...
 
}; 
 
union {
   T   y
 Second element of vector, alias for Y-coordinate. More...
 
   T   t
 Second element of vector, alias for T-coordinate. More...
 
   T   g
 Second element of vector, alias for G-coordinate. More...
 
}; 
 
union {
   T   z
 Third element of vector, alias for Z-coordinate. More...
 
   T   u
 Third element of vector, alias for U-coordinate. More...
 
   T   b
 Third element of vector, alias for B-coordinate. More...
 
}; 
 

Friends

std::ostream & operator<< (std::ostream &lhs, const Vector3< T > rhs)
 Output to stream operator. More...
 

Detailed Description

template<class T>
class Vector3< T >

Class for three dimensional vector.

There are four ways of accessing vector components. Let's have Vector3f v, you can either:

  • access as position (x,y,z) — v.x = v.y = v.z = 1;
  • access as texture coordinate (s,t,u) — v.s = v.t = v.u = 1;
  • access as color (r,g,b) — v.r = v.g = v.b = 1;
  • access via operator[] — v[0] = v[1] = v[2] = 1;

Constructor & Destructor Documentation

◆ Vector3() [1/4]

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

Creates and sets to (0,0,0)

◆ Vector3() [2/4]

template<class T>
Vector3< T >::Vector3 ( nx,
ny,
nz 
)
inline

Creates and sets to (x,y,z)

Parameters
nxinitial x-coordinate value
nyinitial y-coordinate value
nzinitial z-coordinate value

◆ Vector3() [3/4]

template<class T>
Vector3< T >::Vector3 ( const Vector3< T > &  src)
inline

Copy constructor.

Parameters
srcSource of data for new created Vector3 instance.

◆ Vector3() [4/4]

template<class T>
template<class FromT >
Vector3< T >::Vector3 ( const Vector3< FromT > &  src)
inline

Copy casting constructor.

Parameters
srcSource of data for new created Vector3 instance.

Member Function Documentation

◆ crossProduct()

template<class T>
Vector3<T> Vector3< T >::crossProduct ( const Vector3< T > &  rhs) const
inline

Cross product operator.

Parameters
rhsRight hand side argument of binary operator.

◆ dotProduct()

template<class T>
T Vector3< T >::dotProduct ( const Vector3< T > &  rhs) const
inline

Dot product of two vectors.

Parameters
rhsRight hand side argument of binary operator.

◆ length()

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

Get length of vector.

Returns
lenght of vector

◆ lengthSq()

template<class T>
T Vector3< T >::lengthSq ( ) const
inline

Return square of length.

Returns
length ^ 2
Note
This method is faster then length(). For comparison of length of two vector can be used just this value, instead of more expensive length() method.

◆ lerp()

template<class T>
Vector3<T> Vector3< T >::lerp ( fact,
const Vector3< T > &  r 
) const
inline

Linear interpolation of two vectors.

Parameters
factFactor of interpolation. For translation from positon of this vector to vector r, values of factor goes from 0.0 to 1.0.
rSecond Vector for interpolation
Note
However values of fact parameter are reasonable only in interval [0.0 , 1.0], you can pass also values outside of this interval and you can get result (extrapolation?)

◆ normalize()

template<class T>
void Vector3< T >::normalize ( )
inline

Normalize vector.

◆ operator const T *()

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

Conversion to pointer operator.

Returns
Constant Pointer to internally stored (in management of class Vector3<T>) used for passing Vector3<T> values to gl*3[fd] functions.

◆ operator T*()

template<class T>
Vector3< T >::operator T* ( )
inline

Conversion to pointer operator.

Returns
Pointer to internally stored (in management of class Vector3<T>) used for passing Vector3<T> values to gl*3[fd] functions.

◆ operator!=()

template<class T>
bool Vector3< T >::operator!= ( const Vector3< T > &  rhs) const
inline

Inequality test operator.

Parameters
rhsRight hand side argument of binary operator.
Returns
not (lhs == rhs) :-P

◆ operator*() [1/2]

template<class T>
Vector3<T> Vector3< T >::operator* ( const Vector3< T > &  rhs) const
inline

Multiplication operator.

Parameters
rhsRight hand side argument of binary operator.

◆ operator*() [2/2]

template<class T>
Vector3<T> Vector3< T >::operator* ( rhs) const
inline

Multiplication operator.

Parameters
rhsRight hand side argument of binary operator.

◆ operator*=() [1/2]

template<class T>
Vector3<T>& Vector3< T >::operator*= ( const Vector3< T > &  rhs)
inline

Multiplication operator.

Parameters
rhsRight hand side argument of binary operator.

◆ operator*=() [2/2]

template<class T>
Vector3<T>& Vector3< T >::operator*= ( rhs)
inline

Multiplication operator.

Parameters
rhsRight hand side argument of binary operator.

◆ operator+() [1/2]

template<class T>
Vector3<T> Vector3< T >::operator+ ( const Vector3< T > &  rhs) const
inline

Addition operator.

Parameters
rhsRight hand side argument of binary operator.

◆ operator+() [2/2]

template<class T>
Vector3<T> Vector3< T >::operator+ ( rhs) const
inline

Addition operator.

Parameters
rhsRight hand side argument of binary operator.

◆ operator+=() [1/2]

template<class T>
Vector3<T>& Vector3< T >::operator+= ( const Vector3< T > &  rhs)
inline

Addition operator.

Parameters
rhsRight hand side argument of binary operator.

◆ operator+=() [2/2]

template<class T>
Vector3<T>& Vector3< T >::operator+= ( rhs)
inline

Addition operator.

Parameters
rhsRight hand side argument of binary operator.

◆ operator-() [1/3]

template<class T>
Vector3<T> Vector3< T >::operator- ( const Vector3< T > &  rhs) const
inline

Subtraction operator.

Parameters
rhsRight hand side argument of binary operator.

◆ operator-() [2/3]

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

Subtraction operator.

Parameters
rhsRight hand side argument of binary operator.

◆ operator-() [3/3]

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

Unary negate operator.

Returns
negated vector

◆ operator-=() [1/2]

template<class T>
Vector3<T>& Vector3< T >::operator-= ( const Vector3< T > &  rhs)
inline

Subtraction operator.

Parameters
rhsRight hand side argument of binary operator.

◆ operator-=() [2/2]

template<class T>
Vector3<T>& Vector3< T >::operator-= ( rhs)
inline

Subtraction operator.

Parameters
rhsRight hand side argument of binary operator.

◆ operator/() [1/2]

template<class T>
Vector3<T> Vector3< T >::operator/ ( const Vector3< T > &  rhs) const
inline

Division operator.

Parameters
rhsRight hand side argument of binary operator.

◆ operator/() [2/2]

template<class T>
Vector3<T> Vector3< T >::operator/ ( rhs) const
inline

Division operator.

Parameters
rhsRight hand side argument of binary operator.

◆ operator/=() [1/2]

template<class T>
Vector3<T>& Vector3< T >::operator/= ( const Vector3< T > &  rhs)
inline

Division operator.

Parameters
rhsRight hand side argument of binary operator.

◆ operator/=() [2/2]

template<class T>
Vector3<T>& Vector3< T >::operator/= ( rhs)
inline

Division operator.

Parameters
rhsRight hand side argument of binary operator.

◆ operator=() [1/2]

template<class T>
Vector3<T> Vector3< T >::operator= ( const Vector3< T > &  rhs)
inline

Copy operator.

Parameters
rhsRight hand side argument of binary operator.

◆ operator=() [2/2]

template<class T>
template<class FromT >
Vector3<T> Vector3< T >::operator= ( const Vector3< FromT > &  rhs)
inline

Copy casting operator.

Parameters
rhsRight hand side argument of binary operator.

◆ operator==()

template<class T>
bool Vector3< T >::operator== ( const Vector3< T > &  rhs) const
inline

Equality test operator.

Parameters
rhsRight hand side argument of binary operator.
Note
Test of equality is based of threshold EPSILON value. To be two values equal, must satisfy this condition | lhs.x - rhs.y | < EPSILON, same for y-coordinate, and z-coordinate.

◆ operator[]() [1/2]

template<class T>
T& Vector3< T >::operator[] ( int  n)
inline

Array access operator.

Parameters
nArray index
Returns
For n = 0, reference to x coordinate, n = 1 reference to y, else reference to z y coordinate.

◆ operator[]() [2/2]

template<class T>
const T& Vector3< T >::operator[] ( int  n) const
inline

Constant array access operator.

Parameters
nArray index
Returns
For n = 0, reference to x coordinate, n = 1 reference to y, else reference to z y coordinate.

◆ rotate()

template<class T>
void Vector3< T >::rotate ( ax,
ay,
az 
)
inline

Rotate vector around three axis.

Parameters
axAngle (in degrees) to be rotated around X-axis.
ayAngle (in degrees) to be rotated around Y-axis.
azAngle (in degrees) to be rotated around Z-axis.

◆ toString()

template<class T>
std::string Vector3< T >::toString ( ) const
inline

Gets string representation.

Friends And Related Function Documentation

◆ operator<<

template<class T>
std::ostream& operator<< ( std::ostream &  lhs,
const Vector3< T >  rhs 
)
friend

Output to stream operator.

Parameters
lhsLeft hand side argument of operator (commonly ostream instance).
rhsRight hand side argument of operator.
Returns
Left hand side argument - the ostream object passed to operator.

Member Data Documentation

◆ @5

union { ... }

◆ @7

union { ... }

◆ @9

union { ... }

◆ b

template<class T>
T Vector3< T >::b

Third element of vector, alias for B-coordinate.

For color notation.

◆ g

template<class T>
T Vector3< T >::g

Second element of vector, alias for G-coordinate.

For color notation.

◆ r

template<class T>
T Vector3< T >::r

First element of vector, alias for R-coordinate.

For color notation.

◆ s

template<class T>
T Vector3< T >::s

First element of vector, alias for S-coordinate.

For textures notation.

◆ t

template<class T>
T Vector3< T >::t

Second element of vector, alias for T-coordinate.

For textures notation.

◆ u

template<class T>
T Vector3< T >::u

Third element of vector, alias for U-coordinate.

For textures notation.

◆ x

template<class T>
T Vector3< T >::x

First element of vector, alias for X-coordinate.

◆ y

template<class T>
T Vector3< T >::y

Second element of vector, alias for Y-coordinate.

◆ z

template<class T>
T Vector3< T >::z

Third element of vector, alias for Z-coordinate.


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