Loading...
Searching...
No Matches
BALL::TVector4< T > Class Template Reference

`#include <BALL/MATHS/vector4.h>`

## Public Member Functions

Constructors and Destructors
| TVector4 ()
| TVector4 (const T *ptr)
| TVector4 (const T &value)
| TVector4 (const T &x, const T &y, const T &z, const T &h=(T) 1)
| TVector4 (const TVector4 &vector)
virtual | ~TVector4 ()
virtual void | clear ()
Assignment
void | set (const T *ptr)
void | set (const T &rx, const T &ry, const T &rz, const T &rh=(T) 1)
void | set (const TVector4 &vector)
TVector4 & | operator= (const T *ptr)
TVector4 & | operator= (const TVector4 &vector)
TVector4 & | operator= (T value)
void | get (T *ptr) const
void | get (T &rx, T &ry, T &rz, T &rh) const
void | get (TVector4 &vector) const
void | swap (TVector4 &vector)
Arithmetic operators
TVector4 | operator+ () const
TVector4 | operator- () const
TVector4 & | operator+= (const TVector4 &vector)
TVector4 & | operator-= (const TVector4 &vector)
TVector4 | operator* (const T &scalar)
TVector4 & | operator*= (const T &scalar)
TVector4 | operator/ (const T &scalar)
TVector4 & | operator/= (const T &scalar)
T | operator* (const TVector4 &vector) const
T | getDistance (const TVector4 &vector) const
T | getSquareDistance (const TVector4 &vector) const
Predicates
bool | operator== (const TVector4 &vector) const
bool | operator!= (const TVector4 &vector) const
bool | isOrthogonalTo (const TVector4 &vector) const
Debugging and Diagnostics
bool | isValid () const
void | dump (std::ostream &s=std::cout, Size depth=0) const

## Public Attributes

Attributes
All vector components are public members for convenience.
T | x
T | y
T | z
T | h

## Accessors

T | getLength () const
T | getSquareLength () const
TVector4 & | normalize ()
void | set (const T &value=(T) 1)
T & | operator[] (Position position)
const T & | operator[] (Position position) const
static const TVector4 & | getZero ()
static const TVector4 & | getUnit ()

## Detailed Description

template<typename T>
class BALL::TVector4< T >

Generic Four-Dimensional Vector. Representation of points and vectors in four-dimensional space.

Definition at line 52 of file vector4.h.

## Constructor & Destructor Documentation

## TVector4() [1/5]

template<typename T>

BALL::TVector4< T >::TVector4 | ( |  | ) |

Default constructor. This method creates a new TVector4 object. The four components are initialized to (T)0.

Definition at line 377 of file vector4.h.

## TVector4() [2/5]

template<typename T>

BALL::TVector4< T >::TVector4 | ( | const T * | ptr | ) |

Array constructor. This constructor creates a TVector4 object from the first four elements pointed by ptr.

Parameters

  ptr | the array to construct from

Exceptions

  NullPointer | if ptr == 0

Definition at line 386 of file vector4.h.

## TVector4() [3/5]

template<typename T>

BALL::TVector4< T >::TVector4 | ( | const T & | value | ) |

explicit

Scalar constructor. Create a new vector with all components set to the same value.

Parameters

  value | the value of all components

Definition at line 401 of file vector4.h.

## TVector4() [4/5]

template<typename T>

BALL::TVector4< T >::TVector4 | ( | const T & | x,
|  | const T & | y,
|  | const T & | z,
|  | const T & | h = (T)1 )

Detailed constructor. Create a new TVector4 object from three or four values of type T.

Parameters

  x | assigned to x
  y | assigned to y
  z | assigned to z
  h | assigned to h, default: 1 ;

Definition at line 410 of file vector4.h.

## TVector4() [5/5]

template<typename T>

BALL::TVector4< T >::TVector4 | ( | const TVector4< T > & | vector | ) |

Copy constructor. Create a new TVector4 object from another.

