BALL::TMatrix4x4< T > Class Template Reference

#include <BALL/MATHS/matrix44.h>

List of all members.

Public Member Functions

Constructors and Destructors
 TMatrix4x4 ()
 TMatrix4x4 (const T *ptr) throw (Exception::NullPointer)
 TMatrix4x4 (const T ptr[4][4]) throw (Exception::NullPointer)
 TMatrix4x4 (const TMatrix4x4 &m)
 TMatrix4x4 (const TVector4< T > &col1, const TVector4< T > &col2, const TVector4< T > &col3, const TVector4< T > &col4)
 TMatrix4x4 (const T &m11, const T &m12, const T &m13, const T &m14, const T &m21, const T &m22, const T &m23, const T &m24, const T &m31, const T &m32, const T &m33, const T &m34, const T &m41, const T &m42, const T &m43, const T &m44)
virtual ~TMatrix4x4 ()
virtual void clear ()
Assignment
void set (const T *ptr) throw (Exception::NullPointer)
void set (const T ptr[4][4]) throw (Exception::NullPointer)
void set (const TMatrix4x4 &m)
void set (const TVector4< T > &col1, const TVector4< T > &col2, const TVector4< T > &col3, const TVector4< T > &col4)
void set (const T &m11, const T &m12, const T &m13, const T &m14, const T &m21, const T &m22, const T &m23, const T &m24, const T &m31, const T &m32, const T &m33, const T &m34, const T &m41, const T &m42, const T &m43, const T &m44)
TMatrix4x4operator= (const T *ptr) throw (Exception::NullPointer)
TMatrix4x4operator= (const T ptr[4][4]) throw (Exception::NullPointer)
TMatrix4x4operator= (const TMatrix4x4 &m)
void get (T *ptr) const throw (Exception::NullPointer)
void get (T ptr[4][4]) const throw (Exception::NullPointer)
void get (TMatrix4x4 &m) const
void get (TVector4< T > &col1, TVector4< T > &col2, TVector4< T > &col3, TVector4< T > &col4) const
void get (T &m11, T &m12, T &m13, T &m14, T &m21, T &m22, T &m23, T &m24, T &m31, T &m32, T &m33, T &m34, T &m41, T &m42, T &m43, T &m44) const
void swap (TMatrix4x4 &m)
Predicates
bool operator== (const TMatrix4x4 &m) const
bool operator!= (const TMatrix4x4 &m) const
bool isIdentity () const
bool isRegular () const
bool isSingular () const
bool isSymmetric () const
bool isLowerTriangular () const
bool isUpperTriangular () const
bool isDiagonal () const
Debugging and Diagnostics
bool isValid () const
void dump (std::ostream &s=std::cout, Size depth=0) const

Public Attributes

Attributes
m11
 1st cell in the 1st row
m12
 2nd cell in the 1st row
m13
 3rd cell in the 1st row
m14
 4th cell in the 1st row
m21
 1st cell in the 2nd row
m22
 2nd cell in the 2nd row
m23
 3rd cell in the 2nd row
m24
 4th cell in the 2nd row
m31
 1st cell in the 3rd row
m32
 2nd cell in the 3rd row
m33
 3rd cell in the 3rd row
m34
 4th cell in the 3rd row
m41
 1st cell in the 4th row
m42
 2nd cell in the 4th row
m43
 3rd cell in the 4th row
m44
 4th cell in the 4th row

Private Member Functions

void initializeComponentPointers_ ()

Private Attributes

T * comp_ptr_ [16]

Accessors

