vmath vmath-0.11

Public Member Functions | Public Attributes | Friends | List of all members
Vector3< T > Class Template Reference

Class for three dimensional vector. More...

`#include <vmath.h>`

Collaboration diagram for Vector3< T >:
[legend]

## 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...
T | 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...
T | length () const
| Get length of vector. More...
T | 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 | ( | T | nx,
|  | T | ny,
|  | T | nz
| ) |  |
| inline

Creates and sets to (x,y,z)

Parameters

  nx | initial x-coordinate value
  ny | initial y-coordinate value
  nz | initial z-coordinate value

## ◆ Vector3() [3/4]

template<class T>

Vector3< T >::Vector3 | ( | const Vector3< T > & | src | ) |
| inline

Copy constructor.

Parameters

  src | Source 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

  src | Source 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

  rhs | Right 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

  rhs | Right 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 | ( | T | fact,
|  | const Vector3< T > & | r
| ) |  | const
| inline

Linear interpolation of two vectors.

Parameters

  fact | Factor of interpolation. For translation from positon of this vector to vector r, values of factor goes from 0.0 to 1.0.
  r | Second 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

  rhs | Right 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

  rhs | Right hand side argument of binary operator.

## ◆ operator*() [2/2]

template<class T>

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

Multiplication operator.

Parameters

  rhs | Right 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

  rhs | Right hand side argument of binary operator.

## ◆ operator*=() [2/2]

template<class T>

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

Multiplication operator.

Parameters

  rhs | Right 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

  rhs | Right hand side argument of binary operator.

## ◆ operator+() [2/2]

template<class T>

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

Addition operator.

Parameters

  rhs | Right 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

  rhs | Right hand side argument of binary operator.

## ◆ operator+=() [2/2]

template<class T>

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

Addition operator.

Parameters

  rhs | Right 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

  rhs | Right hand side argument of binary operator.

## ◆ operator-() [2/3]

template<class T>

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

Subtraction operator.

Parameters

  rhs | Right 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

  rhs | Right hand side argument of binary operator.

## ◆ operator-=() [2/2]

template<class T>

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

Subtraction operator.

Parameters

  rhs | Right 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

  rhs | Right hand side argument of binary operator.

## ◆ operator/() [2/2]

template<class T>

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

Division operator.

Parameters

  rhs | Right 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

  rhs | Right hand side argument of binary operator.

## ◆ operator/=() [2/2]

template<class T>

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

Division operator.

Parameters

  rhs | Right 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

  rhs | Right 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

  rhs | Right hand side argument of binary operator.

## ◆ operator==()

template<class T>

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

Equality test operator.

Parameters

  rhs | Right 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

  n | Array 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

  n | Array 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 | ( | T | ax,
|  | T | ay,
|  | T | az
| ) |  |
| inline

Rotate vector around three axis.

Parameters

  ax | Angle (in degrees) to be rotated around X-axis.
  ay | Angle (in degrees) to be rotated around Y-axis.
  az | Angle (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

  lhs | Left hand side argument of operator (commonly ostream instance).
  rhs | Right 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:

- src/vmath.h