BALL::TVector2< T > Class Template Reference
[Two-dimensional vectors.]

#include <BALL/MATHS/vector2.h>

Inheritance diagram for BALL::TVector2< T >:
BALL::PersistentObject BALL::Object BALL::AutoDeletable

List of all members.


Public Member Functions

Constructors and Destructors
 TVector2 ()
 TVector2 (const T &value)
 TVector2 (const T &vx, const T &vy)
 TVector2 (const TVector2 &vector)
 TVector2 (const T *ptr) throw (Exception::NullPointer)
virtual ~TVector2 ()
virtual void clear ()
Persistence
virtual void persistentWrite (PersistenceManager &pm, const char *name=0) const throw (Exception::GeneralException)
virtual void persistentRead (PersistenceManager &pm) throw (Exception::GeneralException)
Arithmetic operators
const TVector2operator+ () const
TVector2 operator- () const
TVector2 operator+ (const TVector2 &b) const
TVector2 operator- (const TVector2 &b) const
TVector2operator+= (const TVector2 &vector)
TVector2operator-= (const TVector2 &vector)
TVector2 operator* (const T &scalar) const
TVector2operator*= (const T &scalar)
TVector2 operator/ (const T &lambda) const throw (Exception::DivisionByZero)
TVector2operator/= (const T &lambda) throw (Exception::DivisionByZero)
operator* (const TVector2 &vector) const
Geometric properties
getDistance (const TVector2 &vector) const
getSquareDistance (const TVector2 &vector) const
Predicates
bool operator== (const TVector2 &vector) const
bool operator!= (const TVector2 &vector) const
bool isZero () const
bool isOrthogonalTo (TVector2 &vector) const
Debugging and Diagnostics
void dump (std::ostream &s=std::cout, Size depth=0) const
bool isValid () const

Public Attributes

Vector components

For easier access, the two components of the vector are public members.



x
y

Assignment

void set (const T &value)
void set (const T &vx, const T &vy)
void set (const TVector2 &vector)
TVector2operator= (const TVector2 &v)
TVector2operator= (const T &value)
TVector2operator= (const T *ptr) throw (Exception::NullPointer)
getLength () const
getSquareLength () const
TVector2normalize () throw (Exception::DivisionByZero)
TVector2negate ()
T & operator[] (Position position) throw (Exception::IndexOverflow)
const T & operator[] (Position position) const throw (Exception::IndexOverflow)
static const TVector2getZero ()
static const TVector2getUnit ()

Detailed Description

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

Generic Two-Dimensional Vector.


Constructor & Destructor Documentation

template<typename T >
BALL::TVector2< T >::TVector2 (  )  [inline]

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

template<typename T>
BALL::TVector2< T >::TVector2 ( const T &  value  )  [inline, explicit]

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

Parameters:
value the value of all components
template<typename T>
BALL::TVector2< T >::TVector2 ( const T &  vx,
const T &  vy 
) [inline]

Detailed constructor. Create a new TVector2 object from two variables of type T.

Parameters:
vx assigned to x
vy assigned to y
template<typename T>
BALL::TVector2< T >::TVector2 ( const TVector2< T > &  vector  )  [inline]

Copy constructor. Create a new TVector2 object from another.

Parameters:
vector the TVector2 object to be copied
template<typename T>
BALL_INLINE BALL::TVector2< T >::TVector2 ( const T *  ptr  )  throw (Exception::NullPointer) [inline]

Array constructor. This constructor creates a TVector3 object from the first two elements pointed to by ptr.

Parameters:
ptr the array to construct from
Exceptions:
NullPointer if ptr == 0
template<typename T >
BALL::TVector2< T >::~TVector2 (  )  [inline, virtual]

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


Member Function Documentation

template<typename T >
void BALL::TVector2< T >::clear (  )  [inline, virtual]

Clear method The values are set to 0.

Reimplemented from BALL::Object.

References BALL::TVector2< T >::x, and BALL::TVector2< T >::y.

template<typename T >
void BALL::TVector2< T >::dump ( std::ostream &  s = std::cout,
Size  depth = 0 
) const [inline]

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

References BALL_DUMP_DEPTH, BALL_DUMP_HEADER, BALL_DUMP_STREAM_PREFIX, BALL_DUMP_STREAM_SUFFIX, BALL::TVector2< T >::x, and BALL::TVector2< T >::y.

template<typename T >
BALL_INLINE T BALL::TVector2< T >::getDistance ( const TVector2< T > &  vector  )  const [inline]

Return the distance to another vector.

References BALL::TVector2< T >::x, and BALL::TVector2< T >::y.

template<typename T >
BALL_INLINE T BALL::TVector2< T >::getLength (  )  const [inline]