getTrace () const
void setIdentity ()
void set (const T &t=(T) 1)
void transpose ()
TVector4< T > getRow (Position row) const throw (Exception::IndexOverflow)
TVector4< T > getColumn (Position col) const throw (Exception::IndexOverflow)
void setRow (Position row, const TVector4< T > &row_value) throw (Exception::IndexOverflow)
void setColumn (Position col, const TVector4< T > &col_value) throw (Exception::IndexOverflow)
bool isEqual (const TMatrix4x4 &m) const
TVector4< T > getDiagonal () const
T & operator() (Position row, Position col) throw (Exception::IndexOverflow)
const T & operator() (Position row, Position col) const throw (Exception::IndexOverflow)
const T & operator[] (Position position) const throw (Exception::IndexOverflow)
T & operator[] (Position position) throw (Exception::IndexOverflow)
TMatrix4x4 operator+ () const
TMatrix4x4 operator- () const
TMatrix4x4 operator+ (const TMatrix4x4 &m) const
TMatrix4x4operator+= (const TMatrix4x4 &m)
TMatrix4x4 operator- (const TMatrix4x4 &m) const
TMatrix4x4operator-= (const TMatrix4x4 &m)
TMatrix4x4 operator* (const T &scalar) const
TMatrix4x4operator*= (const T &scalar)
TMatrix4x4 operator/ (const T &scalar) const throw (Exception::DivisionByZero)
TMatrix4x4operator/= (const T &scalar) throw (Exception::DivisionByZero)
TMatrix4x4 operator* (const TMatrix4x4 &m) const
TMatrix4x4operator*= (const TMatrix4x4 &m)
TVector4< T > operator* (const TVector4< T > &vector) const
bool invert (TMatrix4x4 &inverse) const
bool invert ()
getDeterminant () const
void translate (const T &x, const T &y, const T &z)
void translate (const TVector3< T > &v)
void setTranslation (const T &x, const T &y, const T &z)
void setTranslation (const TVector3< T > &v)
void scale (const T &x_scale, const T &y_scale, const T &z_scale)
void scale (const T &scale)
void scale (const TVector3< T > &v)
void setScale (const T &x_scale, const T &y_scale, const T &z_scale)
void setScale (const T &scale)
void setScale (const TVector3< T > &v)
void rotateX (const TAngle< T > &phi)
void setRotationX (const TAngle< T > &phi)
void rotateY (const TAngle< T > &phi)
void setRotationY (const TAngle< T > &phi)
void rotateZ (const TAngle< T > &phi)
void setRotationZ (const TAngle< T > &phi)
void rotate (const TAngle< T > &phi, const T &axis_x, const T &axis_y, const T &axis_z)
void rotate (const TAngle< T > &phi, const TVector3< T > &axis)
void rotate (const TAngle< T > &phi, const TVector4< T > &axis)
void setRotation (const TAngle< T > &phi, const T &axis_x, const T &axis_y, const T &axis_z)
void setRotation (const TAngle< T > &phi, const TVector3< T > &axis)
void setRotation (const TAngle< T > &phi, const TVector4< T > &axis)
static const TMatrix4x4getZero ()
static const TMatrix4x4getIdentity ()

Detailed Description

template<typename T>
class BALL::TMatrix4x4< T >

Generic 4x4 Matrix Class.


Constructor & Destructor Documentation

template<typename T >
BALL::TMatrix4x4< T >::TMatrix4x4 ( )

Default constructor. This method creates a new TMatrix4x4 object. The components are initialized to 0.

References BALL::TMatrix4x4< T >::initializeComponentPointers_().

template<typename T>
BALL::TMatrix4x4< T >::TMatrix4x4 ( const T *  ptr) throw (Exception::NullPointer)

Array constructor. This constructor creates a TMatrix4x4 object from the first sixteen elements pointed to by ptr.

Parameters:
ptrthe array to construct from
Exceptions:
NullPointerif ptr == 0
template<typename T>
BALL::TMatrix4x4< T >::TMatrix4x4 ( const T  ptr[4][4]) throw (Exception::NullPointer)

Array constructor. This constructor creates a TMatrix4x4 object from the sixteen elements in the array assigned by ptr.

Parameters:
ptrthe array to construct from
Exceptions:
NullPointerif ptr == 0
template<typename T>
BALL::TMatrix4x4< T >::TMatrix4x4 ( const TMatrix4x4< T > &  m)

