Public Types | Public Member Functions | Data Fields | Static Public Attributes
T3DVector< T > Class Template Reference

A simple 3D vector type. More...

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

Public Types

typedef T value_type
 typedef for generic programming More...
 

Public Member Functions

void fill (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< T > & operator*= (const double a)
 inplace multiplication More...
 
T3DVector< T > & operator*= (const T3DVector< T > &a)
 inplace component wise multiplication More...
 
T3DVector< T > & operator+= (const T3DVector< T > &a)
 inplace addition More...
 
T3DVector< T > & operator-= (const T3DVector< T > &a)
 inplace subtraction More...
 
T3DVector< T > & operator/= (const double a)
 inplace divisison by a scalar More...
 
T3DVector< T > & operator= (const T3DVector< T > &other)=default
 we provide the default copy mechanisms More...
 
template<class in >
T3DVector< T > & operator= (const T3DVector< in > &org)
 assignment from different vector type More...
 
const T operator[] (size_t i) const
 
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< T > &other)=default
 we provide the default copy mechanisms More...
 
 T3DVector (const T &x_, const T &y_, const T &z_)
 constructor to construct vector from values More...
 
template<class in >
 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< T > & xyz () const
 swizzle operator More...
 
const T3DVector< T > xzy () const
 swizzle operator More...
 
const T3DVector< T > yxz () const
 swizzle operator More...
 
const T3DVector< T > yzx () const
 swizzle operator More...
 
const T3DVector< T > zxy () const
 swizzle operator More...
 
const T3DVector< T > zyx () const
 swizzle operator More...
 

Data Fields

x
 vector element More...
 
y
 vector element More...
 
z
 vector element More...
 

Static Public Attributes

static T3DVector< T > _0 = T3DVector<T>(0,0,0)
 declare the vector (0,0,0) More...
 
static T3DVector< T > _1 = T3DVector<T>(1,1,1)
 declare the vector (1,1,1) More...
 
static const unsigned int elements
 the number of elements this vector holds (=3) More...
 

Detailed Description

template<class T>
class T3DVector< T >

A simple 3D vector type.

This class is the template for a 3D vector that provides support for some common operators.

Template Parameters
Telement type

Definition at line 46 of file 3d/vector.hh.

Member Typedef Documentation

template<class T>
typedef T T3DVector< T >::value_type

typedef for generic programming

Definition at line 56 of file 3d/vector.hh.

Constructor & Destructor Documentation

template<class T>
T3DVector< T >::T3DVector ( )
inline

standart constructor

Definition at line 59 of file 3d/vector.hh.

template<class T>
T3DVector< T >::T3DVector ( int  dim)
inlineexplicit

create a zero-vector, dim must be 3

Definition at line 62 of file 3d/vector.hh.

template<class T>
T3DVector< T >::T3DVector ( const T3DVector< T > &  other)
default

we provide the default copy mechanisms

template<class T>
T3DVector< T >::T3DVector ( const T &  x_,
const T &  y_,
const T &  z_ 
)
inline

constructor to construct vector from values

Definition at line 73 of file 3d/vector.hh.

template<class T>
template<class in >
T3DVector< T >::T3DVector ( const T3DVector< in > &  org)
inlineexplicit

type casting copy constructor

Definition at line 78 of file 3d/vector.hh.

Member Function Documentation

template<class T>
void T3DVector< T >::fill ( v)
inline

Fill the vector elements with value v.

Definition at line 109 of file 3d/vector.hh.

template<class T>
double T3DVector< T >::norm ( ) const
inline
Returns
the Euclidian norm of the vector

Definition at line 99 of file 3d/vector.hh.

Referenced by fabs().

template<class T>
double T3DVector< T >::norm2 ( ) const
inline

square of Euclidian norm of the vector

Definition at line 90 of file 3d/vector.hh.

Referenced by T3DVector< T3DVector< T > >::norm().

template<class T>
T3DVector<T>& T3DVector< T >::operator*= ( const double  a)
inline

inplace multiplication

Definition at line 164 of file 3d/vector.hh.