Return the length of the vector. The length of the vector is calculated as $\sqrt{x^2 + y^2}$.

Returns:
T, the vector length

References BALL::TVector2< T >::x, and BALL::TVector2< T >::y.

template<typename T >
BALL_INLINE T BALL::TVector2< T >::getSquareDistance ( const TVector2< T > &  vector  )  const [inline]

Return the squared distance to another vector.

References BALL::TVector2< T >::x, and BALL::TVector2< T >::y.

template<typename T >
BALL_INLINE T BALL::TVector2< T >::getSquareLength (  )  const [inline]

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

Returns:
T, $x^2 + y^2$

References BALL::TVector2< T >::x, and BALL::TVector2< T >::y.

template<typename T >
BALL_INLINE const TVector2< T > & BALL::TVector2< T >::getUnit (  )  [inline, static]

Return a vector with all components 1.

Returns:
: TVector4(1, 1, 1, 1)
template<typename T >
BALL_INLINE const TVector2< T > & BALL::TVector2< T >::getZero (  )  [inline, static]

Return a vector with all components 0.

template<typename T >
BALL_INLINE bool BALL::TVector2< T >::isOrthogonalTo ( TVector2< T > &  vector  )  const [inline]

Orthogonality predicate.

References BALL::TVector2< T >::isZero().

template<typename T >
BALL_INLINE bool BALL::TVector2< T >::isValid (  )  const [inline, virtual]

Test if instance is valid. Always returns true.

Returns:
bool true

Reimplemented from BALL::Object.

template<typename T >
BALL_INLINE bool BALL::TVector2< T >::isZero (  )  const [inline]

Zero predicate. The function Maths::isZero is used to compare the values with zero. Maths::isZero

References BALL::Maths::isZero(), BALL::TVector2< T >::x, and BALL::TVector2< T >::y.

Referenced by BALL::TVector2< T >::isOrthogonalTo().

template<typename T >
TVector2< T > & BALL::TVector2< T >::negate (  )  [inline]

Negate the vector. Negate the two components of the vector

Returns:
T, a reference to {*this} vector

References BALL::TVector2< T >::x, and BALL::TVector2< T >::y.

template<typename T >
TVector2< T > & BALL::TVector2< T >::normalize (  )  throw (Exception::DivisionByZero) [inline]

Normalize the vector. The vector is scaled with its length: $\{x|y|z\} *= \sqrt{x^2 + y^2}$.

Returns:
T, a reference to the normalized vector
Exceptions:
DivisionByZero if the length of the vector is 0

References BALL::Maths::isZero(), BALL::TVector2< T >::x, and BALL::TVector2< T >::y.

template<typename T >
BALL_INLINE bool BALL::TVector2< T >::operator!= ( const TVector2< T > &  vector  )  const [inline]

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

References BALL::Maths::isNotEqual(), BALL::TVector2< T >::x, and BALL::TVector2< T >::y.

template<typename T>
BALL_INLINE T BALL::TVector2< T >::operator* ( const TVector2< T > &  vector  )  const [inline]

Dot product. Return the dot product of this vector and vector.

References BALL::TVector2< T >::x, and BALL::TVector2< T >::y.

template<typename T>
BALL_INLINE TVector2< T > BALL::TVector2< T >::operator* ( const T &  scalar  )  const [inline]

Scalar product. Return TVector2(x * scalar, y * scalar). The symmetric case is a global function.

Parameters:
scalar,the scalar to multiply by
Returns:
TVector2, the scalar product of this vector and scalar

References BALL::TVector2< T >::x, and BALL::TVector2< T >::y.

template<typename T>
BALL_INLINE TVector2< T > & BALL::TVector2< T >::operator*= ( const T &  scalar  )  [inline]

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

Parameters:
scalar the to multiply by
Returns:
TVector2&, {*this}

References BALL::TVector2< T >::x, and BALL::TVector2< T >::y.

template<typename T >
BALL_INLINE TVector2< T > BALL::TVector2< T >::operator+ ( const TVector2< T > &  b  )  const [inline]
template<typename T >
BALL_INLINE const TVector2< T > & BALL::TVector2< T >::operator+ (  )  const [inline]

Positive sign.

template<typename T >
BALL_INLINE TVector2< T > & BALL::TVector2< T >::operator+= ( const TVector2< T > &  vector  )  [inline]

Add a vector to this vector. Add the components of vector to this vector.

Parameters:
vector the vector to add
Returns:
TVector2&, {*this}

References BALL::TVector2< T >::x, and BALL::TVector2< T >::y.