Copy constructor. Create a new TMatrix4x4 object from another.

Parameters:
TMatrix4x4the TMatrix4x4 object to be copied
boolignored (just for interface consistency)

References BALL::TMatrix4x4< T >::initializeComponentPointers_().

template<typename T>
BALL::TMatrix4x4< T >::TMatrix4x4 ( const TVector4< T > &  col1,
const TVector4< T > &  col2,
const TVector4< T > &  col3,
const TVector4< T > &  col4 
)

Detailed constructor. Create a new TMatrix4x4 object from four TVector4.

Parameters:
col1assigned to the first column
col2assigned to the second column
col3assigned to the third column
col4assigned to the fourth column
template<typename T>
BALL::TMatrix4x4< T >::TMatrix4x4 ( const T &  m11,
const T &  m12,
const T &  m13,
const T &  m14,
const T &  m21,
const T &  m22,
const T &  m23,
const T &  m24,
const T &  m31,
const T &  m32,
const T &  m33,
const T &  m34,
const T &  m41,
const T &  m42,
const T &  m43,
const T &  m44 
)

Detailed constructor. Create a new TMatrix4x4 object from sixteen T values.

Parameters:
m11- m44 assigned to the components
template<typename T>
virtual BALL::TMatrix4x4< T >::~TMatrix4x4 ( ) [inline, virtual]

Destructor. Destructs the TMatrix4x4 object. As there are no dynamic data structures, nothing happens.


Member Function Documentation

template<typename T >
void BALL::TMatrix4x4< T >::clear ( ) [virtual]

Clear method. The values are set to 0.

template<typename T >
void BALL::TMatrix4x4< T >::dump ( std::ostream &  s = std::cout,
Size  depth = 0 
) const

Internal state dump. Dump the current internal state of {*this} to the output ostream s with dumping depth depth .

Parameters:
s- output stream where to output the internal state of {*this}
depth- the dumping depth

References BALL_DUMP_DEPTH, BALL_DUMP_HEADER, BALL_DUMP_STREAM_PREFIX, and BALL_DUMP_STREAM_SUFFIX.

template<typename T>
void BALL::TMatrix4x4< T >::get ( T *  ptr) const throw (Exception::NullPointer)

Assign to an array. Assigns the components to a pointer of an array of sixteen values of type T.

Exceptions:
NullPointerif ptr == 0
Parameters:
ptrthe pointer to assign to
template<typename T>
void BALL::TMatrix4x4< T >::get ( ptr[4][4]) const throw (Exception::NullPointer)

Assign to an array. Assigns the components to an array of sixteen values of type T.

Exceptions:
NullPointerif ptr == 0
Parameters:
ptrthe array to assign to
template<typename T>
void BALL::TMatrix4x4< T >::get ( TMatrix4x4< T > &  m) const

Assign to another instance. Assigns the components to another TMatrix4x4.

Parameters:
TMatrix4x4the TMatrix4x4 to be assigned to

References BALL::TMatrix4x4< T >::set().

template<typename T>
void BALL::TMatrix4x4< T >::get ( TVector4< T > &  col1,
TVector4< T > &  col2,
TVector4< T > &  col3,
TVector4< T > &  col4 
) const

Assign to four variables of type TVector4 .

Parameters:
col1the TVector4 to obtain the values of the first column
col2the TVector4 to obtain the values of the second column
col3the TVector4 to obtain the values of the third column
col4the TVector4 to obtain the values of the fourth column

References BALL::TVector4< T >::h, BALL::TVector4< T >::x, BALL::TVector4< T >::y, and BALL::TVector4< T >::z.

template<typename T>
void BALL::TMatrix4x4< T >::get ( T &  m11,
T &  m12,
T &  m13,
T &  m14,
T &  m21,
T &  m22,
T &  m23,
T &  m24,
T &  m31,
T &  m32,
T &  m33,
T &  m34,
T &  m41,
T &  m42,
T &  m43,
T &  m44 
) const

