vmath  vmath-0.12
Vector2< T > Class Template Reference

Class for two dimensional vector. More...

#include <vmath.h>

+ Collaboration diagram for Vector2< T >:

Public Member Functions

 Vector2 ()
 Creates and sets to (0,0) More...
 
 Vector2 (T nx, T ny)
 Creates and sets to (x,y) More...
 
 Vector2 (const Vector2< T > &src)
 Copy constructor. More...
 
template<class FromT >
 Vector2 (const Vector2< FromT > &src)
 Copy casting constructor. More...
 
template<class FromT >
Vector2< T > & operator= (const Vector2< FromT > &rhs)
 Copy casting operator. More...
 
Vector2< T > & operator= (const Vector2< T > &rhs)
 Copy operator. More...
 
T & operator[] (int n)
 Array access operator. More...
 
const T & operator[] (int n) const
 Constant array access operator. More...
 
Vector2< T > operator+ (const Vector2< T > &rhs) const
 Addition operator. More...
 
Vector2< T > operator- (const Vector2< T > &rhs) const
 Subtraction operator. More...
 
Vector2< T > operator* (const Vector2< T > &rhs) const
 Multiplication operator. More...
 
Vector2< T > operator/ (const Vector2< T > &rhs) const
 Division operator. More...
 
Vector2< T > & operator+= (const Vector2< T > &rhs)
 Addition operator. More...
 
Vector2< T > & operator-= (const Vector2< T > &rhs)
 Substraction operator. More...
 
Vector2< T > & operator*= (const Vector2< T > &rhs)
 Multiplication operator. More...
 
Vector2< T > & operator/= (const Vector2< T > &rhs)
 Division operator. More...
 
Vector2< T > operator+ (T rhs) const
 Addition operator. More...
 
Vector2< T > operator- (T rhs) const
 Subtraction operator. More...
 
Vector2< T > operator* (T rhs) const
 Multiplication operator. More...
 
Vector2< T > operator/ (T rhs) const
 Division operator. More...
 
Vector2< T > & operator+= (T rhs)
 Addition operator. More...
 
Vector2< T > & operator-= (T rhs)
 Subtraction operator. More...
 
Vector2< T > & operator*= (T rhs)
 Multiplication operator. More...
 
Vector2< T > & operator/= (T rhs)
 Division operator. More...
 
bool operator== (const Vector2< T > &rhs) const
 Equality test operator. More...
 
bool operator!= (const Vector2< T > &rhs) const
 Inequality test operator. More...
 
Vector2< T > operator- () const
 Unary negate operator. More...
 
length () const
 Get length of vector. More...
 
void normalize ()
 Normalize vector. More...
 
lengthSq () const
 Return square of length. More...
 
Vector2< T > lerp (T fact, const Vector2< 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...
 
}; 
 
union {
   T   y
 Second element of vector, alias for Y-coordinate. More...
 
   T   t
 Second element of vector, alias for T-coordinate. More...
 
}; 
 

Friends

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

Detailed Description

template<class T>
class Vector2< T >

Class for two dimensional vector.

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

  • access as position(x,y) — v.x = v.y = 3;
  • access as texture coordinate (s,t) — v.s = v.t = 3;
  • access via operator[] — v[0] = v[1] = 3;

Constructor & Destructor Documentation

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

Creates and sets to (0,0)

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

Creates and sets to (x,y)

Parameters
nxinitial x-coordinate value
nyinitial y-coordinate value
template<class T>
Vector2< T >::Vector2 ( const Vector2< T > &  src)
inline

Copy constructor.

Parameters
srcSource of data for new created instance.
template<class T>
template<class FromT >
Vector2< T >::Vector2 ( const Vector2< FromT > &  src)
inline

Copy casting constructor.

Parameters
srcSource of data for new created instance.

Member Function Documentation

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

Get length of vector.

Returns
lenght of vector
template<class T>
T Vector2< 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.
template<class T>
Vector2<T> Vector2< T >::lerp ( fact,
const Vector2< T > &  r 
) const
inline

Linear interpolation of two vectors.

Parameters
factFactor of interpolation. For translation from position 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?)
template<class T>
void Vector2< T >::normalize ( )
inline

Normalize vector.

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

Conversion to pointer operator.

Returns
Constant Pointer to internally stored (in management of class Vector2<T>) used for passing Vector2<T> values to gl*2[fd] functions.
template<class T>
Vector2< T >::operator T * ( )
inline

Conversion to pointer operator.

Returns
Pointer to internally stored (in management of class Vector2<T>) used for passing Vector2<T> values to gl*2[fd] functions.
template<class T>
bool Vector2< T >::operator!= ( const Vector2< T > &  rhs) const
inline

