T3DMatrix< T > Class Template Reference

a simple 3x3 matrix More...

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

Inheritance diagram for T3DMatrix< T >:
[legend]
Collaboration diagram for T3DMatrix< T >:
[legend]

Public Member Functions

T3DCVector< T > get_complex_eigenvector (int i) const
 
get_det () const
 
int get_eigenvalues (T3DVector< T > &v) const
 
int get_rank () const
 
T3DVector< T > get_real_eigenvector (int i) const
 
T3DMatrix< T > & operator-= (const T3DMatrix< T > &other)
 
void print (std::ostream &os) const
 
 T3DMatrix ()
 
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 operator- () const
 
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>
class 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 45 of file 3d/matrix.hh.

Constructor & Destructor Documentation

◆ T3DMatrix() [1/4]

template<typename T>
T3DMatrix< T >::T3DMatrix ( )

◆ T3DMatrix() [2/4]

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 170 of file 3d/matrix.hh.

◆ T3DMatrix() [3/4]

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

◆ T3DMatrix() [4/4]

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

Member Function Documentation

◆ diagonal() [1/2]

template<typename T>
static 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

◆ diagonal() [2/2]

template<typename T>
static 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

◆ get_complex_eigenvector()

template<typename T>
T3DCVector<T> T3DMatrix< T >::get_complex_eigenvector ( int  i) const

Calculate the complex eigenvector to a given eigenvalues.

Parameters
inumber of eigenvector
Returns
the requested eigenvector

◆ get_det()

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

◆ get_eigenvalues()

template<typename T>
int T3DMatrix< T >::get_eigenvalues ( T3DVector< T > &  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 4 three real eigenvalues, all equal

◆ get_rank()

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

◆ get_real_eigenvector()

template<typename T>
T3DVector<T> T3DMatrix< T >::get_real_eigenvector ( int  i) const

Calculate the eigenvector to a given eigenvalues. This function doesn't work for complex valued eigenvectors

Parameters
inumber of eigenvector
Returns
the requested eigenvector

◆ operator-=()

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

inplace subtract

Parameters
other
Returns

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

◆ print()

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

print the matrix to an ostream

Parameters
osthe output stream

◆ transposed()

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

Field Documentation

◆ _0

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

The zero matrix.

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

◆ _1

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

The unity matrix.

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


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