Visualization Library

A lightweight C++ OpenGL middleware for 2D/3D graphics
[Home] [Tutorials] [All Classes] [Grouped Classes]

vl::Matrix4< scalar_type > Class Template Reference

The Matrix4 class is a template class that implements a generic 4x4 matrix, see also vl::dmat4, vl::fmat4, vl::umat4, vl::imat4. More...

#include <Matrix4.hpp>

List of all members.

Public Member Functions

template<typename T >
 Matrix4 (const T &m)
 Matrix4 ()
 Matrix4 (scalar_type n)
 Matrix4 (scalar_type e00, scalar_type e01, scalar_type e02, scalar_type e03, scalar_type e10, scalar_type e11, scalar_type e12, scalar_type e13, scalar_type e20, scalar_type e21, scalar_type e22, scalar_type e23, scalar_type e30, scalar_type e31, scalar_type e32, scalar_type e33)
const scalar_type & e (unsigned i, unsigned j) const
scalar_type & e (unsigned i, unsigned j)
const Vector4< scalar_type > & operator[] (unsigned int i) const
Vector4< scalar_type > & operator[] (unsigned int i)
Vector3< scalar_type > getX () const
Vector3< scalar_type > getY () const
Vector3< scalar_type > getZ () const
Vector3< scalar_type > getT () const
Matrix4setX (const Vector3< scalar_type > &v)
Matrix4setY (const Vector3< scalar_type > &v)
Matrix4setZ (const Vector3< scalar_type > &v)
Matrix4setT (const Vector3< scalar_type > &v)
bool operator== (const Matrix4 &m) const
bool operator!= (const Matrix4 &m) const
Matrix4operator= (const Matrix4 &m)
Matrix4 operator+ (const Matrix4 &m) const
Matrix4operator+= (const Matrix4 &m)
Matrix4 operator- (const Matrix4 &m) const
Matrix4operator-= (const Matrix4 &m)
Matrix4operator*= (const Matrix4 &m)
Matrix4 operator- () const
Matrix4 operator+ (scalar_type d) const
Matrix4operator+= (scalar_type d)
Matrix4 operator- (scalar_type d) const
Matrix4operator-= (scalar_type d)
Matrix4 operator* (scalar_type d) const
Matrix4operator*= (scalar_type d)
Matrix4 operator/ (scalar_type d) const
Matrix4operator/= (scalar_type d)
bool isIdentity () const
Matrix4 as3x3 () const
Matrix3< scalar_type > get3x3 () const
void set3x3 (const Matrix3< scalar_type > &m)
 This writes only on the upper 3x3 part of the matrix without touching the last row and column.
scalar_type * ptr ()
const scalar_type * ptr () const
Matrix4transpose ()
bool isNull () const
void setIdentity ()
Matrix4 inverse (bool *invertible=NULL) const
Matrix4invert (bool *invertible=NULL)
const scalar_type & e (int i, int j) const
scalar_type & e (int i, int j)
void getAsLookAt (Vector3< scalar_type > &eye, Vector3< scalar_type > &look, Vector3< scalar_type > &up, Vector3< scalar_type > &right) const
Matrix4rotate (scalar_type degrees, const Vector3< scalar_type > &v)
Matrix4rotate (scalar_type degrees, scalar_type x, scalar_type y, scalar_type z)
Matrix4rotate (scalar_type degrees1, const Vector3< scalar_type > &v1, scalar_type degrees2, const Vector3< scalar_type > &v2)
void getYXRotationAngles (scalar_type &degrees_y, scalar_type &degrees_x) const
 If this matrix can be represented as RY(degrees_y) * RX(degrees_x), where RX and RY are rotation matrices around the X and Y axis respectively, this function returns the rotation angles degrees_y and degrees_x.
Matrix4rotate (scalar_type degrees1, const Vector3< scalar_type > &v1, scalar_type degrees2, const Vector3< scalar_type > &v2, scalar_type degrees3, const Vector3< scalar_type > &v3)
Matrix4rotateXYZ (scalar_type degX, scalar_type degY, scalar_type degZ)
Matrix4rotateZYX (scalar_type degZ, scalar_type degY, scalar_type degX)
Matrix4rotate (const Vector4< scalar_type > &from, const Vector4< scalar_type > &to)
Matrix4rotate (const Vector3< scalar_type > &from, const Vector3< scalar_type > &to)
Matrix4translate (scalar_type x, scalar_type y, scalar_type z)
Matrix4translate (const Vector3< scalar_type > &v)
Matrix4scale (scalar_type x, scalar_type y, scalar_type z)

Static Public Member Functions

static Matrix4 perspective (scalar_type fovy, scalar_type aspect_ratio, scalar_type znear, scalar_type zfar)
static Matrix4 frustum (scalar_type pleft, scalar_type pright, scalar_type pbottom, scalar_type ptop, scalar_type pnear, scalar_type pfar)
static Matrix4 ortho (scalar_type pleft, scalar_type pright, scalar_type pbottom, scalar_type ptop, scalar_type pnear, scalar_type pfar)
static Matrix4 ortho2D (scalar_type pleft, scalar_type pright, scalar_type pbottom, scalar_type ptop)
static Matrix4 lookAt (const Vector3< scalar_type > &eye, const Vector3< scalar_type > &look, const Vector3< scalar_type > &up)
static Matrix4 rotation (scalar_type degrees, scalar_type x, scalar_type y, scalar_type z)
static Matrix4 rotation (scalar_type degrees, const Vector3< scalar_type > &v)
static Matrix4 rotation (scalar_type degrees1, const Vector3< scalar_type > &v1, scalar_type degrees2, const Vector3< scalar_type > &v2)
static Matrix4 rotation (scalar_type degrees1, const Vector3< scalar_type > &v1, scalar_type degrees2, const Vector3< scalar_type > &v2, scalar_type degrees3, const Vector3< scalar_type > &v3)
static Matrix4 rotationXYZ (scalar_type degX, scalar_type degY, scalar_type degZ)
static Matrix4 rotationZYX (scalar_type degZ, scalar_type degY, scalar_type degX)
static Matrix4 rotation (const Vector4< scalar_type > &from, const Vector4< scalar_type > &to)
static Matrix4 rotation (const Vector3< scalar_type > &from, const Vector3< scalar_type > &to)
static Matrix4 translation (const Vector3< scalar_type > &v)
static Matrix4 translation (scalar_type x, scalar_type y, scalar_type z)
static Matrix4 scaling (const Vector3< scalar_type > &v)
static Matrix4 scaling (scalar_type x, scalar_type y, scalar_type z)

Protected Attributes

Vector4< scalar_type > mVec [4]


Detailed Description

template<typename scalar_type>
class vl::Matrix4< scalar_type >

The Matrix4 class is a template class that implements a generic 4x4 matrix, see also vl::dmat4, vl::fmat4, vl::umat4, vl::imat4.

See also:
Vector4, Vector3, Vector2, Matrix3, Matrix2

Constructor & Destructor Documentation

template<typename scalar_type>
template<typename T >
vl::Matrix4< scalar_type >::Matrix4 ( const T &  m  )  [inline, explicit]

template<typename scalar_type>
vl::Matrix4< scalar_type >::Matrix4 (  )  [inline]

template<typename scalar_type>
vl::Matrix4< scalar_type >::Matrix4 ( scalar_type  n  )  [inline]

template<typename scalar_type>
vl::Matrix4< scalar_type >::Matrix4 ( scalar_type  e00,
scalar_type  e01,
scalar_type  e02,
scalar_type  e03,
scalar_type  e10,
scalar_type  e11,
scalar_type  e12,
scalar_type  e13,
scalar_type  e20,
scalar_type  e21,
scalar_type  e22,
scalar_type  e23,
scalar_type  e30,
scalar_type  e31,
scalar_type  e32,
scalar_type  e33 
) [inline, explicit]


Member Function Documentation

template<typename scalar_type>
const scalar_type& vl::Matrix4< scalar_type >::e ( unsigned  i,
unsigned  j 
) const [inline]

template<typename scalar_type>
scalar_type& vl::Matrix4< scalar_type >::e ( unsigned  i,
unsigned  j 
) [inline]

template<typename scalar_type>
const Vector4<scalar_type>& vl::Matrix4< scalar_type >::operator[] ( unsigned int  i  )  const [inline]

template<typename scalar_type>
Vector4<scalar_type>& vl::Matrix4< scalar_type >::operator[] ( unsigned int  i  )  [inline]

