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 ()=default
 
 T3DMatrix (const T3DMatrix< T > &o)=default
 
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. More...
 
double norm () const
 
double norm2 () const
 square of Euclidian norm of the vector More...
 
T3DVector< T3DVector< T > > & operator*= (const double a)
 inplace multiplication More...
 
T3DVector< T3DVector< T > > & operator*= (const T3DVector< T3DVector< T > > &a)
 inplace component wise multiplication More...
 
T3DVector< T3DVector< T > > & operator+= (const T3DVector< T3DVector< T > > &a)
 inplace addition More...
 
T3DVector< T3DVector< T > > & operator-= (const T3DVector< T3DVector< T > > &a)
 inplace subtraction More...
 
T3DVector< T3DVector< T > > & operator/= (const double a)
 inplace divisison by a scalar More...
 
T3DVector< T3DVector< T > > & operator= (const T3DVector< T3DVector< T > > &other)=default
 we provide the default copy mechanisms More...
 
T3DVector< T3DVector< T > > & operator= (const T3DVector< in > &org)
 assignment from different vector type More...
 
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 More...
 
int size () const
 
 T3DVector ()
 standart constructor More...
 
 T3DVector (int dim)
 create a zero-vector, dim must be 3 More...
 
 T3DVector (const T3DVector< T3DVector< T > > &other)=default
 we provide the default copy mechanisms More...
 
 T3DVector (const T3DVector< T > &x_, const T3DVector< T > &y_, const T3DVector< T > &z_)
 constructor to construct vector from values More...
 
 T3DVector (const T3DVector< in > &org)
 type casting copy constructor More...
 
void write (std::ostream &os) const
 print out the formatted vector to the stream More...
 
const T3DVector< T3DVector< T > > & xyz () const
 swizzle operator More...
 
const T3DVector< T3DVector< T > > xzy () const
 swizzle operator More...
 
const T3DVector< T3DVector< T > > yxz () const
 swizzle operator More...
 
const T3DVector< T3DVector< T > > yzx () const
 swizzle operator More...
 
const T3DVector< T3DVector< T > > zxy () const
 swizzle operator More...
 
const T3DVector< T3DVector< T > > zyx () const
 swizzle operator More...
 

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

Additional Inherited Members

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

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 ( )
default
template<typename T>
T3DMatrix< T >::T3DMatrix ( const T3DMatrix< T > &  o)
default
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: