BALL::TVector3< T > Class Template Reference
[Three-dimensional vector.]

Generic Three-Dimensional Vector. More...

#include <vector3.h>

Inheritance diagram for BALL::TVector3< T >:
Inheritance graph
[legend]

List of all members.


Public Member Functions

Constructors and Destructors
TVector3 ()
Default constructor.
TVector3 (const T *ptr) throw (Exception::NullPointer)
Array constructor.
TVector3 (const T &value)
Scalar constructor.
TVector3 (const T &vx, const T &vy, const T &vz)
Detailed constructor.
TVector3 (const TVector3 &vector)
Copy constructor.
TVector3 (const T &r, const TAngle< T > &phi, const TAngle< T > &theta)
Spherical polar coordinate constructor.
~TVector3 ()
Destructor.
void clear ()
Clear method The values are set to 0.
Arithmetic operators
const TVector3 & operator+ () const
Positive sign.
TVector3 operator- () const
Negative sign.
TVector3 operator+ (const TVector3 &b) const
Addition.
TVector3 operator- (const TVector3 &b) const
Subtraction.
TVector3 & operator+= (const TVector3 &vector)
Add a vector to this vector.
TVector3 & operator-= (const TVector3 &vector)
Subtract a vector from this vector.
TVector3 operator* (const T &scalar) const
Scalar product.
TVector3 & operator*= (const T &scalar)
Multiply by a scalar.
TVector3 operator/ (const T &lambda) const throw (Exception::DivisionByZero)
Fraction of a vector.
TVector3 & operator/= (const T &lambda) throw (Exception::DivisionByZero)
Divide a vector by a scalar.
T operator* (const TVector3 &vector) const
Dot product.
TVector3 operator% (const TVector3 &vector) const
Cross product.
TVector3 & operator%= (const TVector3 &vector)
Assign to the cross product.
Predicates
bool operator== (const TVector3 &vector) const
Equality operator.
bool operator!= (const TVector3 &vector) const
Inequality operator.
bool operator< (const TVector3 &vector) const
Needed for MSVC.
bool isZero () const
Zero predicate.
bool isOrthogonalTo (const TVector3 &vector) const
Orthogonality predicate.
Storable Interface
void write (PersistenceManager &pm) const
Persistent stream writing.
bool read (PersistenceManager &pm)
Persistent stream reading.
Debugging and Diagnostics
void dump (std::ostream &s=std::cout, Size depth=0) const
Internal state dump.
bool isValid () const
Test if instance is valid.

Public Attributes

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

T x
x component of the vector
T y
y component of the vector
T z
z component of the vector

Assignment

void set (const T *ptr) throw (Exception::NullPointer)
Assign from an array.
void set (const T &value)
Assign from a scalar.
void set (const T &vx, const T &vy, const T &vz)
Assign the vector components.
void set (const TVector3 &vector)
Assign from another TVector3.
void set (const T &r, const TAngle< T > &phi, const TAngle< T > &theta)
Assign from spherical polar coordinates.
TVector3 & operator= (const TVector3 &v)
Assignment operator.
TVector3 & operator= (T value)
Assignment operator.
TVector3 & operator= (const T *ptr) throw (Exception::NullPointer)
Array assignment operator.
void get (T *ptr) const throw (Exception::NullPointer)
Assign to an array.
void get (T &x, T &y, T &z) const
Assign to three variables of type T.
void get (TVector3 &vector) const
Assign to another Vector3.
void get (T &r, TAngle< T > &phi, TAngle< T > &theta) const
Assign to polar coordinates.
void swap (TVector3 &vector)
Swap the contents of two vectors.
T getLength () const
Return the length of the vector.
T getSquareLength () const
Return the squared length of the vector.
TVector3 & normalize () throw (Exception::DivisionByZero)
Normalize the vector.
TVector3 & negate ()
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.
static const TVector3 & getZero ()
Return a vector with all components 0.
static const TVector3 & getUnit ()
Return a vector with all components 1.

Geometric properties

