Main Page | Modules | Namespace List | Class Hierarchy | Class List | Namespace Members | Class Members

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

Generic Two-Dimensional Vector. More...

#include <vector2.h>

Inheritance diagram for TVector2< T >:

PersistentObject Object AutoDeletable List of all members.

Assignment

void set (const T &value) throw ()
 Assign from a scalar.
void set (const T &vx, const T &vy) throw ()
 Assign the vector components.
void set (const TVector2 &vector) throw ()
 Assign from another TVector2.
TVector2operator= (const TVector2 &v) throw ()
 Assignment operator.
TVector2operator= (const T &value) throw ()
 Assignment operator.
TVector2operator= (const T *ptr) throw (Exception::NullPointer)
 Array assignment operator.
getLength () const throw ()
 Return the length of the vector.
getSquareLength () const throw ()
 Return the squared length of the vector.
TVector2normalize () throw (Exception::DivisionByZero)
 Normalize the vector.
TVector2negate () throw ()
 Negate the vector.
T & operator[] (Position position) throw (Exception::IndexOverflow)
 Mutable array-like access to the components.
const T & operator[] (Position position) const throw (Exception::IndexOverflow)
 Constant array-like access to the components.
const TVector2getZero () throw ()
 Return a vector with all components 0.
const TVector2getUnit () throw ()
 Return a vector with all components 1.

Public Member Functions

Constructors and Destructors
 TVector2 () throw ()
 Default constructor.
 TVector2 (const T &value) throw ()
 Scalar constructor.
 TVector2 (const T &vx, const T &vy) throw ()
 Detailed constructor.
 TVector2 (const TVector2 &vector) throw ()
 Copy constructor.
 TVector2 (const T *ptr) throw (Exception::NullPointer)
 Array constructor.
virtual ~TVector2 () throw ()
 Destructor.
virtual void clear () throw ()
 Clear method The values are set to 0.
Persistence
virtual void persistentWrite (PersistenceManager &pm, const char *name=0) const throw (Exception::GeneralException)
 Persistent writing.
virtual void persistentRead (PersistenceManager &pm) throw (Exception::GeneralException)
 Persistent reading.
Arithmetic operators
const TVector2operator+ () const throw ()
 Positive sign.
TVector2 operator- () const throw ()
 Negative sign.
TVector2 operator+ (const TVector2 &b) const throw ()
 Addition.
TVector2 operator- (const TVector2 &b) const throw ()
 Subtraction.
TVector2operator+= (const TVector2 &vector) throw ()
 Add a vector to this vector.
TVector2operator-= (const TVector2 &vector) throw ()
 Subtract a vector from this vector.
TVector2 operator * (const T &scalar) const throw ()
 Scalar product.
TVector2operator *= (const T &scalar) throw ()
 Multiply by a scalar.
TVector2 operator/ (const T &lambda) const throw (Exception::DivisionByZero)
 Fraction of a vector.
TVector2operator/= (const T &lambda) throw (Exception::DivisionByZero)
 Divide a vector by a scalar.
operator * (const TVector2 &vector) const throw ()
 Dot product.
Geometric properties
getDistance (const TVector2 &vector) const throw ()
 Return the distance to another vector.
getSquareDistance (const TVector2 &vector) const throw ()
 Return the squared distance to another vector.
Predicates
bool operator== (const TVector2 &vector) const throw ()
 Equality operator.
bool operator!= (const TVector2 &vector) const throw ()
 Inequality operator.
bool isZero () const throw ()
 Zero predicate.
bool isOrthogonalTo (TVector2 &vector) const throw ()
 Orthogonality predicate.
Debugging and Diagnostics
void dump (std::ostream &s=std::cout, Size depth=0) const throw ()
 Internal state dump.
bool isValid () const throw ()
 Test if instance is valid.

Public Attributes

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

x
 x component of the vector
y
 y component of the vector

Detailed Description

template<typename T>
class TVector2< T >

Generic Two-Dimensional Vector.


Constructor & Destructor Documentation

template<typename T>
TVector2< T >::TVector2  )  throw ()
 

Default constructor.

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

template<typename T>
TVector2< T >::TVector2 const T &  value  )  throw () [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>
TVector2< T >::TVector2 const T &  vx,
const T &  vy
throw ()
 

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>
TVector2< T >::TVector2 const TVector2< T > &  vector  )  throw ()
 

Copy constructor.

Create a new TVector2 object from another.

Parameters:
vector the TVector2 object to be copied

template<typename T>
TVector2< T >::TVector2 const T *  ptr  )  throw (Exception::NullPointer)
 

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>
TVector2< T >::~TVector2  )  throw () [virtual]
 

Destructor.

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


Member Function Documentation

template<typename T>
void TVector2< T >::clear  )  throw () [virtual]
 

Clear method The values are set to 0.