template<typename T >
BALL_INLINE TVector2< T > BALL::TVector2< T >::operator- ( const TVector2< T > &  b  )  const [inline]
template<typename T >
BALL_INLINE TVector2< T > BALL::TVector2< T >::operator- (  )  const [inline]

Negative sign.

References BALL::TVector2< T >::x, and BALL::TVector2< T >::y.

template<typename T >
BALL_INLINE TVector2< T > & BALL::TVector2< T >::operator-= ( const TVector2< T > &  vector  )  [inline]

Subtract a vector from this vector.

Parameters:
vector the vector to subtract
Returns:
TVector2&, {*this}

References BALL::TVector2< T >::x, and BALL::TVector2< T >::y.

template<typename T>
TVector2< T > BALL::TVector2< T >::operator/ ( const T &  lambda  )  const throw (Exception::DivisionByZero) [inline]

Fraction of a vector. Return TVector2(x / lambda, y / lambda).

Parameters:
lambda the scalar value to divide by
Returns:
TVector2&
Exceptions:
Exception::DivisionByZero if lambda == (T)0
template<typename T>
TVector2< T > & BALL::TVector2< T >::operator/= ( const T &  lambda  )  throw (Exception::DivisionByZero) [inline]

Divide a vector by a scalar.

Parameters:
lambda the scalar value to divide by
Returns:
TVector2&, {*this}
Exceptions:
Exception::DivisionByZero if lambda == (T)0
template<typename T>
BALL_INLINE TVector2< T > & BALL::TVector2< T >::operator= ( const T *  ptr  )  throw (Exception::NullPointer) [inline]

Array assignment operator. Assigns the first two elements of an array to the vector components.

Parameters:
ptr the array
Exceptions:
NullPointer if ptr == 0
template<typename T>
BALL_INLINE TVector2< T > & BALL::TVector2< T >::operator= ( const T &  value  )  [inline]

Assignment operator. Assign a constant value to the two vector components.

Parameters:
value the constant to assign to x, y

References BALL::TVector2< T >::x, and BALL::TVector2< T >::y.

template<typename T >
BALL_INLINE TVector2< T > & BALL::TVector2< T >::operator= ( const TVector2< T > &  v  )  [inline]

Assignment operator. Assign the vector components from another vector.

Parameters:
v the vector to assign from

References BALL::TVector2< T >::x, and BALL::TVector2< T >::y.

template<typename T >
BALL_INLINE bool BALL::TVector2< T >::operator== ( const TVector2< T > &  vector  )  const [inline]

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

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

References BALL::Maths::isEqual(), BALL::TVector2< T >::x, and BALL::TVector2< T >::y.

template<typename T >
BALL_INLINE const T & BALL::TVector2< T >::operator[] ( Position  position  )  const throw (Exception::IndexOverflow) [inline]

Constant array-like access to the components.

Exceptions:
Exception::IndexOverflow if index > 1
template<typename T >
BALL_INLINE T & BALL::TVector2< T >::operator[] ( Position  position  )  throw (Exception::IndexOverflow) [inline]

Mutable array-like access to the components.

Exceptions:
Exception::IndexOverflow if index > 1
template<typename T >
void BALL::TVector2< T >::persistentRead ( PersistenceManager pm  )  throw (Exception::GeneralException) [inline, virtual]

Persistent reading. Reads a TVector2 object from a persistent stream.

Parameters:
pm the persistence manager

Reimplemented from BALL::PersistentObject.

template<typename T >
void BALL::TVector2< T >::persistentWrite ( PersistenceManager pm,
const char *  name = 0 
) const throw (Exception::GeneralException) [inline, virtual]

Persistent writing. Writes a TVector2 object to a persistent stream.

Parameters:
pm the persistence manager

Reimplemented from BALL::PersistentObject.

template<typename T>
BALL_INLINE void BALL::TVector2< T >::set ( const TVector2< T > &  vector  )  [inline]

Assign from another TVector2.

Parameters:
vector the TVector2 object to assign from

References BALL::TVector2< T >::x, and BALL::TVector2< T >::y.

template<typename T>
BALL_INLINE void BALL::TVector2< T >::set ( const T &  vx,
const T &  vy 
) [inline]

Assign the vector components.

Parameters:
vx the new x component
vy the new y component

References BALL::TVector2< T >::x, and BALL::TVector2< T >::y.

template<typename T>
BALL_INLINE void BALL::TVector2< T >::set ( const T &  value  )  [inline]

Assign from a scalar. Assign value to the two vector components.

Parameters:
value the new value of the components

References BALL::TVector2< T >::x, and BALL::TVector2< T >::y.

Referenced by BALL::TRegularData2D< ValueType >::clear(), BALL::TFFT2D< ComplexTraits >::getGridCoordinates(), and BALL::operator<<().


Member Data Documentation