Assign to sixteen variables of type T.

Parameters:
m11- m44 the variables to assign to
template<typename T >
TVector4< T > BALL::TMatrix4x4< T >::getColumn ( Position  col) const throw (Exception::IndexOverflow)

Get a column of the matrix.

Parameters:
colthe number of the column (0-3)
Exceptions:
IndexOverflowif col > 3
Returns:
TVector4 the column
template<typename T >
T BALL::TMatrix4x4< T >::getDeterminant ( ) const

Compute the determinant.

Returns:
T the determinant.

References BALL::Constants::k.

template<typename T >
TVector4< T > BALL::TMatrix4x4< T >::getDiagonal ( ) const

Get the diagonal of the matrix.

Returns:
TVector4 the diagonal
template<typename T >
BALL_INLINE const TMatrix4x4< T > & BALL::TMatrix4x4< T >::getIdentity ( ) [static]

Create an identity matrix. A new matrix object is created and all elements but the diagonal are set to zero. The diagonal elements are set to 1.

template<typename T >
TVector4< T > BALL::TMatrix4x4< T >::getRow ( Position  row) const throw (Exception::IndexOverflow)

Get a row of the matrix.

Parameters:
rowthe number of the row (0-3)
Exceptions:
IndexOverflowif row > 3
Returns:
TVector4 the row
template<typename T >
BALL_INLINE T BALL::TMatrix4x4< T >::getTrace ( ) const

Compute the trace. Get the sum of the diagonal elements (m11 + m22 + m33 + m44).

Returns:
T the trace
template<typename T >
BALL_INLINE const TMatrix4x4< T > & BALL::TMatrix4x4< T >::getZero ( ) [static]

Create a zero matrix. A new matrix object is created and all elements set to 0.

template<typename T>
void BALL::TMatrix4x4< T >::initializeComponentPointers_ ( ) [inline, private]
template<typename T >
bool BALL::TMatrix4x4< T >::invert ( TMatrix4x4< T > &  inverse) const

Invert the matrix. Tests if the matrix can be inverted. If possible, the result will be inverted and the result returned in inverse .

Parameters:
inverseis assigned the inverse matrix
Returns:
bool true if the inverse matrix could be calculated, otherwise false.

First, we compute a QR decomposition, then we use it to solve the system A*A^-1 = I <=> R * A^-1 = Q^t, where R is upper triangular.

This is based on the Householder transform algorithm given in the Numerical Recipes.

References BALL::Constants::c, BALL::Constants::k, BALL::TMatrix4x4< T >::m11, BALL::TMatrix4x4< T >::m12, BALL::TMatrix4x4< T >::m13, BALL::TMatrix4x4< T >::m14, BALL::TMatrix4x4< T >::m21, BALL::TMatrix4x4< T >::m22, BALL::TMatrix4x4< T >::m23, BALL::TMatrix4x4< T >::m24, BALL::TMatrix4x4< T >::m31, BALL::TMatrix4x4< T >::m32, BALL::TMatrix4x4< T >::m33, BALL::TMatrix4x4< T >::m34, BALL::TMatrix4x4< T >::m41, BALL::TMatrix4x4< T >::m42, BALL::TMatrix4x4< T >::m43, BALL::TMatrix4x4< T >::m44, and BALL::Maths::max().

template<typename T >
BALL_INLINE bool BALL::TMatrix4x4< T >::invert ( )

Invert the matrix. Tests if the matrix can be inverted. If this is possible, the result is stored in the matrix.

Returns:
bool true if the inverse matrix could be calculated, otherwise false.
template<typename T >
BALL_INLINE bool BALL::TMatrix4x4< T >::isDiagonal ( ) const

Test whether all cells but the diagonal are zero.