Reimplemented from Object.

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

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

template<typename T>
T TVector2< T >::getDistance const TVector2< T > &  vector  )  const throw ()
 

Return the distance to another vector.

template<typename T>
T TVector2< T >::getLength  )  const throw ()
 

Return the length of the vector.

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

Returns:
T, the vector length

template<typename T>
T TVector2< T >::getSquareDistance const TVector2< T > &  vector  )  const throw ()
 

Return the squared distance to another vector.

template<typename T>
T TVector2< T >::getSquareLength  )  const throw ()
 

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$

template<typename T>
const TVector2< T > & TVector2< T >::getUnit  )  throw () [static]
 

Return a vector with all components 1.

Returns:
: TVector4(1, 1, 1, 1)

template<typename T>
const TVector2< T > & TVector2< T >::getZero  )  throw () [static]
 

Return a vector with all components 0.

template<typename T>
bool TVector2< T >::isOrthogonalTo TVector2< T > &  vector  )  const throw ()
 

Orthogonality predicate.

template<typename T>
bool TVector2< T >::isValid  )  const throw () [virtual]
 

Test if instance is valid.

Always returns true.

Returns:
bool true

Reimplemented from Object.

template<typename T>
bool TVector2< T >::isZero  )  const throw ()
 

Zero predicate.

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

template<typename T>
TVector2< T > & TVector2< T >::negate  )  throw ()
 

Negate the vector.

Negate the two components of the vector

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

template<typename T>
TVector2< T > & TVector2< T >::normalize  )  throw (Exception::DivisionByZero)
 

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

template<typename T>
T TVector2< T >::operator * const TVector2< T > &  vector  )  const throw ()
 

Dot product.

Return the dot product of this vector and vector.

template<typename T>
TVector2< T > TVector2< T >::operator * const T &  scalar  )  const throw ()
 

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

template<typename T>
TVector2< T > & TVector2< T >::operator *= const T &  scalar  )  throw ()
 

Multiply by a scalar.

Multiply all components of the vector by a scalar value.

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

template<typename T>
bool TVector2< T >::operator!= const TVector2< T > &  vector  )  const throw ()
 

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

template<typename T>
TVector2< T > TVector2< T >::operator+ const TVector2< T > &  b  )  const throw ()
 

Addition.

template<typename T>
const TVector2< T > & TVector2< T >::operator+  )  const throw ()
 

Positive sign.

template<typename T>
TVector2< T > & TVector2< T >::operator+= const TVector2< T > &  vector  )  throw ()
 

Add a vector to this vector.

Add the components of vector to this vector.

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

template<typename T>
TVector2< T > TVector2< T >::operator- const TVector2< T > &  b  )  const throw ()
 

Subtraction.

template<typename T>
TVector2< T > TVector2< T >::operator-  )  const throw ()
 

Negative sign.

template<typename T>
TVector2< T > & TVector2< T >::operator-= const TVector2< T > &  vector  )  throw ()
 

Subtract a vector from this vector.

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

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

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 > & TVector2< T >::operator/= const T &  lambda  )  throw (Exception::DivisionByZero)
 

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>
TVector2< T > & TVector2< T >::operator= const T *  ptr  )  throw (Exception::NullPointer)
 

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>
TVector2< T > & TVector2< T >::operator= const T &  value  )  throw ()
 

Assignment operator.

Assign a constant value to the two vector components.

Parameters:
value the constant to assign to x, y

template<typename T>
TVector2< T > & TVector2< T >::operator= const TVector2< T > &  v  )  throw ()
 

Assignment operator.

Assign the vector components from another vector.

Parameters:
v the vector to assign from

template<typename T>
bool TVector2< T >::operator== const TVector2< T > &  vector  )  const throw ()
 

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

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

Constant array-like access to the components.

Exceptions:
Exception::IndexOverflow if index > 1

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

Mutable array-like access to the components.

Exceptions:
Exception::IndexOverflow if index > 1

template<typename T>
void TVector2< T >::persistentRead PersistenceManager pm  )  throw (Exception::GeneralException) [virtual]
 

Persistent reading.

Reads a TVector2 object from a persistent stream.

Parameters:
pm the persistence manager

Reimplemented from PersistentObject.

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

Persistent writing.

Writes a TVector2 object to a persistent stream.

Parameters:
pm the persistence manager

Reimplemented from PersistentObject.

template<typename T>
void TVector2< T >::set const TVector2< T > &  vector  )  throw ()
 

Assign from another TVector2.

Parameters:
vector the TVector2 object to assign from

template<typename T>
void TVector2< T >::set const T &  vx,
const T &  vy
throw ()
 

Assign the vector components.

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

template<typename T>
void TVector2< T >::set const T &  value  )  throw ()
 

Assign from a scalar.

Assign value to the two vector components.

Parameters:
value the new value of the components