Ion
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
ion::math::Vector< Dimension, T > Class Template Reference

Vector. More...

#include "vector.h"

Inheritance diagram for ion::math::Vector< Dimension, T >:
Collaboration diagram for ion::math::Vector< Dimension, T >:

Public Types

enum  { kDimension = Dimension }
 The dimension of the vector (number of elements). More...
 
typedef T ValueType
 

Public Member Functions

 Vector ()
 The default constructor zero-initializes all elements. More...
 
 Vector (T e0)
 Dimension-specific constructors that are passed individual element values. More...
 
 Vector (T e0, T e1)
 
 Vector (T e0, T e1, T e2)
 
 Vector (T e0, T e1, T e2, T e3)
 
 Vector (const Vector< Dimension-1, T > &v, T s)
 Constructor for a Vector of dimension N from a Vector of dimension N-1 and a scalar of the correct type, assuming N is at least 2. More...
 
template<typename U >
 Vector (const Vector< Dimension, U > &v)
 Copy constructor from a Vector of the same Dimension and any value type that is compatible (via static_cast) with this Vector's type. More...
 
void operator+= (const Vector &v)
 Self-modifying operators. More...
 
void operator-= (const Vector &v)
 
void operator*= (T s)
 
void operator/= (T s)
 
const Vector operator- () const
 Unary negation operator. More...
 
void Set (T e0)
 Sets the vector values. More...
 
void Set (T e0, T e1)
 
void Set (T e0, T e1, T e2)
 
void Set (T e0, T e1, T e2, T e3)
 
Toperator[] (int index)
 Mutable element accessor. More...
 
const Toperator[] (int index) const
 Read-only element accessor. More...
 
TData ()
 Returns a pointer to the data for interfacing with other libraries. More...
 
const TData () const
 
void Print (std::ostream &out, const char tag) const
 This is used for printing Vectors and Points to a stream. More...
 
template<char tag>
void Read (std::istream &in)
 This is used for reading Vectors and Points from a stream. More...
 

Static Public Member Functions

static const Vector Zero ()
 Returns a Vector containing all zeroes. More...
 
static const Vector Fill (T value)
 Returns a Vector with all elements set to the given value. More...
 
static const Vector AxisX ()
 Returns a Vector representing the X axis. More...
 
static const Vector AxisY ()
 Returns a Vector representing the Y axis if it exists. More...
 
static const Vector AxisZ ()
 Returns a Vector representing the Z axis if it exists. More...
 
static const Vector AxisW ()
 Returns a Vector representing the W axis if it exists. More...
 
static bool AreValuesEqual (const VectorBase &v0, const VectorBase &v1)
 Returns true if all values in two instances are equal. More...
 

Protected Member Functions

void Add (const VectorBase &v)
 Derived classes use these protected functions to implement type-safe functions and operators. More...
 
void Subtract (const VectorBase &v)
 Self-modifying subtraction. More...
 
void Multiply (T s)
 Self-modifying multiplication by a scalar. More...
 
void Divide (T s)
 Self-modifying division by a scalar. More...
 
const VectorBase Negation () const
 Unary negation. More...
 

Static Protected Member Functions

static const VectorBase Divide (const VectorBase &v, T s)
 Binary division by a scalar. More...
 
static const VectorBase Product (const VectorBase &v0, const VectorBase &v1)
 Binary component-wise multiplication. More...
 
static const VectorBase Quotient (const VectorBase &v0, const VectorBase &v1)
 Binary component-wise division. More...
 
static const VectorBase Sum (const VectorBase &v0, const VectorBase &v1)
 Binary component-wise addition. More...
 
static const VectorBase Difference (const VectorBase &v0, const VectorBase &v1)
 Binary component-wise subtraction. More...
 
static const VectorBase Scale (const VectorBase &v, T s)
 Binary multiplication by a scalar. More...
 

Friends

template<int D, typename U >
class Point
 Allow Point to convert BaseType to Vector. More...
 
const Vector operator+ (const Vector &v0, const Vector &v1)
 Binary operators. More...
 
const Vector operator- (const Vector &v0, const Vector &v1)
 
const Vector operator* (const Vector &v, T s)
 
const Vector operator* (T s, const Vector &v)
 
const Vector operator* (const Vector &v, const Vector &s)
 
const Vector operator/ (const Vector &v, const Vector &s)
 