Parameters

  vector | the TVector4 object to be copied

Definition at line 419 of file vector4.h.

## ~TVector4()

template<typename T>

BALL::TVector4< T >::~TVector4 | ( |  | ) |

virtual

Destructor. Destructs the TVector4 object. As there are no dynamic data structures, nothing happens.

Definition at line 428 of file vector4.h.

## Member Function Documentation

## clear()

template<typename T>

virtual void BALL::TVector4< T >::clear | ( |  | ) |

inline virtual

Clear method The values are set to 0.

Definition at line 107 of file vector4.h.

## dump()

template<typename T>

void BALL::TVector4< T >::dump | ( | std::ostream & | s = std::cout,
|  | Size | depth = 0 ) const

Internal state dump. Dump the current internal state of {*this} to the output ostream s with dumping depth depth .

Parameters

  s | - output stream where to output the internal state of {*this}
  depth | - the dumping depth

Definition at line 798 of file vector4.h.

## get() [1/3]

template<typename T>

BALL_INLINE void BALL::TVector4< T >::get | ( | T & | rx,
|  | T & | ry,
|  | T & | rz,
|  | T & | rh ) const

Assign to four variables of type T.

Parameters

  rx | the x component
  ry | the y component
  rz | the z component
  rh | the h component

Definition at line 522 of file vector4.h.

## get() [2/3]

template<typename T>

BALL_INLINE void BALL::TVector4< T >::get | ( | T * | ptr | ) | const

Assign to an array. Sets the first four array elements pointed of array ptr to the values of the four vector components.

Parameters

  ptr | the array

Exceptions

  NullPointer | if ptr == 0

Definition at line 508 of file vector4.h.

## get() [3/3]

template<typename T>

BALL_INLINE void BALL::TVector4< T >::get | ( | TVector4< T > & | vector | ) | const

Assign to another Vector4. Assigns the vector components to another vector.

Parameters

  vector | the vector to be assigned to

Definition at line 532 of file vector4.h.

## getDistance()

template<typename T>

BALL_INLINE T BALL::TVector4< T >::getDistance | ( | const TVector4< T > & | vector | ) | const

Return the distance to another vector

Parameters

  vector | the reference vector

Returns
  T, the distance

Definition at line 745 of file vector4.h.

## getLength()

template<typename T>

BALL_INLINE T BALL::TVector4< T >::getLength | ( |  | ) | const

Return the length of the vector. The length of the vector is calculated as .

Returns
  T, the vector length

Definition at line 562 of file vector4.h.

## getSquareDistance()

template<typename T>

BALL_INLINE T BALL::TVector4< T >::getSquareDistance | ( | const TVector4< T > & | vector | ) | const

Return the squared distance to another vector. This method avoids the square root needed in getDistance, so this method should be preferred if possible.

Parameters

  vector | the reference vector

Returns
  T, the squared distance

Definition at line 757 of file vector4.h.

## getSquareLength()

template<typename T>

BALL_INLINE T BALL::TVector4< T >::getSquareLength | ( |  | ) | const

Return the squared length of the vector. This method avoids the square root needed in getLength, so this method should be preferred if possible.

Returns
  T,

Definition at line 569 of file vector4.h.

## getUnit()

template<typename T>

BALL_INLINE const TVector4< T > & BALL::TVector4< T >::getUnit | ( |  | ) |

static

Return a vector with all components 1.

Definition at line 603 of file vector4.h.

## getZero()

template<typename T>

BALL_INLINE const TVector4< T > & BALL::TVector4< T >::getZero | ( |  | ) |

static

Return a vector with all components 0.

Definition at line 595 of file vector4.h.

## isOrthogonalTo()

template<typename T>

BALL_INLINE bool BALL::TVector4< T >::isOrthogonalTo | ( | const TVector4< T > & | vector | ) | const

Orthogonality predicate.

Definition at line 785 of file vector4.h.