Inequality test operator.

Parameters
rhsRight hand side argument of binary operator.
Returns
not (lhs == rhs) :-P
template<class T>
Vector2<T> Vector2< T >::operator* ( const Vector2< T > &  rhs) const
inline

Multiplication operator.

Parameters
rhsRight hand side argument of binary operator.
template<class T>
Vector2<T> Vector2< T >::operator* ( rhs) const
inline

Multiplication operator.

Parameters
rhsRight hand side argument of binary operator.
template<class T>
Vector2<T>& Vector2< T >::operator*= ( const Vector2< T > &  rhs)
inline

Multiplication operator.

Parameters
rhsRight hand side argument of binary operator.
template<class T>
Vector2<T>& Vector2< T >::operator*= ( rhs)
inline

Multiplication operator.

Parameters
rhsRight hand side argument of binary operator.
template<class T>
Vector2<T> Vector2< T >::operator+ ( const Vector2< T > &  rhs) const
inline

Addition operator.

Parameters
rhsRight hand side argument of binary operator.
template<class T>
Vector2<T> Vector2< T >::operator+ ( rhs) const
inline

Addition operator.

Parameters
rhsRight hand side argument of binary operator.
template<class T>
Vector2<T>& Vector2< T >::operator+= ( const Vector2< T > &  rhs)
inline

Addition operator.

Parameters
rhsRight hand side argument of binary operator.
template<class T>
Vector2<T>& Vector2< T >::operator+= ( rhs)
inline

Addition operator.

Parameters
rhsRight hand side argument of binary operator.
template<class T>
Vector2<T> Vector2< T >::operator- ( const Vector2< T > &  rhs) const
inline

Subtraction operator.

Parameters
rhsRight hand side argument of binary operator.
template<class T>
Vector2<T> Vector2< T >::operator- ( rhs) const
inline

Subtraction operator.

Parameters
rhsRight hand side argument of binary operator.
template<class T>
Vector2<T> Vector2< T >::operator- ( ) const
inline

Unary negate operator.

Returns
negated vector
template<class T>
Vector2<T>& Vector2< T >::operator-= ( const Vector2< T > &  rhs)
inline

Substraction operator.

Parameters
rhsRight hand side argument of binary operator.
template<class T>
Vector2<T>& Vector2< T >::operator-= ( rhs)
inline

Subtraction operator.

Parameters
rhsRight hand side argument of binary operator.
template<class T>
Vector2<T> Vector2< T >::operator/ ( const Vector2< T > &  rhs) const
inline

Division operator.

Parameters
rhsRight hand side argument of binary operator.
template<class T>
Vector2<T> Vector2< T >::operator/ ( rhs) const
inline

Division operator.

Parameters
rhsRight hand side argument of binary operator.
template<class T>
Vector2<T>& Vector2< T >::operator/= ( const Vector2< T > &  rhs)
inline

Division operator.

Parameters
rhsRight hand side argument of binary operator.
template<class T>
Vector2<T>& Vector2< T >::operator/= ( rhs)
inline

Division operator.

Parameters
rhsRight hand side argument of binary operator.
template<class T>
template<class FromT >
Vector2<T>& Vector2< T >::operator= ( const Vector2< FromT > &  rhs)
inline

Copy casting operator.

Parameters
rhsRight hand side argument of binary operator.
template<class T>
Vector2<T>& Vector2< T >::operator= ( const Vector2< T > &  rhs)
inline

Copy operator.

Parameters
rhsRight hand side argument of binary operator.
template<class T>
bool Vector2< T >::operator== ( const Vector2< 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.
template<class T>
T& Vector2< T >::operator[] ( int  n)
inline

Array access operator.

Parameters
nArray index
Returns
For n = 0, reference to x coordinate, else reference to y y coordinate.
template<class T>
const T& Vector2< T >::operator[] ( int  n) const
inline

Constant array access operator.

Parameters
nArray index
Returns
For n = 0, reference to x coordinate, else reference to y y coordinate.
template<class T>
std::string Vector2< T >::toString ( ) const
inline

Gets string representation.

Friends And Related Function Documentation

template<class T>
std::ostream& operator<< ( std::ostream &  lhs,
const Vector2< 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

union { ... }
union { ... }
template<class T>
T Vector2< T >::s

First element of vector, alias for S-coordinate.

For textures notation.

template<class T>
T Vector2< T >::t

Second element of vector, alias for T-coordinate.

For textures notation.

template<class T>
T Vector2< T >::x

First element of vector, alias for X-coordinate.

template<class T>
T Vector2< T >::y

Second element of vector, alias for Y-coordinate.


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