const Vector operator/ (const Vector &v, T s)
 
const Vector operator/ (T s, const Vector &v)
 
bool operator== (const Vector &v0, const Vector &v1)
 Exact equality and inequality comparisons. More...
 
bool operator!= (const Vector &v0, const Vector &v1)
 

Detailed Description

template<int Dimension, typename T>
class ion::math::Vector< Dimension, T >

Vector.

Geometric N-dimensional Vector class.

Definition at line 180 of file vector.h.

Member Typedef Documentation

template<int Dimension, typename T>
typedef T ion::math::VectorBase< Dimension, T >::ValueType
inherited

Definition at line 47 of file vector.h.

Member Enumeration Documentation

template<int Dimension, typename T>
anonymous enum
inherited

The dimension of the vector (number of elements).

Enumerator
kDimension 

Definition at line 46 of file vector.h.

Constructor & Destructor Documentation

template<int Dimension, typename T>
ion::math::Vector< Dimension, T >::Vector ( )
inline

The default constructor zero-initializes all elements.

Definition at line 183 of file vector.h.

template<int Dimension, typename T>
ion::math::Vector< Dimension, T >::Vector ( T  e0)
inlineexplicit

Dimension-specific constructors that are passed individual element values.

Definition at line 186 of file vector.h.

template<int Dimension, typename T>
ion::math::Vector< Dimension, T >::Vector ( T  e0,
T  e1 
)
inline

Definition at line 187 of file vector.h.

template<int Dimension, typename T>
ion::math::Vector< Dimension, T >::Vector ( T  e0,
T  e1,
T  e2 
)
inline

Definition at line 188 of file vector.h.

template<int Dimension, typename T>
ion::math::Vector< Dimension, T >::Vector ( T  e0,
T  e1,
T  e2,
T  e3 
)
inline

Definition at line 189 of file vector.h.

template<int Dimension, typename T>
ion::math::Vector< Dimension, T >::Vector ( const Vector< Dimension-1, T > &  v,
T  s 
)
inline

Constructor for a Vector of dimension N from a Vector of dimension N-1 and a scalar of the correct type, assuming N is at least 2.

Definition at line 193 of file vector.h.

template<int Dimension, typename T>
template<typename U >
ion::math::Vector< Dimension, T >::Vector ( const Vector< Dimension, U > &  v)
inlineexplicit

Copy constructor from a Vector of the same Dimension and any value type that is compatible (via static_cast) with this Vector's type.

Definition at line 197 of file vector.h.

Member Function Documentation

template<int Dimension, typename T >
void ion::math::VectorBase< Dimension, T >::Add ( const VectorBase< Dimension, T > &  v)
protectedinherited

Derived classes use these protected functions to implement type-safe functions and operators.

Self-modifying addition.

Definition at line 606 of file vector.h.

Referenced by ion::math::Vector< 4, T >::operator+=().

template<int Dimension, typename T >
bool ion::math::VectorBase< Dimension, T >::AreValuesEqual ( const VectorBase< Dimension, T > &  v0,
const VectorBase< Dimension, T > &  v1 
)
staticinherited

Returns true if all values in two instances are equal.

Definition at line 694 of file vector.h.

template<int Dimension, typename T >
const Vector< Dimension, T > ion::math::Vector< Dimension, T >::AxisW ( )
static

Returns a Vector representing the W axis if it exists.

Definition at line 599 of file vector.h.

template<int Dimension, typename T >
const Vector< Dimension, T > ion::math::Vector< Dimension, T >::AxisX ( )
static

Returns a Vector representing the X axis.

Definition at line 578 of file vector.h.

template<int Dimension, typename T >
const Vector< Dimension, T > ion::math::Vector< Dimension, T >::AxisY ( )
static

Returns a Vector representing the Y axis if it exists.

Definition at line 585 of file vector.h.

template<int Dimension, typename T >
const Vector< Dimension, T > ion::math::Vector< Dimension, T >::AxisZ ( )
static

Returns a Vector representing the Z axis if it exists.

Definition at line 592 of file vector.h.

template<int Dimension, typename T>
T* ion::math::VectorBase< Dimension, T >::Data ( )
inlineinherited

Returns a pointer to the data for interfacing with other libraries.

Definition at line 79 of file vector.h.

template<int Dimension, typename T>
const T* ion::math::VectorBase< Dimension, T >::Data ( ) const
inlineinherited

