T3DVector< T > Class Template Reference

A simple 3D vector type. More...

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

Inheritance diagram for T3DVector< T >:
[legend]

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 operator- () const
 
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 48 of file 3d/vector.hh.

Member Typedef Documentation

◆ value_type

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

typedef for generic programming

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

Constructor & Destructor Documentation

◆ T3DVector() [1/5]

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

standart constructor

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

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

◆ T3DVector() [2/5]

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

create a zero-vector, dim must be 3

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

◆ T3DVector() [3/5]

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

we provide the default copy mechanisms

◆ T3DVector() [4/5]

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 75 of file 3d/vector.hh.

◆ T3DVector() [5/5]

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

type casting copy constructor

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

Member Function Documentation

◆ fill()

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

Fill the vector elements with value v.

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

◆ norm()

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

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

Referenced by fabs().

◆ norm2()

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

square of Euclidian norm of the vector

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

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

◆ operator*=() [1/2]

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

inplace multiplication

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

◆ operator*=() [2/2]

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

inplace component wise multiplication

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

◆ operator+=()

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

inplace addition

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

◆ operator-()

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

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

◆ operator-=()

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

inplace subtraction

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

◆ operator/=()

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

inplace divisison by a scalar

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

◆ operator=() [1/2]

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

we provide the default copy mechanisms

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

◆ operator=() [2/2]

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

assignment from different vector type

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

◆ operator[]() [1/2]

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 123 of file 3d/vector.hh.

◆ operator[]() [2/2]

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 142 of file 3d/vector.hh.

◆ product()

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

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

◆ read()

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

read the vector from a formatted string

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

Referenced by operator>>().

◆ size()

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

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

◆ write()

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

print out the formatted vector to the stream

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

Referenced by operator<<().

◆ xyz()

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

swizzle operator

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

◆ xzy()

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

swizzle operator

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

◆ yxz()

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

swizzle operator

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

◆ yzx()

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

swizzle operator

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

◆ zxy()

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

swizzle operator

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

◆ zyx()

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

swizzle operator

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

Field Documentation

◆ _0

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

declare the vector (0,0,0)

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

◆ _1

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

declare the vector (1,1,1)

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

◆ elements

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

the number of elements this vector holds (=3)

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

◆ x

◆ y

◆ z


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