Matrix4< T > Class Template Reference

Class for matrix 4x4. More...

#include <vmath.h>

List of all members.

Public Member Functions

 Matrix4 ()
 Creates identity matrix.
 Matrix4 (const T *dt)
 Copy matrix values from array (these data must be in column major order!).
 Matrix4 (const Matrix4< T > &src)
 Copy constructor.
template<class FromT >
 Matrix4 (const Matrix4< FromT > &src)
 Copy casting constructor.
void identity ()
 Resets matrix to be identity matrix.
bool operator== (const Matrix4< T > &rhs) const
 Equality test operator.
bool operator!= (const Matrix4< T > &rhs) const
 Inequality test operator.
T & at (int x, int y)
 Get reference to element at postion (x,y).
const T & at (int x, int y) const
 Get constant reference to element at postion (x,y).
void setTranslation (const Vector3< T > &v)
 Sets translation part of matrix.
Vector3< T > getTranslation ()
void setRotation (const Matrix3< T > &m)
 Sets roation part (matrix 3x3) of matrix.
Matrix4< T > & operator= (const Matrix4< T > &rhs)
 Copy operator.
template<class FromT >
Matrix4< T > & operator= (const Matrix4< FromT > &rhs)
 Copy casting operator.
Matrix4< T > & operator= (const T *rhs)
 Copy operator.
Matrix4< T > operator+ (const Matrix4< T > &rhs) const
 Addition operator.
Matrix4< T > operator- (const Matrix4< T > &rhs) const
 Substraction operator.
Matrix4< T > operator+ (T rhs) const
 Addition operator.
Matrix4< T > operator- (T rhs) const
 Substraction operator.
Matrix4< T > operator* (T rhs) const
 Multiplication operator.
Matrix4< T > operator/ (T rhs) const
 Division operator.
Vector4< T > operator* (const Vector4< T > &rhs) const
 Multiplication operator.
Vector3< T > operator* (const Vector3< T > &rhs) const
 Multiplication operator.
Matrix4< T > operator* (Matrix4< T > rhs) const
 Multiplication operator.
det ()
 Computes determinant of matrix.
Matrix4< T > inverse ()
 Computes inverse matrix.
Matrix4< T > transpose ()
 Transpose matrix.
Matrix4< T > lerp (T fact, const Matrix4< T > &rhs) const
 Linear interpolation of two vectors.
 operator T * ()
 Conversion to pointer operator.
 operator const T * () const
 Conversion to pointer operator.

Static Public Member Functions

static Matrix4< T > createRotationAroundAxis (T a, T b, T c)
 Creates rotation matrix by rotation around axis.
static Matrix4< T > createTranslation (T x, T y, T z, T w=1)
 Creates translation matrix.

Public Attributes

data [16]
 Data stored in column major order.

Friends

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


Detailed Description

template<class T>
class Matrix4< T >

Class for matrix 4x4.

Note:
Data stored in this matrix are in column major order.

Constructor & Destructor Documentation

template<class T>
Matrix4< T >::Matrix4 (  )  [inline]

Creates identity matrix.

template<class T>
Matrix4< T >::Matrix4 ( const T *  dt  )  [inline]

Copy matrix values from array (these data must be in column major order!).

template<class T>
Matrix4< T >::Matrix4 ( const Matrix4< T > &  src  )  [inline]

Copy constructor.

Parameters:
src Data source for new created instance of Matrix4.

References Matrix4< T >::data.

template<class T>
template<class FromT >
Matrix4< T >::Matrix4 ( const Matrix4< FromT > &  src  )  [inline]

Copy casting constructor.

Parameters:
src Data source for new created instance of Matrix4.

References Matrix4< T >::data.


Member Function Documentation

template<class T>
const T& Matrix4< T >::at ( int  x,
int  y 
) const [inline]

Get constant reference to element at postion (x,y).

Parameters:
x Number of column (0..3)
y Number of row (0..3)

template<class T>
T& Matrix4< T >::at ( int  x,
int  y 
) [inline]

Get reference to element at postion (x,y).

Parameters:
x Number of column (0..3)
y Number of row (0..3)

Referenced by Matrix4< T >::createRotationAroundAxis(), Matrix4< T >::createTranslation(), Quaternion< T >::fromMatrix(), Matrix4< T >::inverse(), Matrix4< T >::operator*(), Quaternion< T >::transform(), and Matrix4< T >::transpose().

template<class T>
static Matrix4<T> Matrix4< T >::createRotationAroundAxis ( a,
b,
c 
) [inline, static]

Creates rotation matrix by rotation around axis.

Parameters:
a Angle (in radians) of rotation around axis X.
b Angle (in radians) of rotation around axis Y.
c Angle (in radians) of rotation around axis Z.

References Matrix4< T >::at().

template<class T>
static Matrix4<T> Matrix4< T >::createTranslation ( x,
y,
z,
w = 1 
) [inline, static]

Creates translation matrix.

Creates translation matrix.

Parameters:
x X-direction translation
y Y-direction translation
z Z-direction translation
w for W-coordinate translation (impictily set to 1)

References Matrix4< T >::at().

template<class T>
T Matrix4< T >::det (  )  [inline]

Computes determinant of matrix.

Returns:
Determinant of matrix
Note:
This function does 3 * 4 * 6 mul, 3 * 6 add.