Returns:
bool, true or false
template<typename T >
bool BALL::TMatrix4x4< T >::isEqual ( const TMatrix4x4< T > &  m) const

Test whether two matrices are equal. Two matrices are considered equal, if Maths::isEqual returns true for each pair of corresponding elements.

Parameters:
mthe matrix to compare with
Returns:
bool, true if all components are equal, false otherwise

References BALL::TMatrix4x4< T >::comp_ptr_, and BALL::Maths::isEqual().

template<typename T >
bool BALL::TMatrix4x4< T >::isIdentity ( ) const

Test whether this matrix is an identity matrix. (I.e. m11, m22, m33, m44 = 1 and the other cells have the value 0)

Returns:
bool, true if identity matrix, false otherwise
template<typename T >
bool BALL::TMatrix4x4< T >::isLowerTriangular ( ) const

Test whether the lower triangular is zero.

Returns:
bool, true if (m12 = m13 = m14 = m23 = m24 = m34 = 0), false otherwise
template<typename T >
BALL_INLINE bool BALL::TMatrix4x4< T >::isRegular ( ) const

Test whether this matrix is regular.

Returns:
bool, true if (Determinant != 0), false otherwise

References BALL::getDeterminant().

template<typename T >
BALL_INLINE bool BALL::TMatrix4x4< T >::isSingular ( ) const

Test whether this matrix is singular.

Returns:
bool, true if (Determinant == 0), false otherwise

References BALL::getDeterminant().

template<typename T >
bool BALL::TMatrix4x4< T >::isSymmetric ( ) const

Test whether this matrix is symmetric. (m12 = m21, m31 = m13, ...)

Returns:
bool, true if symmatric, false otherwise
template<typename T >
bool BALL::TMatrix4x4< T >::isUpperTriangular ( ) const

Test whether the upper triangular is zero.

Returns:
bool, true if (m21 = m31 = m32 = m41 = m42 = m43 = 0), false otherwise
template<typename T >
bool BALL::TMatrix4x4< T >::isValid ( ) const

Test whether instance is valid. Always returns true.

Returns:
bool true
template<typename T >
BALL_INLINE T & BALL::TMatrix4x4< T >::operator() ( Position  row,
Position  col 
) throw (Exception::IndexOverflow)

Access operator of a cell.

Parameters:
rowthe number of the row (0-3)
colthe number of the column (0-3)
Exceptions:
IndexOverflowif col >3 || row > 3
Returns:
T& a reference to the cell
template<typename T >
BALL_INLINE const T & BALL::TMatrix4x4< T >::operator() ( Position  row,
Position  col 
) const throw (Exception::IndexOverflow)

Constant access operator of a cell.

Parameters:
rowthe number of the row (0-3)
colthe number of the column (0-3)
Exceptions:
IndexOverflowif col ||row > 3
Returns:
T& a const reference to the cell
template<typename T>
TVector4< T > BALL::TMatrix4x4< T >::operator* ( const TVector4< T > &  vector) const

Multiplication by an instance of type TVector4 .

Returns:
TMatrix4x4&, {*this}

References BALL::TVector4< T >::h, BALL::TVector4< T >::x, BALL::TVector4< T >::y, and BALL::TVector4< T >::z.

template<typename T>
TMatrix4x4< T > BALL::TMatrix4x4< T >::operator* ( const T &  scalar) const

Multiply by a scalar. Operator for multiplying every cell value with a scalar value.

Returns:
TMatrix4x4 the result
template<typename T>
TMatrix4x4< T > & BALL::TMatrix4x4< T >::operator*= ( const T &  scalar)

Multiply by a scalar. Operator for multiplying every cell value with a scalar value.

Returns:
TMatrix4x4&, {*this}
template<typename T >
BALL_INLINE TMatrix4x4< T > BALL::TMatrix4x4< T >::operator+ ( ) const

Positive sign.

template<typename T >
BALL_INLINE TMatrix4x4< T > BALL::TMatrix4x4< T >::operator- ( ) const

