My Project
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...
 
template<class in >
T3DVector< T > & operator= (const T3DVector< in > &org)
 assignment from different vector type More...
 
T3DVector< T > & operator= (const T3DVector< T > &other)=default
 we provide the default copy mechanisms More...
 
T & operator[] (size_t i)
 
const T operator[] (size_t i) const
 
double product () const
 
void read (std::istream &is)
 read the vector from a formatted string More...
 
int size () const
 
 T3DVector ()
 standart constructor 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...
 
 T3DVector (const T3DVector< T > &other)=default
 we provide the default copy mechanisms More...
 
 T3DVector (int dim)
 create a zero-vector, dim must be 3 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 59 of file 3d/vector.hh.

Constructor & Destructor Documentation

◆ T3DVector() [1/5]

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

standart constructor

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

◆ T3DVector() [2/5]

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

create a zero-vector, dim must be 3

Definition at line 65 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 77 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 83 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 122 of file 3d/vector.hh.

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

◆ norm()

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

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

References T3DVector< T >::norm2().

Referenced by fabs().

◆ norm2()

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

square of Euclidian norm of the vector

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

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

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

◆ operator*=() [1/2]

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

inplace multiplication

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

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

◆ operator*=() [2/2]

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

inplace component wise multiplication

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

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

◆ operator+=()

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

inplace addition

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

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

◆ operator-()

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

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

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

◆ operator-=()

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

inplace subtraction

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

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

◆ operator/=()

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

inplace divisison by a scalar

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

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

◆ operator=() [1/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 90 of file 3d/vector.hh.

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

◆ operator=() [2/2]

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

we provide the default copy mechanisms

◆ operator[]() [1/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 162 of file 3d/vector.hh.

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

◆ operator[]() [2/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 135 of file 3d/vector.hh.

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

◆ product()

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

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

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

◆ read()

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

read the vector from a formatted string

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

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

Referenced by operator>>().

◆ size()

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

Definition at line 116 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 234 of file 3d/vector.hh.

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

Referenced by operator<<().

◆ xyz()

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

swizzle operator

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

◆ xzy()

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

swizzle operator

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

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

◆ yxz()

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

swizzle operator

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

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

◆ yzx()

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

swizzle operator

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

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

◆ zxy()

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

swizzle operator

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

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

◆ zyx()

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

swizzle operator

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

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

Field Documentation

◆ _0

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

declare the vector (0,0,0)

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

◆ _1

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

declare the vector (1,1,1)

Definition at line 339 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 345 of file 3d/vector.hh.

◆ x

◆ y

◆ z


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