template<class T>
Vector3<T> Matrix4< T >::getTranslation (  )  [inline]

template<class T>
void Matrix4< T >::identity (  )  [inline]

Resets matrix to be identity matrix.

template<class T>
Matrix4<T> Matrix4< T >::inverse (  )  [inline]

Computes inverse matrix.

Returns:
Inverse matrix of this matrix.
Note:
This is a little bit time consuming operation (16 * 6 * 3 mul, 16 * 5 add + det() + mul() functions)

References Matrix4< T >::at().

template<class T>
Matrix4<T> Matrix4< T >::lerp ( fact,
const Matrix4< T > &  rhs 
) const [inline]

Linear interpolation of two vectors.

Parameters:
fact Factor of interpolation. For translation from positon of this matrix (lhs) to matrix rhs, values of factor goes from 0.0 to 1.0.
rhs Second Matrix for interpolation
Note:
Hovewer 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>
Matrix4< T >::operator const T * (  )  const [inline]

Conversion to pointer operator.

Returns:
Constant Pointer to internaly stored (in managment of class Matrix4<T>) used for passing Matrix4<T> values to gl*[fd]v functions.

template<class T>
Matrix4< T >::operator T * (  )  [inline]

Conversion to pointer operator.

Returns:
Pointer to internaly stored (in managment of class Matrix4<T>) used for passing Matrix4<T> values to gl*[fd]v functions.

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

Inequality test operator.

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

template<class T>
Matrix4<T> Matrix4< T >::operator* ( Matrix4< T >  rhs  )  const [inline]

Multiplication operator.

Parameters:
rhs Right hand side argument of binary operator.

References Matrix4< T >::at().

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

Multiplication operator.

Parameters:
rhs Right hand side argument of binary operator.

References Vector3< T >::x, Vector3< T >::y, and Vector3< T >::z.

template<class T>
Vector4<T> Matrix4< T >::operator* ( const Vector4< T > &  rhs  )  const [inline]

Multiplication operator.

Parameters:
rhs Right hand side argument of binary operator.

References Vector4< T >::w, Vector4< T >::x, Vector4< T >::y, and Vector4< T >::z.

template<class T>
Matrix4<T> Matrix4< T >::operator* ( rhs  )  const [inline]

Multiplication operator.

Parameters:
rhs Right hand side argument of binary operator.

References Matrix4< T >::data.

template<class T>
Matrix4<T> Matrix4< T >::operator+ ( rhs  )  const [inline]

Addition operator.

Parameters:
rhs Right hand side argument of binary operator.

References Matrix4< T >::data.

template<class T>
Matrix4<T> Matrix4< T >::operator+ ( const Matrix4< T > &  rhs  )  const [inline]

Addition operator.

Parameters:
rhs Right hand side argument of binary operator.

References Matrix4< T >::data.

template<class T>
Matrix4<T> Matrix4< T >::operator- ( rhs  )  const [inline]

Substraction operator.

Parameters:
rhs Right hand side argument of binary operator.

References Matrix4< T >::data.

template<class T>
Matrix4<T> Matrix4< T >::operator- ( const Matrix4< T > &  rhs  )  const [inline]

Substraction operator.

Parameters:
rhs Right hand side argument of binary operator.

References Matrix4< T >::data.

template<class T>
Matrix4<T> Matrix4< T >::operator/ ( rhs  )  const [inline]

Division operator.

Parameters:
rhs Right hand side argument of binary operator.

References Matrix4< T >::data.

template<class T>
Matrix4<T>& Matrix4< T >::operator= ( const T *  rhs  )  [inline]

Copy operator.

Parameters:
rhs Right hand side argument of binary operator.

template<class T>
template<class FromT >
Matrix4<T>& Matrix4< T >::operator= ( const Matrix4< FromT > &  rhs  )  [inline]

Copy casting operator.

Parameters:
rhs Right hand side argument of binary operator.

References Matrix4< T >::data.

template<class T>
Matrix4<T>& Matrix4< T >::operator= ( const Matrix4< T > &  rhs  )  [inline]

Copy operator.

Parameters:
rhs Right hand side argument of binary operator.

References Matrix4< T >::data.

template<class T>
bool Matrix4< T >::operator== ( const Matrix4< 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 all elements of matrix | lws[i] - rhs[i] | < EPSILON, same for y-coordinate, z-coordinate, and w-coordinate.

References Matrix4< T >::data, and EPSILON.

template<class T>
void Matrix4< T >::setRotation ( const Matrix3< T > &  m  )  [inline]

Sets roation part (matrix 3x3) of matrix.

Parameters:
m Rotation part of matrix

References Matrix3< T >::at().

template<class T>
void Matrix4< T >::setTranslation ( const Vector3< T > &  v  )  [inline]

Sets translation part of matrix.

Parameters:
v Vector of translation to be set.

References Vector3< T >::x, Vector3< T >::y, and Vector3< T >::z.

template<class T>
Matrix4<T> Matrix4< T >::transpose (  )  [inline]

Transpose matrix.

References Matrix4< T >::at().


Friends And Related Function Documentation

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

template<class T>
T Matrix4< T >::data[16]


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

Generated on Mon Nov 9 21:47:51 2009 for vmath by  doxygen 1.5.8