## isValid()

template<typename T>

BALL_INLINE bool BALL::TVector4< T >::isValid | ( |  | ) | const

Test whether instance is valid. Always returns true

Returns
  bool true

Definition at line 792 of file vector4.h.

## normalize()

template<typename T>

BALL_INLINE TVector4< T > & BALL::TVector4< T >::normalize | ( |  | ) |

Normalize the vector. The vector is scaled with its length: .

Returns
  T, a reference to {*this} vector

Exceptions

  DivisionByZero | if the length of the vector is 0

Definition at line 576 of file vector4.h.

## operator!=()

template<typename T>

BALL_INLINE bool BALL::TVector4< T >::operator!= | ( | const TVector4< T > & | vector | ) | const

Inequality operator. The function Maths::isEqual is used to compare the values. Maths::isEqual

Returns
  bool, true if the two vectors differ in at least one component, false otherwise

Definition at line 777 of file vector4.h.

## operator*() [1/2]

template<typename T>

BALL_INLINE TVector4< T > BALL::TVector4< T >::operator* | ( | const T & | scalar | ) |

Scalar product. Return TVector4(x * scalar, y * scalar, z * scalar, h * scalar).

Parameters

  scalar | the scalar to multiply by

Returns
  TVector4 the scalar product of this vector and scalar

Definition at line 694 of file vector4.h.

## operator*() [2/2]

template<typename T>

BALL_INLINE T BALL::TVector4< T >::operator* | ( | const TVector4< T > & | vector | ) | const

Dot product.

Parameters

  vector | the vector to multiply by

Returns
  T the dot product of this vector with vector.

Definition at line 738 of file vector4.h.

## operator*=()

template<typename T>

BALL_INLINE TVector4< T > & BALL::TVector4< T >::operator*= | ( | const T & | scalar | ) |

Multiply by a scalar. Multiply all components of the vector with a scalar.

Parameters

  scalar | the scalar to multiply by

Returns
  TVector4& {*this}

Definition at line 701 of file vector4.h.

## operator+()

template<typename T>

BALL_INLINE TVector4< T > BALL::TVector4< T >::operator+ | ( |  | ) | const

Positive sign.

Definition at line 656 of file vector4.h.

## operator+=()

template<typename T>

BALL_INLINE TVector4< T > & BALL::TVector4< T >::operator+= | ( | const TVector4< T > & | vector | ) |

Add a vector to this vector.

Parameters

  vector | the vector to add

Returns
  TVector4, {*this}

Definition at line 670 of file vector4.h.

## operator-()

template<typename T>

BALL_INLINE TVector4< T > BALL::TVector4< T >::operator- | ( |  | ) | const

Negative sign.

Definition at line 663 of file vector4.h.

## operator-=()

template<typename T>

BALL_INLINE TVector4< T > & BALL::TVector4< T >::operator-= | ( | const TVector4< T > & | vector | ) |

Subtract a vector from this vector.

Parameters

  vector | the vector to subtract

Returns
  TVector4 {*this}

Definition at line 682 of file vector4.h.

## operator/()

template<typename T>

TVector4< T > BALL::TVector4< T >::operator/ | ( | const T & | scalar | ) |

Fraction of a vector. Return TVector4(x / scalar, y / scalar, z / scalar, h / scalar).

Parameters

  scalar | the scalar to divide by

Returns
  TVector4

Exceptions

  Exception::DivisionByZero | if scalar == (T)0

Definition at line 712 of file vector4.h.

## operator/=()

template<typename T>

TVector4< T > & BALL::TVector4< T >::operator/= | ( | const T & | scalar | ) |

Divide a vector by a scalar.

Parameters

  scalar | the scalar to divide by

Returns
  TVector4&, {*this}

Exceptions

  Exception::DivisionByZero | if scalar == (T)0

Definition at line 722 of file vector4.h.

## operator=() [1/3]

template<typename T>

