Public Member Functions | Static Public Member Functions | Static Public Attributes
T3DMatrix< T > Struct Template Reference

a simple 3x3 matrix More...

#include <mia/3d/matrix.hh>

Inheritance diagram for T3DMatrix< T >:
T3DVector< T3DVector< T > >

Public Member Functions

get_det () const
int get_eigenvalues (C3DFVector &v) const
int get_eigenvector (float ev, C3DFVector &v) const
int get_rank () const
T3DMatrix< T > & operator-= (const T3DMatrix< T > &other)
void print (std::ostream &os) const
 T3DMatrix ()
 T3DMatrix (const T3DMatrix< T > &o)
template<typename I >
 T3DMatrix (const T3DMatrix< I > &o)
 T3DMatrix (const T3DVector< T3DVector< T > > &other)
 T3DMatrix (const T3DVector< T > &x, const T3DVector< T > &y, const T3DVector< T > &z)
T3DMatrix< T > transposed () const
- Public Member Functions inherited from T3DVector< T3DVector< T > >
void fill (T3DVector< T >v)
 Fill the vector elements with value v.
double norm () const
double norm2 () const
 square of Euclidian norm of the vector
T3DVector< T3DVector< T > > & operator*= (const double a)
 inplace multiplication
T3DVector< T3DVector< T > > & operator*= (const T3DVector< T3DVector< T > > &a)
 inplace component wise multiplication
T3DVector< T3DVector< T > > & operator+= (const T3DVector< T3DVector< T > > &a)
 inplace addition
T3DVector< T3DVector< T > > & operator-= (const T3DVector< T3DVector< T > > &a)
 inplace subtraction
T3DVector< T3DVector< T > > & operator/= (const double a)
 inplace divisison by a scalar
T3DVector< T3DVector< T > > & operator= (const T3DVector< T3DVector< T > > &other)
 we provide the default copy mechanisms
T3DVector< T3DVector< T > > & operator= (const T3DVector< in > &org)
 assignment from different vector type
const T3DVector< T > operator[] (size_t i) const
T3DVector< T > & operator[] (size_t i)
double product () const
void read (std::istream &is)
 read the vector from a formatted string
int size () const
 T3DVector ()
 standart constructor
 T3DVector (int dim)
 create a zero-vector, dim must be 3
 T3DVector (const T3DVector< T3DVector< T > > &other)
 we provide the default copy mechanisms
 T3DVector (const T3DVector< T > &x_, const T3DVector< T > &y_, const T3DVector< T > &z_)
 constructor to construct vector from values
 T3DVector (const T3DVector< in > &org)
 type casting copy constructor
void write (std::ostream &os) const
 print out the formatted vector to the stream
const T3DVector< T3DVector< T > > & xyz () const
 swizzle operator
const T3DVector< T3DVector< T > > xzy () const
 swizzle operator
const T3DVector< T3DVector< T > > yxz () const
 swizzle operator
const T3DVector< T3DVector< T > > yzx () const
 swizzle operator
const T3DVector< T3DVector< T > > zxy () const
 swizzle operator
const T3DVector< T3DVector< T > > zyx () const
 swizzle operator

Static Public Member Functions

static T3DMatrix< T > diagonal (T value)
static T3DMatrix< T > diagonal (const T3DVector< T > &values)

Static Public Attributes

static const T3DMatrix _0 = T3DMatrix<T>()
 The zero matrix.
static const T3DMatrix _1
 The unity matrix.
- Static Public Attributes inherited from T3DVector< T3DVector< T > >
static T3DVector< T3DVector< T > > _0
 declare the vector (0,0,0)
static T3DVector< T3DVector< T > > _1
 declare the vector (1,1,1)
static const unsigned int elements
 the number of elements this vector holds (=3)

Additional Inherited Members

- Public Types inherited from T3DVector< T3DVector< T > >
typedef T3DVector< T > value_type
 typedef for generic programming
- Data Fields inherited from T3DVector< T3DVector< T > >
T3DVector< T > x
 vector element
T3DVector< T > y
 vector element
T3DVector< T > z
 vector element

Detailed Description

template<typename T>
struct T3DMatrix< T >

a simple 3x3 matrix

This si a simple implementation of a 3x3 matrix that supports the evaluation of certain properties and operations with vectors

Template Parameters
Tthe data type of the elements of the matrix

Definition at line 39 of file 3d/matrix.hh.

Constructor & Destructor Documentation

template<typename T>
T3DMatrix< T >::T3DMatrix ( )
template<typename T>
T3DMatrix< T >::T3DMatrix ( const T3DMatrix< T > &  o)
template<typename T >
template<typename I >
T3DMatrix< T >::T3DMatrix ( const T3DMatrix< I > &  o)