template<typename scalar_type>
Vector3<scalar_type> vl::Matrix4< scalar_type >::getX (  )  const [inline]

template<typename scalar_type>
Vector3<scalar_type> vl::Matrix4< scalar_type >::getY (  )  const [inline]

template<typename scalar_type>
Vector3<scalar_type> vl::Matrix4< scalar_type >::getZ (  )  const [inline]

template<typename scalar_type>
Vector3<scalar_type> vl::Matrix4< scalar_type >::getT (  )  const [inline]

template<typename scalar_type>
Matrix4& vl::Matrix4< scalar_type >::setX ( const Vector3< scalar_type > &  v  )  [inline]

template<typename scalar_type>
Matrix4& vl::Matrix4< scalar_type >::setY ( const Vector3< scalar_type > &  v  )  [inline]

template<typename scalar_type>
Matrix4& vl::Matrix4< scalar_type >::setZ ( const Vector3< scalar_type > &  v  )  [inline]

template<typename scalar_type>
Matrix4& vl::Matrix4< scalar_type >::setT ( const Vector3< scalar_type > &  v  )  [inline]

template<typename scalar_type>
bool vl::Matrix4< scalar_type >::operator== ( const Matrix4< scalar_type > &  m  )  const [inline]

template<typename scalar_type>
bool vl::Matrix4< scalar_type >::operator!= ( const Matrix4< scalar_type > &  m  )  const [inline]

template<typename scalar_type>
Matrix4& vl::Matrix4< scalar_type >::operator= ( const Matrix4< scalar_type > &  m  )  [inline]

template<typename scalar_type>
Matrix4 vl::Matrix4< scalar_type >::operator+ ( const Matrix4< scalar_type > &  m  )  const [inline]

template<typename scalar_type>
Matrix4& vl::Matrix4< scalar_type >::operator+= ( const Matrix4< scalar_type > &  m  )  [inline]

template<typename scalar_type>
Matrix4 vl::Matrix4< scalar_type >::operator- ( const Matrix4< scalar_type > &  m  )  const [inline]

template<typename scalar_type>
Matrix4& vl::Matrix4< scalar_type >::operator-= ( const Matrix4< scalar_type > &  m  )  [inline]

template<typename scalar_type>
Matrix4& vl::Matrix4< scalar_type >::operator*= ( const Matrix4< scalar_type > &  m  )  [inline]

template<typename scalar_type>
Matrix4 vl::Matrix4< scalar_type >::operator- (  )  const [inline]

template<typename scalar_type>
Matrix4 vl::Matrix4< scalar_type >::operator+ ( scalar_type  d  )  const [inline]

template<typename scalar_type>
Matrix4& vl::Matrix4< scalar_type >::operator+= ( scalar_type  d  )  [inline]

template<typename scalar_type>
Matrix4 vl::Matrix4< scalar_type >::operator- ( scalar_type  d  )  const [inline]

template<typename scalar_type>
Matrix4& vl::Matrix4< scalar_type >::operator-= ( scalar_type  d  )  [inline]

template<typename scalar_type>
Matrix4 vl::Matrix4< scalar_type >::operator* ( scalar_type  d  )  const [inline]

template<typename scalar_type>
Matrix4& vl::Matrix4< scalar_type >::operator*= ( scalar_type  d  )  [inline]

template<typename scalar_type>
Matrix4 vl::Matrix4< scalar_type >::operator/ ( scalar_type  d  )  const [inline]

template<typename scalar_type>
Matrix4& vl::Matrix4< scalar_type >::operator/= ( scalar_type  d  )  [inline]

template<typename scalar_type>
bool vl::Matrix4< scalar_type >::isIdentity (  )  const [inline]

template<typename scalar_type>
Matrix4 vl::Matrix4< scalar_type >::as3x3 (  )  const [inline]

template<typename scalar_type>
Matrix3<scalar_type> vl::Matrix4< scalar_type >::get3x3 (  )  const [inline]

template<typename scalar_type>
void vl::Matrix4< scalar_type >::set3x3 ( const Matrix3< scalar_type > &  m  )  [inline]

This writes only on the upper 3x3 part of the matrix without touching the last row and column.

template<typename scalar_type>
scalar_type* vl::Matrix4< scalar_type >::ptr (  )  [inline]

template<typename scalar_type>
const scalar_type* vl::Matrix4< scalar_type >::ptr (  )  const [inline]

template<typename scalar_type>
Matrix4& vl::Matrix4< scalar_type >::transpose (  )  [inline]

template<typename scalar_type>
bool vl::Matrix4< scalar_type >::isNull (  )  const [inline]

template<typename scalar_type>
void vl::Matrix4< scalar_type >::setIdentity (  )  [inline]

template<typename scalar_type >
Matrix4< scalar_type > vl::Matrix4< scalar_type >::inverse ( bool *  invertible = NULL  )  const [inline]

template<typename scalar_type>
Matrix4& vl::Matrix4< scalar_type >::invert ( bool *  invertible = NULL  )  [inline]

template<typename scalar_type>
const scalar_type& vl::Matrix4< scalar_type >::e ( int  i,
int  j 
) const [inline]

template<typename scalar_type>
scalar_type& vl::Matrix4< scalar_type >::e ( int  i,
int  j 
) [inline]

template<typename scalar_type>
Matrix4< scalar_type > vl::Matrix4< scalar_type >::perspective ( scalar_type  fovy,
scalar_type  aspect_ratio,
scalar_type  znear,
scalar_type  zfar 
) [inline, static]

template<typename scalar_type>
Matrix4< scalar_type > vl::Matrix4< scalar_type >::frustum ( scalar_type  pleft,
scalar_type  pright,
scalar_type  pbottom,
scalar_type  ptop,
scalar_type  pnear,
scalar_type  pfar 
) [inline, static]

template<typename scalar_type>
Matrix4< scalar_type > vl::Matrix4< scalar_type >::ortho ( scalar_type  pleft,
scalar_type  pright,
scalar_type  pbottom,
scalar_type  ptop,
scalar_type  pnear,
scalar_type  pfar 
) [inline, static]

template<typename scalar_type>
Matrix4< scalar_type > vl::Matrix4< scalar_type >::ortho2D ( scalar_type  pleft,
scalar_type  pright,
scalar_type  pbottom,
scalar_type  ptop 
) [inline, static]

template<typename scalar_type>
Matrix4< scalar_type > vl::Matrix4< scalar_type >::lookAt ( const Vector3< scalar_type > &  eye,
const Vector3< scalar_type > &  look,
const Vector3< scalar_type > &  up 
) [inline, static]

template<typename scalar_type>
void vl::Matrix4< scalar_type >::getAsLookAt ( Vector3< scalar_type > &  eye,
Vector3< scalar_type > &  look,
Vector3< scalar_type > &  up,
Vector3< scalar_type > &  right 
) const [inline]

template<typename scalar_type>
Matrix4< scalar_type > vl::Matrix4< scalar_type >::rotation ( scalar_type  degrees,
scalar_type  x,
scalar_type  y,
scalar_type  z 
) [inline, static]

template<typename scalar_type>
static Matrix4 vl::Matrix4< scalar_type >::rotation ( scalar_type  degrees,
const Vector3< scalar_type > &  v 
) [inline, static]

template<typename scalar_type>
static Matrix4 vl::Matrix4< scalar_type >::rotation ( scalar_type  degrees1,
const Vector3< scalar_type > &  v1,
scalar_type  degrees2,
const Vector3< scalar_type > &  v2 
) [inline, static]

template<typename scalar_type>
static Matrix4 vl::Matrix4< scalar_type >::rotation ( scalar_type  degrees1,
const Vector3< scalar_type > &  v1,
scalar_type  degrees2,
const Vector3< scalar_type > &  v2,
scalar_type  degrees3,
const Vector3< scalar_type > &  v3 
) [inline, static]

template<typename scalar_type>
Matrix4& vl::Matrix4< scalar_type >::rotate ( scalar_type  degrees,
const Vector3< scalar_type > &  v 
) [inline]

template<typename scalar_type>
Matrix4& vl::Matrix4< scalar_type >::rotate ( scalar_type  degrees,
scalar_type  x,
scalar_type  y,
scalar_type  z 
) [inline]