Negative sign.

template<typename T>
BALL_INLINE TMatrix4x4< T > BALL::TMatrix4x4< T >::operator/ ( const T &  scalar) const throw (Exception::DivisionByZero)

Divide by a scalar. Operator for dividing every cell value by a scalar value.

Exceptions:
DivisionByZeroif scalar == 0
Returns:
TMatrix4x4 the result
template<typename T>
BALL_INLINE TMatrix4x4< T > & BALL::TMatrix4x4< T >::operator/= ( const T &  scalar) throw (Exception::DivisionByZero)

Divide by a scalar. Operator for dividing every cell value by a scalar value.

Exceptions:
DivisionByZeroif scalar == 0
Returns:
TMatrix4x4&, {*this}
template<typename T>
BALL_INLINE TMatrix4x4< T > & BALL::TMatrix4x4< T >::operator= ( const TMatrix4x4< T > &  m)

Assignment operator. Assign the components from another instance of TMatrix4x4.

Parameters:
TMatrix4x4the TMatrix4x4 to assign from
template<typename T>
BALL_INLINE TMatrix4x4< T > & BALL::TMatrix4x4< T >::operator= ( const T  ptr[4][4]) throw (Exception::NullPointer)

Assignment operator. Assign the components from the first 16 values assigned by ptr.

Parameters:
ptrthe array to construct from
template<typename T>
BALL_INLINE TMatrix4x4< T > & BALL::TMatrix4x4< T >::operator= ( const T *  ptr) throw (Exception::NullPointer)

Assignment operator. Assign the components from the first 16 values assigned by ptr.

Parameters:
ptrthe array to construct from
template<typename T >
BALL_INLINE const T & BALL::TMatrix4x4< T >::operator[] ( Position  position) const throw (Exception::IndexOverflow)

Constant random access operator. Access single elements of the matrix. index may assume values in the range of 0 - 15. The elements of the matrix are returned rows first, i.e., in the following order: m11, m12, m13...

template<typename T >
BALL_INLINE T & BALL::TMatrix4x4< T >::operator[] ( Position  position) throw (Exception::IndexOverflow)

Mutable random access operator.

See also:
operator[]
template<typename T>
void BALL::TMatrix4x4< T >::rotate ( const TAngle< T > &  phi,
const T &  axis_x,
const T &  axis_y,
const T &  axis_z 
)

Rotate the matrix around a given axis.

Parameters:
phithe rotation angle
axis_xthe x component of the axis
axis_ythe y component of the axis
axis_zthe z component of the axis
template<typename T>
BALL_INLINE void BALL::TMatrix4x4< T >::rotate ( const TAngle< T > &  phi,
const TVector3< T > &  axis 
)

Rotate the matrix around a given axis.

Parameters:
phithe rotation angle
axisthe axis vector

References BALL::TVector3< T >::x, BALL::TVector3< T >::y, and BALL::TVector3< T >::z.

template<typename T>
BALL_INLINE void BALL::TMatrix4x4< T >::rotate ( const TAngle< T > &  phi,
const TVector4< T > &  axis 
)

Rotate the matrix around a given axis.

Parameters:
phithe rotation angle
axisthe axis vector, the fourth component of the vector is ignored

References BALL::TVector4< T >::x, BALL::TVector4< T >::y, and BALL::TVector4< T >::z.

template<typename T>
BALL_INLINE void BALL::TMatrix4x4< T >::rotateX ( const TAngle< T > &  phi)

Rotate the matrix around the x axis.

Parameters:
phithe rotation angle

References BALL::TMatrix4x4< T >::setRotationX().

template<typename T>
BALL_INLINE void BALL::TMatrix4x4< T >::rotateY ( const TAngle< T > &  phi)

Rotate the matrix around the y axis.

Parameters:
phithe rotation angle

References BALL::TMatrix4x4< T >::setRotationY().