Definition at line 80 of file vector.h.

template<int Dimension, typename T >
const VectorBase< Dimension, T > ion::math::VectorBase< Dimension, T >::Difference ( const VectorBase< Dimension, T > &  v0,
const VectorBase< Dimension, T > &  v1 
)
staticprotectedinherited

Binary component-wise subtraction.

Definition at line 667 of file vector.h.

template<int Dimension, typename T >
void ion::math::VectorBase< Dimension, T >::Divide ( T  s)
protectedinherited

Self-modifying division by a scalar.

Definition at line 624 of file vector.h.

Referenced by ion::math::Vector< 4, T >::operator/=().

template<int Dimension, typename T >
const VectorBase< Dimension, T > ion::math::VectorBase< Dimension, T >::Divide ( const VectorBase< Dimension, T > &  v,
T  s 
)
staticprotectedinherited

Binary division by a scalar.

Definition at line 685 of file vector.h.

template<int Dimension, typename T>
static const Vector ion::math::Vector< Dimension, T >::Fill ( T  value)
inlinestatic

Returns a Vector with all elements set to the given value.

Definition at line 204 of file vector.h.

template<int Dimension, typename T >
void ion::math::VectorBase< Dimension, T >::Multiply ( T  s)
protectedinherited

Self-modifying multiplication by a scalar.

Definition at line 618 of file vector.h.

Referenced by ion::math::Vector< 4, T >::operator*=().

template<int Dimension, typename T >
const VectorBase< Dimension, T > ion::math::VectorBase< Dimension, T >::Negation ( ) const
protectedinherited

Unary negation.

Definition at line 632 of file vector.h.

Referenced by ion::math::Vector< 4, T >::operator-().

template<int Dimension, typename T>
void ion::math::Vector< Dimension, T >::operator*= ( T  s)
inline

Definition at line 218 of file vector.h.

template<int Dimension, typename T>
void ion::math::Vector< Dimension, T >::operator+= ( const Vector< Dimension, T > &  v)
inline

Self-modifying operators.

Definition at line 216 of file vector.h.

template<int Dimension, typename T>
const Vector ion::math::Vector< Dimension, T >::operator- ( ) const
inline

Unary negation operator.

Definition at line 222 of file vector.h.

template<int Dimension, typename T>
void ion::math::Vector< Dimension, T >::operator-= ( const Vector< Dimension, T > &  v)
inline

Definition at line 217 of file vector.h.

template<int Dimension, typename T>
void ion::math::Vector< Dimension, T >::operator/= ( T  s)
inline

Definition at line 219 of file vector.h.

template<int Dimension, typename T>
T& ion::math::VectorBase< Dimension, T >::operator[] ( int  index)
inlineinherited

Mutable element accessor.

Definition at line 56 of file vector.h.

References DCHECK.

template<int Dimension, typename T>
const T& ion::math::VectorBase< Dimension, T >::operator[] ( int  index) const
inlineinherited

Read-only element accessor.

Definition at line 66 of file vector.h.

References DCHECK.

template<int Dimension, typename T>
void ion::math::VectorBase< Dimension, T >::Print ( std::ostream &  out,
const char  tag 
) const
inlineinherited

This is used for printing Vectors and Points to a stream.

Definition at line 83 of file vector.h.

Referenced by ion::math::operator<<().

template<int Dimension, typename T >
const VectorBase< Dimension, T > ion::math::VectorBase< Dimension, T >::Product ( const VectorBase< Dimension, T > &  v0,
const VectorBase< Dimension, T > &  v1 
)
staticprotectedinherited

Binary component-wise multiplication.

Definition at line 640 of file vector.h.

template<int Dimension, typename T >
const VectorBase< Dimension, T > ion::math::VectorBase< Dimension, T >::Quotient ( const VectorBase< Dimension, T > &  v0,
const VectorBase< Dimension, T > &  v1 
)
staticprotectedinherited

Binary component-wise division.

Definition at line 649 of file vector.h.

template<int Dimension, typename T>
template<char tag>
void ion::math::VectorBase< Dimension, T >::Read ( std::istream &  in)
inlineinherited

This is used for reading Vectors and Points from a stream.

Definition at line 95 of file vector.h.

References ion::base::GetExpectedChar().