template<typename scalar_type>
Matrix4& vl::Matrix4< scalar_type >::rotate ( scalar_type  degrees1,
const Vector3< scalar_type > &  v1,
scalar_type  degrees2,
const Vector3< scalar_type > &  v2 
) [inline]

template<typename scalar_type>
void vl::Matrix4< scalar_type >::getYXRotationAngles ( scalar_type &  degrees_y,
scalar_type &  degrees_x 
) const [inline]

If this matrix can be represented as RY(degrees_y) * RX(degrees_x), where RX and RY are rotation matrices around the X and Y axis respectively, this function returns the rotation angles degrees_y and degrees_x.

Note:
This function can only retrieve angles that satisfy the following conditions:
  • -180 <= degrees_y <= 180
  • -180 <= degrees_x <= 180 and degrees_x != 90

template<typename scalar_type>
Matrix4& vl::Matrix4< scalar_type >::rotate ( scalar_type  degrees1,
const Vector3< scalar_type > &  v1,
scalar_type  degrees2,
const Vector3< scalar_type > &  v2,
scalar_type  degrees3,
const Vector3< scalar_type > &  v3 
) [inline]

template<typename scalar_type>
static Matrix4 vl::Matrix4< scalar_type >::rotationXYZ ( scalar_type  degX,
scalar_type  degY,
scalar_type  degZ 
) [inline, static]

template<typename scalar_type>
Matrix4& vl::Matrix4< scalar_type >::rotateXYZ ( scalar_type  degX,
scalar_type  degY,
scalar_type  degZ 
) [inline]

template<typename scalar_type>
static Matrix4 vl::Matrix4< scalar_type >::rotationZYX ( scalar_type  degZ,
scalar_type  degY,
scalar_type  degX 
) [inline, static]

template<typename scalar_type>
Matrix4& vl::Matrix4< scalar_type >::rotateZYX ( scalar_type  degZ,
scalar_type  degY,
scalar_type  degX 
) [inline]

template<typename scalar_type>
static Matrix4 vl::Matrix4< scalar_type >::rotation ( const Vector4< scalar_type > &  from,
const Vector4< scalar_type > &  to 
) [inline, static]

template<typename scalar_type>
Matrix4< scalar_type > vl::Matrix4< scalar_type >::rotation ( const Vector3< scalar_type > &  from,
const Vector3< scalar_type > &  to 
) [inline, static]

template<typename scalar_type>
Matrix4& vl::Matrix4< scalar_type >::rotate ( const Vector4< scalar_type > &  from,
const Vector4< scalar_type > &  to 
) [inline]

template<typename scalar_type>
Matrix4& vl::Matrix4< scalar_type >::rotate ( const Vector3< scalar_type > &  from,
const Vector3< scalar_type > &  to 
) [inline]

template<typename scalar_type>
static Matrix4 vl::Matrix4< scalar_type >::translation ( const Vector3< scalar_type > &  v  )  [inline, static]

template<typename scalar_type>
static Matrix4 vl::Matrix4< scalar_type >::translation ( scalar_type  x,
scalar_type  y,
scalar_type  z 
) [inline, static]

template<typename scalar_type>
Matrix4& vl::Matrix4< scalar_type >::translate ( scalar_type  x,
scalar_type  y,
scalar_type  z 
) [inline]

template<typename scalar_type>
Matrix4& vl::Matrix4< scalar_type >::translate ( const Vector3< scalar_type > &  v  )  [inline]

template<typename scalar_type>
static Matrix4 vl::Matrix4< scalar_type >::scaling ( const Vector3< scalar_type > &  v  )  [inline, static]

template<typename scalar_type>
static Matrix4 vl::Matrix4< scalar_type >::scaling ( scalar_type  x,
scalar_type  y,
scalar_type  z 
) [inline, static]

template<typename scalar_type>
Matrix4& vl::Matrix4< scalar_type >::scale ( scalar_type  x,
scalar_type  y,
scalar_type  z 
) [inline]


Member Data Documentation

template<typename scalar_type>
Vector4<scalar_type> vl::Matrix4< scalar_type >::mVec[4] [protected]


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

Visualization Library v2010.06 Reference Documentation
Copyright 2005-2009 Michele Bosi. All rights reserved.
Updated on Tue Jun 1 00:57:18 2010.
Permission is granted to use this page to write and publish articles regarding Visualization Library.