T getDistance (const TVector3 &vector) const
Return the distance to another vector.
T getSquareDistance (const TVector3 &vector) const
Return the squared distance to another vector.
TAngle< T > getAngle (const TVector3 &vector) const throw (Exception::DivisionByZero)
Return the enclosed angle of two vectors.
TVector3 getOrthogonalProjection (const TVector3 &direction) const
Return the orthogonal projection of this vector onto another.
static TVector3 getPerpendicularNormalization (const TVector3 &a, const TVector3 &b, const TVector3 &c)
Return the perpendicular normalization of the vector.
static T getTripleProduct (const TVector3< T > &a, const TVector3< T > &b, const TVector3< T > &c)
Triple product of three vectors.

Detailed Description

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

Generic Three-Dimensional Vector.

Constructor & Destructor Documentation

template<typename T >
BALL::TVector3< T >::TVector3 ( )

Default constructor.

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

Referenced by BALL::TVector3< T >::operator%().

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

Array constructor.

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

Parameters:
ptr the array to construct from
Exceptions:
NullPointer if ptr == 0

template<typename T>
BALL::TVector3< T >::TVector3 ( 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

template<typename T>
BALL::TVector3< T >::TVector3 ( const T & vx,
const T & vy,
const T & vz
)

Detailed constructor.

Create a new TVector3 object from three variables of type T.

Parameters:
vx assigned to x
vy assigned to y
vz assigned to z

template<typename T>
BALL::TVector3< T >::TVector3 ( const TVector3< T > & vector )

Copy constructor.

Create a new TVector3 object from another.

Parameters:
vector the TVector3 object to be copied

template<typename T>
BALL::TVector3< T >::TVector3 ( const T & r,
const TAngle< T > & phi,
const TAngle< T > & theta
)

Spherical polar coordinate constructor.

Create a TVector3 object and set its coordinates to the point described by the three spherical polar coordinates r (radius), phi (azimuth), and theta (co-latitude).

See also:
set(const T& r, const TAngle<T>& phi, const TAngle<T>& theta)
Parameters:
r the radius
phi the azimuth
theta the co-latitude

template<typename T >
BALL::TVector3< T >::~TVector3 ( )

Destructor.

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


Member Function Documentation

template<typename T >
void BALL::TVector3< 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

References BALL::TVector3< T >::x, BALL::TVector3< T >::y, and BALL::TVector3< T >::z.

template<typename T>
void BALL::TVector3< T >::get ( T & r,
TAngle< T > & phi,
TAngle< T > & theta
) const

Assign to polar coordinates.

Sets r, phi, and theta to the coordinates of the vector in spherical polar coordinates.

Parameters:
r the radius (returned)
phi the azimuth (returned)
theta the co-latitude (returned)

References BALL::TVector3< T >::x, BALL::TVector3< T >::y, and BALL::TVector3< T >::z.

template<typename T>
void BALL::TVector3< T >::get ( TVector3< T > & vector ) const

Assign to another Vector3.

Assigns the vector components to another vector.

Parameters:
vector the vector to be assigned to

References BALL::TVector3< T >::x, BALL::TVector3< T >::y, and BALL::TVector3< T >::z.

template<typename T>
void BALL::TVector3< T >::get ( T & x,
T & y,
T & z
) const

Assign to three variables of type T.

Parameters:
x the x component
y the y component
z the z component

References BALL::TVector3< T >::x, BALL::TVector3< T >::y, and BALL::TVector3< T >::z.

template<typename T>
void BALL::TVector3< T >::get ( T * ptr ) const throw (Exception::NullPointer)

Assign to an array.

Sets the first three array elements pointed to by ptr to the values of the three vector components.

Parameters:
ptr the array
Exceptions:
NullPointer if ptr == 0

template<typename T >
TAngle< T > BALL::TVector3< T >::getAngle ( const TVector3< T > & vector ) const throw (Exception::DivisionByZero)

Return the enclosed angle of two vectors.

Exceptions:
Exception::DivisionByZero if the product of the squared lengths of the two vectors equals (T)0

Referenced by BALL::GetAngle().

template<typename T >
T BALL::TVector3< T >::getLength ( ) const

Return the length of the vector.

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

Returns:
T, the vector length

References BALL::TVector3< T >::x, BALL::TVector3< T >::y, and BALL::TVector3< T >::z.

Referenced by BALL::TQuaternion< T >::fromAxisAngle().

template<typename T >
TVector3< T > BALL::TVector3< T >::getOrthogonalProjection ( const TVector3< T > & direction ) const

Return the orthogonal projection of this vector onto another.

Parameters:
direction the vector to project onto

template<typename T >
TVector3< T > BALL::TVector3< T >::getPerpendicularNormalization ( const TVector3< T > & a,
const TVector3< T > & b,
const TVector3< T > & c
) [static]

Return the perpendicular normalization of the vector.

Parameters:
a 1st vector
b 2nd vector
c 3rd vector
Returns:
TVector3 the perpendicular normalization

References BALL::TVector3< T >::x, BALL::TVector3< T >::y, and BALL::TVector3< T >::z.

template<typename T >
T BALL::TVector3< T >::getSquareLength ( ) const

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 + z^2$

References BALL::TVector3< T >::x, BALL::TVector3< T >::y, and BALL::TVector3< T >::z.

Referenced by BALL::GetAngle().

template<typename T>
T BALL::TVector3< T >::getTripleProduct ( const TVector3< T > & a,
const TVector3< T > & b,
const TVector3< T > & c
) [static]

Triple product of three vectors.

Calculate the parallelepipedal product of three vectors.

Parameters:
a first vector
b second vector
v third vector
Returns:
T the triple product

References BALL::TVector3< T >::x, BALL::TVector3< T >::y, and BALL::TVector3< T >::z.

Referenced by BALL::GetDistance().

template<typename T >
const TVector3< T > & BALL::TVector3< T >::getUnit ( ) [static]

Return a vector with all components 1.

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

template<typename T >
bool BALL::TVector3< T >::isValid ( ) const

Test if instance is valid.

Always returns true.

Returns:
bool true

template<typename T >
bool BALL::TVector3< T >::isZero ( ) const

Zero predicate.

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

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

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

template<typename T >
TVector3< T > & BALL::TVector3< T >::negate ( )

Negate the vector.

Negate the three components of the vector

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

References BALL::TVector3< T >::x, BALL::TVector3< T >::y, and BALL::TVector3< T >::z.

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

Normalize the vector.

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

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

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

Referenced by BALL::GetIntersection(), and BALL::VIEW::Camera::moveForward().

template<typename T >
bool BALL::TVector3< T >::operator!= ( const TVector3< 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

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

template<typename T >
TVector3< T > BALL::TVector3< T >::operator% ( const TVector3< T > & vector ) const

Cross product.

Return the cross product of this vector and vector.

References BALL::TVector3< T >::TVector3(), BALL::TVector3< T >::x, BALL::TVector3< T >::y, and BALL::TVector3< T >::z.

template<typename T >
TVector3< T > & BALL::TVector3< T >::operator%= ( const TVector3< T > & vector )

Assign to the cross product.

Assign the vector to its cross product with another vector.

References BALL::TVector3< T >::x, BALL::TVector3< T >::y, and BALL::TVector3< T >::z.

template<typename T>
T BALL::TVector3< T >::operator* ( const TVector3< T > & vector ) const

Dot product.

Return the dot product of this vector and vector.

References BALL::TVector3< T >::x, BALL::TVector3< T >::y, and BALL::TVector3< T >::z.

template<typename T>
TVector3< T > BALL::TVector3< T >::operator* ( const T & scalar ) const

Scalar product.

Return TVector3(x * scalar, y * scalar, z * scalar).

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

References BALL::TVector3< T >::x, BALL::TVector3< T >::y, and BALL::TVector3< T >::z.

template<typename T>
TVector3< T > & BALL::TVector3< T >::operator*= ( const T & scalar )

Multiply by a scalar.

Multiply all components of the vector by a scalar value.

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

References BALL::TVector3< T >::x, BALL::TVector3< T >::y, and BALL::TVector3< T >::z.

template<typename T >
TVector3< T > & BALL::TVector3< T >::operator+= ( const TVector3< T > & vector )

Add a vector to this vector.

Add the components of vector to this vector.

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

References BALL::TVector3< T >::x, BALL::TVector3< T >::y, and BALL::TVector3< T >::z.

template<typename T >
TVector3< T > & BALL::TVector3< T >::operator-= ( const TVector3< T > & vector )

Subtract a vector from this vector.

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

References BALL::TVector3< T >::x, BALL::TVector3< T >::y, and BALL::TVector3< T >::z.

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

Fraction of a vector.

Return TVector3(x / lambda, y / lambda, z / lambda).

Parameters:
lambda the scalar value to divide by
Returns:
TVector3&
Exceptions:
Exception::DivisionByZero if lambda == (T)0

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

Divide a vector by a scalar.

Parameters:
lambda the scalar value to divide by
Returns:
TVector3&, {*this}
Exceptions:
Exception::DivisionByZero if lambda == (T)0

template<typename T>
TVector3< T > & BALL::TVector3< T >::operator= ( const T * ptr ) throw (Exception::NullPointer)

Array assignment operator.

Assigns the first three elements of an array to the vector components.

Parameters:
ptr the array
Exceptions:
NullPointer if ptr == 0

template<typename T>
TVector3< T > & BALL::TVector3< T >::operator= ( T value )

Assignment operator.

Assign a constant value to all three vector components.

Parameters:
value the constant to assign to x, y, z

References BALL::TVector3< T >::x, BALL::TVector3< T >::y, and BALL::TVector3< T >::z.

template<typename T >
TVector3< T > & BALL::TVector3< T >::operator= ( const TVector3< T > & v )

Assignment operator.

Assign the vector components from another vector.

Parameters:
v the vector to assign from

References BALL::TVector3< T >::x, BALL::TVector3< T >::y, and BALL::TVector3< T >::z.

template<typename T >
bool BALL::TVector3< T >::operator== ( const TVector3< T > & vector ) const

Equality operator.

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

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

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

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

Constant array-like access to the components.

Exceptions:
Exception::IndexOverflow if index > 2

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

Mutable array-like access to the components.

Exceptions:
Exception::IndexOverflow if index > 2

template<typename T>
void BALL::TVector3< T >::set ( const T & r,
const TAngle< T > & phi,
const TAngle< T > & theta
)

Assign from spherical polar coordinates.

The radius describes the distance of the point from the origin.

phi ranges from 0 to $2 \pi$, theta ranges from 0 (north pole, positive z-axis) to $\pi$ (south pole, negative z-axis).
Coordinates are calculated according to the following formulae:

\[ x = r \sin \theta \cos \phi \]

\[ y = r \sin \theta \sin \phi \]

\[ z = r \cos \theta \]

Parameters:
r the radius
phi the azimuth
theta the co-latitude

References BALL::TVector3< T >::x, BALL::TVector3< T >::y, and BALL::TVector3< T >::z.

template<typename T>
void BALL::TVector3< T >::set ( const TVector3< T > & vector )

Assign from another TVector3.

Parameters:
vector the TVector3 object to assign from

References BALL::TVector3< T >::x, BALL::TVector3< T >::y, and BALL::TVector3< T >::z.

template<typename T>
void BALL::TVector3< T >::set ( const T & vx,
const T & vy,
const T & vz
)

Assign the vector components.

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

References BALL::TVector3< T >::x, BALL::TVector3< T >::y, and BALL::TVector3< T >::z.

template<typename T>
void BALL::TVector3< T >::set ( const T & value )

Assign from a scalar.

Assign value to the three vector components.

Parameters:
value the new value of the components

References BALL::TVector3< T >::x, BALL::TVector3< T >::y, and BALL::TVector3< T >::z.

template<typename T>
void BALL::TVector3< T >::set ( const T * ptr ) throw (Exception::NullPointer)

Assign from an array.

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

Parameters:
ptr an array
Exceptions:
Nullpointer if ptr == 0

Referenced by BALL::TRegularData3D< ValueType >::clear(), BALL::TSimpleBox3< T >::get(), BALL::TFFT3D< ComplexTraits >::getGridCoordinates(), BALL::GetIntersection(), and BALL::HashGrid3< Item >::set().

template<typename T >
void BALL::TVector3< T >::swap ( TVector3< T > & vector )

Swap the contents of two vectors.

Parameters:
vector the vector to swap contents with

References BALL::TVector3< T >::x, BALL::TVector3< T >::y, and BALL::TVector3< T >::z.


Generated on Thu Aug 6 18:30:35 2009 for BALL by doxygen 1.5.8