template<class T>
T3DVector<T>& T3DVector< T >::operator*= ( const T3DVector< T > &  a)
inline

inplace component wise multiplication

Definition at line 170 of file 3d/vector.hh.

template<class T>
T3DVector<T>& T3DVector< T >::operator+= ( const T3DVector< T > &  a)
inline

inplace addition

Definition at line 152 of file 3d/vector.hh.

template<class T>
T3DVector<T>& T3DVector< T >::operator-= ( const T3DVector< T > &  a)
inline

inplace subtraction

Definition at line 158 of file 3d/vector.hh.

template<class T>
T3DVector<T>& T3DVector< T >::operator/= ( const double  a)
inline

inplace divisison by a scalar

Definition at line 177 of file 3d/vector.hh.

template<class T>
T3DVector<T>& T3DVector< T >::operator= ( const T3DVector< T > &  other)
default

we provide the default copy mechanisms

template<class T>
template<class in >
T3DVector<T>& T3DVector< T >::operator= ( const T3DVector< in > &  org)
inline

assignment from different vector type

Definition at line 84 of file 3d/vector.hh.

template<class T>
const T T3DVector< T >::operator[] ( size_t  i) const
inline

Implement the const operator [] for this type of vector

Parameters
iindex
Returns
value at index
Remarks
the performance of this needs to be analyzed. The compiler should be able to translate this to a simple memory access.

Definition at line 121 of file 3d/vector.hh.

template<class T>
T& T3DVector< T >::operator[] ( size_t  i)
inline

Implement the writable operator [] for this type of vector

Parameters
iindex
Returns
reference value at index
Remarks
the performance of this needs to be analyzed. The compiler should be able to translate this to a simple memory access.

Definition at line 140 of file 3d/vector.hh.

template<class T>
double T3DVector< T >::product ( ) const
inline
Returns
the product of the vector components

Definition at line 95 of file 3d/vector.hh.

template<class T>
void T3DVector< T >::read ( std::istream &  is)
inline

read the vector from a formatted string

Definition at line 189 of file 3d/vector.hh.

Referenced by operator>>().

template<class T>
int T3DVector< T >::size ( ) const
inline
Returns
the dimension of vector (always 3)

Definition at line 104 of file 3d/vector.hh.

template<class T>
void T3DVector< T >::write ( std::ostream &  os) const
inline

print out the formatted vector to the stream

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

Referenced by operator<<().

template<class T>
const T3DVector<T>& T3DVector< T >::xyz ( ) const
inline

swizzle operator

Definition at line 241 of file 3d/vector.hh.

template<class T>
const T3DVector<T> T3DVector< T >::xzy ( ) const
inline

swizzle operator

Definition at line 246 of file 3d/vector.hh.

template<class T>
const T3DVector<T> T3DVector< T >::yxz ( ) const
inline

swizzle operator

Definition at line 251 of file 3d/vector.hh.

template<class T>
const T3DVector<T> T3DVector< T >::yzx ( ) const
inline

swizzle operator

Definition at line 256 of file 3d/vector.hh.

template<class T>
const T3DVector<T> T3DVector< T >::zxy ( ) const
inline

swizzle operator

Definition at line 266 of file 3d/vector.hh.

template<class T>
const T3DVector<T> T3DVector< T >::zyx ( ) const
inline

swizzle operator

Definition at line 261 of file 3d/vector.hh.

Field Documentation

template<class T>
T3DVector< T > T3DVector< T >::_0 = T3DVector<T>(0,0,0)
static

declare the vector (0,0,0)

Definition at line 274 of file 3d/vector.hh.

template<class T>
T3DVector< T > T3DVector< T >::_1 = T3DVector<T>(1,1,1)
static

declare the vector (1,1,1)

Definition at line 271 of file 3d/vector.hh.

template<class T>
const unsigned int T3DVector< T >::elements
static

the number of elements this vector holds (=3)

Definition at line 277 of file 3d/vector.hh.

template<class T>
T T3DVector< T >::x
template<class T>
T T3DVector< T >::y
template<class T>
T T3DVector< T >::z

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