Construct a matrix by copying from a differenty typed matrix

Template Parameters
Ithe element type of the original matrix
Parameters
othe matrix to be copied

Definition at line 178 of file 3d/matrix.hh.

template<typename T>
T3DMatrix< T >::T3DMatrix ( const T3DVector< T3DVector< T > > &  other)

Construct the matrix by giving a 3D vector of 3D vectors

Remarks
This is needed to make transparent use of the T3DVector operators
Parameters
otherthe input matrix

Definition at line 184 of file 3d/matrix.hh.

template<typename T>
T3DMatrix< T >::T3DMatrix ( const T3DVector< T > &  x,
const T3DVector< T > &  y,
const T3DVector< T > &  z 
)

Construct the matrix by giving the rows as 3D vectors

Parameters
x1st row
y2st row
z3rd row

Definition at line 190 of file 3d/matrix.hh.

Member Function Documentation

template<typename T>
T3DMatrix< T > T3DMatrix< T >::diagonal ( value)
static

Create a diagonal matrix

Parameters
valuethe value to set the diagonal elements to
Returns
a diagonal matrix with the gibe diagonal

Definition at line 161 of file 3d/matrix.hh.

Referenced by T3DMatrix< T >::get_eigenvector().

template<typename T>
T3DMatrix< T > T3DMatrix< T >::diagonal ( const T3DVector< T > &  values)
static

Create a diagonal matrix

Parameters
valuesthe values to set the diagonal elements to a(0,0) = values.x, a(1,1) = values.y, ...
Returns
a diagonal matrix with the gibe diagonal

Definition at line 169 of file 3d/matrix.hh.

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

template<class T >
T T3DMatrix< T >::get_det ( ) const
Returns
the determinat of the matrix

Definition at line 278 of file 3d/matrix.hh.

References dot().

template<typename T >
int T3DMatrix< T >::get_eigenvalues ( C3DFVector v) const

calculated the eigenvalues of the matrix using the caracteristic polynome, and Cardans formula

Return values
resultstores the three eigenvalues, interprete dependend on returns
Returns
1 one real, two complex eigenvalues, real part = result->y, imaginary part = result->z 2 three real eigenvalues, at least two are equal 3 three distinct real eigenvalues

Definition at line 287 of file 3d/matrix.hh.

References cubrt(), cvdebug(), fabs(), T3DVector< T >::x, T3DVector< T >::y, and T3DVector< T >::z.

template<typename T >
int T3DMatrix< T >::get_eigenvector ( float  ev,
C3DFVector v 
) const

Calculate the eigenvector to a given eigenvalues. If the eigenvalue is complex, the matrix has to be propagated to a complex one using the type converting copy constructor

Parameters
[in]evthe eigenvalue
[out]vthe estimated eigenvector
Returns
0 eigenvector is valid 2 no eigenvector found

Definition at line 378 of file 3d/matrix.hh.

References solve_lines_t::a, solve_lines_t::b, T3DMatrix< T >::diagonal(), solve_2x2(), T3DVector< T3DVector< T > >::x, T3DVector< T >::x, T3DVector< T >::y, T3DVector< T3DVector< T > >::y, T3DVector< T >::z, and T3DVector< T3DVector< T > >::z.

template<typename T >
int T3DMatrix< T >::get_rank ( ) const
Returns
the rank of the matrix

Definition at line 254 of file 3d/matrix.hh.

References cvdebug(), T3DVector< T >::x, T3DVector< T >::y, and T3DVector< T >::z.

template<typename T>
T3DMatrix< T > & T3DMatrix< T >::operator-= ( const T3DMatrix< T > &  other)

inplace subtract

Parameters
other
Returns

Definition at line 208 of file 3d/matrix.hh.

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

template<typename T >
void T3DMatrix< T >::print ( std::ostream &  os) const

print the matrix to an ostream

Parameters
osthe output stream

Definition at line 195 of file 3d/matrix.hh.

template<typename T >
T3DMatrix< T > T3DMatrix< T >::transposed ( ) const
Returns
the transposed of this matrix

Definition at line 217 of file 3d/matrix.hh.

Field Documentation

template<typename T>
const T3DMatrix< T > T3DMatrix< T >::_0 = T3DMatrix<T>()
static

The zero matrix.

Definition at line 142 of file 3d/matrix.hh.

template<typename T>
const T3DMatrix< T > T3DMatrix< T >::_1
static

The unity matrix.

Definition at line 139 of file 3d/matrix.hh.


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