template<typename T>
BALL_INLINE void BALL::TMatrix4x4< T >::rotateZ ( const TAngle< T > &  phi)

Rotate the matrix around the z axis.

Parameters:
phithe rotation angle

References BALL::TMatrix4x4< T >::setRotationZ().

template<typename T>
void BALL::TMatrix4x4< T >::scale ( const T &  x_scale,
const T &  y_scale,
const T &  z_scale 
)

Scale the matrix.

Parameters:
x_scalethe x scale factor
y_scalethe y scale factor
z_scalethe z scale factor
template<typename T>
void BALL::TMatrix4x4< T >::scale ( const T &  scale)

Scale the matrix.

Parameters:
scalethe scale factor
template<typename T>
void BALL::TMatrix4x4< T >::scale ( const TVector3< T > &  v)

Scale the matrix.

Parameters:
vthe vector with the scale factor

References BALL::TVector3< T >::x, BALL::TVector3< T >::y, and BALL::TVector3< T >::z.

template<typename T>
void BALL::TMatrix4x4< T >::set ( const TVector4< T > &  col1,
const TVector4< T > &  col2,
const TVector4< T > &  col3,
const TVector4< T > &  col4 
)

Assign from four TVector4.

Parameters:
col1assigned to the first column
col2assigned to the second column
col3assigned to the third column
col4assigned to the fourth column

References BALL::TVector4< T >::h, BALL::TVector4< T >::x, BALL::TVector4< T >::y, and BALL::TVector4< T >::z.

template<typename T>
void BALL::TMatrix4x4< T >::set ( const T *  ptr) throw (Exception::NullPointer)

Assign from array-ptr. Assign from the first sixteen elements pointed to by ptr.

Parameters:
ptrthe array to construct from
Exceptions:
NullPointerif ptr == 0

Referenced by BALL::TMatrix4x4< T >::get(), and BALL::TQuaternion< T >::getRotationMatrix().

template<typename T>
void BALL::TMatrix4x4< T >::set ( const T &  t = (T)1)

Set the diagonal elements to the given value. All other elements are set to 0.

Parameters:
Tthe value to fill with (default: 1)
template<typename T>
void BALL::TMatrix4x4< T >::set ( const T &  m11,
const T &  m12,
const T &  m13,
const T &  m14,
const T &  m21,
const T &  m22,
const T &  m23,
const T &  m24,
const T &  m31,
const T &  m32,
const T &  m33,
const T &  m34,
const T &  m41,
const T &  m42,
const T &  m43,
const T &  m44 
)

Assign from sixteen values of type T.

Parameters:
m11- m44 assigned to the components
template<typename T>
void BALL::TMatrix4x4< T >::set ( const T  ptr[4][4]) throw (Exception::NullPointer)

Assign from the first sixteen elements. pointed to by the array assigned by ptr.

Parameters:
ptrthe array to construct from
Exceptions:
NullPointerif ptr == 0
template<typename T>
void BALL::TMatrix4x4< T >::setColumn ( Position  col,
const TVector4< T > &  col_value 
) throw (Exception::IndexOverflow)

Set a column of the matrix.

Parameters:
colthe number of the column (0-3)
col_valuethe new value of the col
Exceptions:
IndexOverflowif col > 3
template<typename T >
BALL_INLINE void BALL::TMatrix4x4< T >::setIdentity ( )

Set to an identity matrix. m11, m22, m33, m44 = 1; the other cells have the value 0;

template<typename T>
void BALL::TMatrix4x4< T >::setRotation ( const TAngle< T > &  phi,
const T &  axis_x,
const T &  axis_y,
const T &  axis_z 
)

Set the matrix to a rotation matrix.

Parameters:
phithe rotation angle
axis_xthe x component of the axis
axis_ythe y component of the axis
axis_zthe z component of the axis
template<typename T>
BALL_INLINE void BALL::TMatrix4x4< T >::setRotation ( const TAngle< T > &  phi,
const TVector4< T > &  axis 
)