BALL_INLINE TVector4< T > & BALL::TVector4< T >::operator= | ( | const T * | ptr | ) |

Array assignment operator. Assigns the first four elements of an array to the vector components x, y, z and h.

Parameters

  ptr | the array

Exceptions

  NullPointer | if ptr == 0

Definition at line 468 of file vector4.h.

## operator=() [2/3]

template<typename T>

BALL_INLINE TVector4< T > & BALL::TVector4< T >::operator= | ( | const TVector4< T > & | vector | ) |

Assignment operator. Assign the vector components from another vector.

Parameters

  vector | the vector to assign from

Definition at line 484 of file vector4.h.

## operator=() [3/3]

template<typename T>

BALL_INLINE TVector4< T > & BALL::TVector4< T >::operator= | ( | T | value | ) |

Assignment operator. Assign a constant value to all four vector components.

Parameters

  value | the constant to assign to x, y, z, h

Definition at line 496 of file vector4.h.

## operator==()

template<typename T>

BALL_INLINE bool BALL::TVector4< T >::operator== | ( | const TVector4< T > & | vector | ) | const

Equality operator. The function Maths::isEqual is used to compare the values. Maths::isEqual

Returns
  bool, true if all four vector components are equal, false otherwise

Definition at line 769 of file vector4.h.

## operator[]() [1/2]

template<typename T>

BALL_INLINE T & BALL::TVector4< T >::operator[] | ( | Position | position | ) |

Mutable array-like access to the components.

Exceptions

  Exception::IndexOverflow | if index > 3

Definition at line 618 of file vector4.h.

## operator[]() [2/2]

template<typename T>

BALL_INLINE const T & BALL::TVector4< T >::operator[] | ( | Position | position | ) | const

Constant array-like access to the components.

Exceptions

  Exception::IndexOverflow | if index > 3

Definition at line 637 of file vector4.h.

## set() [1/4]

template<typename T>

BALL_INLINE void BALL::TVector4< T >::set | ( | const T & | rx,
|  | const T & | ry,
|  | const T & | rz,
|  | const T & | rh = (T)1 )

Assign the vector components.

Parameters

  rx | the new x component
  ry | the new y component
  rz | the new z component
  rh | the new h component, default: 1

Definition at line 448 of file vector4.h.

## set() [2/4]

template<typename T>

BALL_INLINE void BALL::TVector4< T >::set | ( | const T & | value = (T)1 | ) |

Assign one value to all vector components.

Parameters

  value | the value to be assigned to, default: 1

Definition at line 611 of file vector4.h.

## set() [3/4]

template<typename T>

BALL_INLINE void BALL::TVector4< T >::set | ( | const T * | ptr | ) |

Assign from an array. Assign the four components x, y, z and h from the first four elements of the array pointed to by ptr.

Parameters

  ptr | an array

Exceptions

  Nullpointer | if ptr == 0

Definition at line 434 of file vector4.h.

## set() [4/4]

template<typename T>

BALL_INLINE void BALL::TVector4< T >::set | ( | const TVector4< T > & | vector | ) |

Assign from another TVector4.

Parameters

  vector | the TVector4 object to assign from

Definition at line 458 of file vector4.h.

## swap()

template<typename T>

void BALL::TVector4< T >::swap | ( | TVector4< T > & | vector | ) |

Swap the contents of two vectors.

Parameters

  vector | the vector to swap contents with

Definition at line 541 of file vector4.h.

## Member Data Documentation

## h

template<typename T>

T BALL::TVector4< T >::h

height component of the vector

Definition at line 370 of file vector4.h.

## x

template<typename T>

T BALL::TVector4< T >::x

x component of the vector

Definition at line 358 of file vector4.h.

## y

template<typename T>

T BALL::TVector4< T >::y

y component of the vector

Definition at line 362 of file vector4.h.

## z

template<typename T>

T BALL::TVector4< T >::z

z component of the vector

Definition at line 366 of file vector4.h.