template<int Dimension, typename T >
const VectorBase< Dimension, T > ion::math::VectorBase< Dimension, T >::Scale ( const VectorBase< Dimension, T > &  v,
T  s 
)
staticprotectedinherited

Binary multiplication by a scalar.

Definition at line 676 of file vector.h.

template<int Dimension, typename T >
void ion::math::VectorBase< Dimension, T >::Set ( T  e0)
inherited

Sets the vector values.

Definition at line 464 of file vector.h.

References ION_STATIC_ASSERT.

Referenced by ion::math::Rotation< T >::Rotation(), and ion::math::ScaleRangeNonUniformly().

template<int Dimension, typename T >
void ion::math::VectorBase< Dimension, T >::Set ( T  e0,
T  e1 
)
inherited

Definition at line 470 of file vector.h.

References ION_STATIC_ASSERT.

template<int Dimension, typename T >
void ion::math::VectorBase< Dimension, T >::Set ( T  e0,
T  e1,
T  e2 
)
inherited

Definition at line 477 of file vector.h.

References ION_STATIC_ASSERT.

template<int Dimension, typename T >
void ion::math::VectorBase< Dimension, T >::Set ( T  e0,
T  e1,
T  e2,
T  e3 
)
inherited

Definition at line 485 of file vector.h.

References ION_STATIC_ASSERT.

template<int Dimension, typename T >
void ion::math::VectorBase< Dimension, T >::Subtract ( const VectorBase< Dimension, T > &  v)
protectedinherited

Self-modifying subtraction.

Definition at line 612 of file vector.h.

Referenced by ion::math::Vector< 4, T >::operator-=().

template<int Dimension, typename T >
const VectorBase< Dimension, T > ion::math::VectorBase< Dimension, T >::Sum ( const VectorBase< Dimension, T > &  v0,
const VectorBase< Dimension, T > &  v1 
)
staticprotectedinherited

Binary component-wise addition.

Definition at line 658 of file vector.h.

template<int Dimension, typename T>
static const Vector ion::math::Vector< Dimension, T >::Zero ( )
inlinestatic

Returns a Vector containing all zeroes.

Definition at line 201 of file vector.h.

Referenced by ion::math::Range< Dimension, T >::GetSize(), ion::math::Normalized(), and ion::math::operator*().

Friends And Related Function Documentation

template<int Dimension, typename T>
bool operator!= ( const Vector< Dimension, T > &  v0,
const Vector< Dimension, T > &  v1 
)
friend

Definition at line 255 of file vector.h.

template<int Dimension, typename T>
const Vector operator* ( const Vector< Dimension, T > &  v,
T  s 
)
friend

Definition at line 231 of file vector.h.

template<int Dimension, typename T>
const Vector operator* ( T  s,
const Vector< Dimension, T > &  v 
)
friend

Definition at line 234 of file vector.h.

template<int Dimension, typename T>
const Vector operator* ( const Vector< Dimension, T > &  v,
const Vector< Dimension, T > &  s 
)
friend

Definition at line 238 of file vector.h.

template<int Dimension, typename T>
const Vector operator+ ( const Vector< Dimension, T > &  v0,
const Vector< Dimension, T > &  v1 
)
friend

Binary operators.

Definition at line 225 of file vector.h.

template<int Dimension, typename T>
const Vector operator- ( const Vector< Dimension, T > &  v0,
const Vector< Dimension, T > &  v1 
)
friend

Definition at line 228 of file vector.h.

template<int Dimension, typename T>
const Vector operator/ ( const Vector< Dimension, T > &  v,
const Vector< Dimension, T > &  s 
)
friend

Definition at line 241 of file vector.h.

template<int Dimension, typename T>
const Vector operator/ ( const Vector< Dimension, T > &  v,
T  s 
)
friend

Definition at line 244 of file vector.h.

template<int Dimension, typename T>
const Vector operator/ ( T  s,
const Vector< Dimension, T > &  v 
)
friend

Definition at line 247 of file vector.h.

template<int Dimension, typename T>
bool operator== ( const Vector< Dimension, T > &  v0,
const Vector< Dimension, T > &  v1 
)
friend

Exact equality and inequality comparisons.

Definition at line 252 of file vector.h.

template<int Dimension, typename T>
template<int D, typename U >
friend class Point
friend

Allow Point to convert BaseType to Vector.

Definition at line 271 of file vector.h.


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