Set the matrix to a rotation matrix.

Parameters:
phithe rotation angle
axisthe axis vector, the fourth component of the vector is ignored

References BALL::TVector4< T >::x, BALL::TVector4< T >::y, and BALL::TVector4< T >::z.

template<typename T>
BALL_INLINE void BALL::TMatrix4x4< T >::setRotation ( const TAngle< T > &  phi,
const TVector3< T > &  axis 
)

Set the matrix to a rotation matrix.

Parameters:
phithe rotation angle
axisthe axis vector

References BALL::TVector3< T >::x, BALL::TVector3< T >::y, and BALL::TVector3< T >::z.

template<typename T>
void BALL::TMatrix4x4< T >::setRotationX ( const TAngle< T > &  phi)

Set the matrix to a x rotation matrix.

Parameters:
phithe rotation angle

Referenced by BALL::TMatrix4x4< T >::rotateX().

template<typename T>
void BALL::TMatrix4x4< T >::setRotationY ( const TAngle< T > &  phi)

Set the matrix to a y rotation matrix.

Parameters:
phithe rotation angle

Referenced by BALL::TMatrix4x4< T >::rotateY().

template<typename T>
void BALL::TMatrix4x4< T >::setRotationZ ( const TAngle< T > &  phi)

Set the matrix to a z rotation matrix.

Parameters:
phithe rotation angle

Referenced by BALL::TMatrix4x4< T >::rotateZ().

template<typename T>
void BALL::TMatrix4x4< T >::setRow ( Position  row,
const TVector4< T > &  row_value 
) throw (Exception::IndexOverflow)

Set a row of the matrix.

Parameters:
rowthe number of the row (0-3)
row_valuethe new value of the row
Exceptions:
IndexOverflowif row > 3
template<typename T>
void BALL::TMatrix4x4< T >::setScale ( const TVector3< T > &  v)

Set the matrix to a scalation matrix.

Parameters:
vthe vector with the scale factor

References BALL::TVector3< T >::x, BALL::TVector3< T >::y, and BALL::TVector3< T >::z.

template<typename T>
void BALL::TMatrix4x4< T >::setScale ( const T &  scale)

Set the matrix to a scalation matrix.

Parameters:
scalethe scale factor
template<typename T>
void BALL::TMatrix4x4< T >::setScale ( const T &  x_scale,
const T &  y_scale,
const T &  z_scale 
)

Set the matrix to a scalation matrix.

Parameters:
x_scalethe x scale factor
y_scalethe y scale factor
z_scalethe z scale factor
template<typename T>
void BALL::TMatrix4x4< T >::setTranslation ( const T &  x,
const T &  y,
const T &  z 
)

Set the matrix to a translation matrix.

Parameters:
xthe x-component of the translation
ythe y-component of the translation
zthe z-component of the translation
template<typename T>
void BALL::TMatrix4x4< T >::setTranslation ( const TVector3< T > &  v)

Set the matrix to a translation matrix.

Parameters:
vthe vector to translate with

References BALL::TVector3< T >::x, BALL::TVector3< T >::y, and BALL::TVector3< T >::z.

template<typename T>
void BALL::TMatrix4x4< T >::translate ( const TVector3< T > &  v)

Translate the matrix.

Parameters:
vthe vector to translate with

References BALL::TVector3< T >::x, BALL::TVector3< T >::y, and BALL::TVector3< T >::z.

template<typename T>
void BALL::TMatrix4x4< T >::translate ( const T &  x,
const T &  y,
const T &  z 
)

Translate the matrix.

Parameters:
xthe x-component of the translation
ythe y-component of the translation
zthe z-component of the translation
template<typename T >
void BALL::TMatrix4x4< T >::transpose ( )

Mirror the Matrix at the diagonal. All values are swaped by the mirrored value. (I.e. m12 <=> m21 , m13 <=> m31 , ...)


Member Data Documentation