HyperspaceExplorer 0.7.1
|
Vector and Matrix algebra. More...
Classes | |
class | Matrix |
Matrix<D, N>: a D x D matrix of numbers of type N. More... | |
class | MultiDimensionalVector |
A D -dimensionally nested std::vector of objects of type T . More... | |
class | MultiDimensionalVector< T, 1 > |
Specialization of NestedVector<T, D> for D = 1. More... | |
struct | NumAxes |
Determine number of rotation axes in D-dimensional space. More... | |
struct | NumAxes< 0 > |
Specialization for zero-dimensional space (no rotation possible) More... | |
struct | NumAxes< 1 > |
Specialization for one-dimensional space (no rotation possible) More... | |
class | RotationAxes |
How to generate a Rotation matrix from a Rotation component. More... | |
class | RotationAxes< 3 > |
Rotation axes in three dimensions, manually specified. More... | |
class | RotationAxes< 4 > |
Rotation axes in four dimensions, manually specified. More... | |
class | RotationBase |
Interface Rotation<D, N> implements. More... | |
class | Rotation |
Rotation in D-dimensional space defined by angles about the main axes. More... | |
class | Vector |
Vector<D, N>: a D-dimensional vector of numbers of type N. More... | |
Functions | |
template<unsigned D, typename N > | |
Matrix< D, N > | operator* (const Matrix< D, N > &A, const Matrix< D, N > &B) |
Matrix multiplication. | |
template<unsigned D, typename N > | |
Vector< D, N > | operator* (const Matrix< D, N > &M, const Vector< D, N > &V) |
Apply the Matrix on a vector. | |
template<unsigned D, typename N > | |
std::ostream & | operator<< (std::ostream &, const Matrix< D, N > &) |
Matrix output operator. | |
template<typename T , unsigned D> | |
std::ostream & | operator<< (std::ostream &s, MultiDimensionalVector< T, D > const &v) |
Print a MultiDimensionalVector<T, D> on a std::ostream. | |
template<typename T , unsigned D> | |
MultiDimensionalVector< T, D > ::iterator | find (MultiDimensionalVector< T, D-1 > const &find_me, MultiDimensionalVector< T, D > &v) |
Find an element in a MultiDimensionalVector. | |
template<typename T1 , typename T2 , unsigned D, typename Function > | |
Function | for_each (MultiDimensionalVector< T1, D > &v1, MultiDimensionalVector< T2, D > &v2, Function f) |
Loop over two MultiDimensionalVector s simultaneously, applying a function on both elements. | |
template<typename T1 , typename T2 , unsigned D, typename Function > | |
Function | for_each (const MultiDimensionalVector< T1, D > &v1, const MultiDimensionalVector< T2, D > &v2, Function f) |
Loop over two MultiDimensionalVector s simultaneously, applying a const function on both elements. | |
template<typename T1 , typename T2 , typename T3 , unsigned D, typename Function > | |
Function | for_each (MultiDimensionalVector< T1, D > &v1, MultiDimensionalVector< T2, D > &v2, MultiDimensionalVector< T3, D > &v3, Function f) |
Loop over three MultiDimensionalVector s simultaneously, applying a function on all elements. | |
template<typename T1 , typename T2 , typename T3 , unsigned D, typename Function > | |
Function | for_each (const MultiDimensionalVector< T1, D > &v1, const MultiDimensionalVector< T2, D > &v2, const MultiDimensionalVector< T3, D > &v3, Function f) |
Loop over three MultiDimensionalVector s simultaneously, applying a const function on all elements. | |
template<typename T > | |
std::ostream & | operator<< (std::ostream &s, MultiDimensionalVector< T, 1 > const &v) |
Print a MultiDimensionalVector<T, 1> on a std::ostream. | |
template<typename T1 , typename T2 , typename Function > | |
Function | for_each (MultiDimensionalVector< T1, 1 > &v1, MultiDimensionalVector< T2, 1 > &v2, Function f) |
Loop over two MultiDimensionalVector s simultaneously, applying a function on both elements. | |
template<typename T1 , typename T2 , typename Function > | |
Function | for_each (const MultiDimensionalVector< T1, 1 > &v1, const MultiDimensionalVector< T2, 1 > &v2, Function f) |
Loop over two MultiDimensionalVector s simultaneously, applying a const function on both elements. | |
template<typename T1 , typename T2 , typename T3 , typename Function > | |
Function | for_each (MultiDimensionalVector< T1, 1 > &v1, MultiDimensionalVector< T2, 1 > &v2, MultiDimensionalVector< T3, 1 > &v3, Function f) |
Loop over three MultiDimensionalVector s simultaneously, applying a function on all elements. | |
template<typename T1 , typename T2 , typename T3 , typename Function > | |
Function | for_each (const MultiDimensionalVector< T1, 1 > &v1, const MultiDimensionalVector< T2, 1 > &v2, const MultiDimensionalVector< T3, 1 > &v3, Function f) |
Loop over three MultiDimensionalVector s simultaneously, applying a const function on all elements. | |
std::ostream & | operator<< (std::ostream &o, const RotationBase &) |
RotationBase output operator. | |
template<unsigned D, typename N > | |
Rotation< D, N > | operator+ (const Rotation< D, N > &A, const Rotation< D, N > &B) |
Returns the sum of two Rotation s. | |
template<unsigned D, typename N > | |
std::ostream & | operator<< (std::ostream &o, const Rotation< D, N > &v) |
Rotation output operator. | |
template<unsigned D, typename N > | |
std::istringstream & | operator>> (std::istringstream &in, Rotation< D, N > &v) |
Rotation input operator. | |
template<typename N > | |
Rotation< 3, N > | makeRotation (N const &r0, N const &r1, N const &r2) |
Generator function for a 3-dimensional Rotation. | |
template<typename N > | |
Rotation< 4, N > | makeRotation (N const &r0, N const &r1, N const &r2, N const &r3, N const &r4, N const &r5) |
Generator function for a 4-dimensional Rotation. | |
template<unsigned D, typename N > | |
Vector< D, N > | operator- (const Vector< D, N > &v) |
Unary minus. | |
template<unsigned D, typename N > | |
Vector< D, N > | operator+ (const Vector< D, N > &x, const Vector< D, N > &y) |
Plus. | |
template<unsigned D, typename N > | |
Vector< D, N > | operator- (const Vector< D, N > &x, const Vector< D, N > &y) |
Binary minus. | |
template<unsigned D, typename N > | |
Vector< D, N > | operator* (const Vector< D, N > &x, const N &s) |
template<unsigned D, typename N > | |
Vector< D, N > | operator* (const N &s, const Vector< D, N > &x) |
template<unsigned D, typename N > | |
N | operator* (const Vector< D, N > &x, const Vector< D, N > &y) |
scalar multiplication between two Vectors (dot product) | |
template<unsigned D, typename N > | |
Vector< D, N > | operator/ (const Vector< D, N > &x, const N &s) |
template<unsigned D, typename N > | |
Vector< D, N > | operator/ (const Vector< D, N > &x, const Vector< D, N > &y) |
divide every component of one vector by same component of another | |
template<unsigned D, typename N > | |
Vector< D, N > | scale (const Vector< D, N > &x, const Vector< D, N > &y) |
multiply every component of one vector with same component of another | |
template<unsigned D, typename N > | |
bool | operator== (const Vector< D, N > &one, const Vector< D, N > &other) |
Comparison operator: Test for equality. | |
template<unsigned D, typename N > | |
bool | operator!= (const Vector< D, N > &one, const Vector< D, N > &other) |
Comparison operator: Test for inequality. | |
template<unsigned D, typename N > | |
bool | operator< (const Vector< D, N > &one, const Vector< D, N > &other) |
Ordering needed to use Vector as key for a std::map. | |
template<unsigned D, typename N > | |
N | sqnorm (const Vector< D, N > &x) |
template<unsigned D, typename N > | |
std::ostream & | operator<< (std::ostream &s, const Vector< D, N > &v) |
Vector output operator. | |
template<unsigned D, typename N > | |
std::istringstream & | operator>> (std::istringstream &in, Vector< D, N > &v) |
Vector input operator. | |
template<typename N > | |
Vector< 3, N > | vcross (Vector< 3, N > a, Vector< 3, N > b) |
Cross product of two 3-Vectors. | |
template<typename N > | |
Vector< 4, N > | vcross (Vector< 4, N > a, Vector< 4, N > b, Vector< 4, N > c) |
Cross product of three 4-Vectors. | |
template<unsigned D, typename N > | |
Vector< D, N > | vnormalize (const Vector< D, N > &x) |
Normalizes a 3-Vector out-of-place. | |
template<typename N > | |
Vector< 2, N > | makeVector (N const &x0, N const &x1) |
Generator function for a 2-dimensional Vector. | |
template<typename N > | |
Vector< 3, N > | makeVector (N const &x0, N const &x1, N const &x2) |
Generator function for a 3-dimensional Vector. | |
template<typename N > | |
Vector< 4, N > | makeVector (N const &x0, N const &x1, N const &x2, N const &x3) |
Generator function for a 4-dimensional Vector. | |
template<typename N > | |
Vector< 5, N > | makeVector (N const &x0, N const &x1, N const &x2, N const &x3, N const &x4) |
Generator function for a 5-dimensional Vector. | |
template<typename N > | |
Vector< 6, N > | makeVector (N const &x0, N const &x1, N const &x2, N const &x3, N const &x4, N const &x5) |
Generator function for a 6-dimensional Vector. | |
template<typename N > | |
Vector< 7, N > | makeVector (N const &x0, N const &x1, N const &x2, N const &x3, N const &x4, N const &x5, N const &x6) |
Generator function for a 7-dimensional Vector. | |
template<typename N > | |
Vector< 8, N > | makeVector (N const &x0, N const &x1, N const &x2, N const &x3, N const &x4, N const &x5, N const &x6, N const &x7) |
Generator function for a 8-dimensional Vector. | |
template<typename N > | |
Vector< 9, N > | makeVector (N const &x0, N const &x1, N const &x2, N const &x3, N const &x4, N const &x5, N const &x6, N const &x7, N const &x8) |
Generator function for a 9-dimensional Vector. | |
template<typename N > | |
Vector< 10, N > | makeVector (N const &x0, N const &x1, N const &x2, N const &x3, N const &x4, N const &x5, N const &x6, N const &x7, N const &x8, N const &x9) |
Generator function for a 10-dimensional Vector. |
Function VecMath::for_each | ( | MultiDimensionalVector< T1, D > & | v1, |
MultiDimensionalVector< T2, D > & | v2, | ||
MultiDimensionalVector< T3, D > & | v3, | ||
Function | f | ||
) |
Loop over three MultiDimensionalVector s simultaneously, applying a function on all elements.
v1 | The MultiDimensionalVector containing the first arguments going into f . |
v2 | The MultiDimensionalVector containing the second arguments going into f . |
v3 | The MultiDimensionalVector containing the third arguments going into f . |
f | The function that is applied on every element of v1 , v2 v2 and v3 . |
T1 | Type of the elements in the first MultiDimensionalVector; type of the first argument to f . |
T2 | Type of the elements in the second MultiDimensionalVector; type of the second argument to f . |
T3 | Type of the elements in the third MultiDimensionalVector; type of the third argument to f . |
D | Dimensionality (nesting depth) of both MultiDimensionalVector s. |
Function | A ternary function object or function taking a T1 , const T1& or T1& as first argument, a T2 , const T2& or T2& as second argument, and a T2 , const T2& or T3& as third argument. |
References for_each(), max_element(), std::min(), min(), and VecMath::MultiDimensionalVector< T, D >::size().
Function VecMath::for_each | ( | const MultiDimensionalVector< T1, D > & | v1, |
const MultiDimensionalVector< T2, D > & | v2, | ||
const MultiDimensionalVector< T3, D > & | v3, | ||
Function | f | ||
) |
Loop over three MultiDimensionalVector s simultaneously, applying a const function on all elements.
v1 | The MultiDimensionalVector containing the first arguments going into f . |
v2 | The MultiDimensionalVector containing the second arguments going into f . |
v3 | The MultiDimensionalVector containing the third arguments going into f . |
f | The function that is applied on every element of v1 , v2 v2 and v3 . |
T1 | Type of the elements in the first MultiDimensionalVector; type of the first argument to f . |
T2 | Type of the elements in the second MultiDimensionalVector; type of the second argument to f . |
T3 | Type of the elements in the third MultiDimensionalVector; type of the third argument to f . |
D | Dimensionality (nesting depth) of both MultiDimensionalVector s. |
Function | A ternary function object or function taking a T1 , const T1& or T1& as first argument, a T2 , const T2& or T2& as second argument, and a T2 , const T2& or T3& as third argument. |
References for_each(), max_element(), std::min(), min(), and VecMath::MultiDimensionalVector< T, D >::size().
Function VecMath::for_each | ( | MultiDimensionalVector< T1, 1 > & | v1, |
MultiDimensionalVector< T2, 1 > & | v2, | ||
Function | f | ||
) |
Loop over two MultiDimensionalVector s simultaneously, applying a function on both elements.
v1 | The MultiDimensionalVector containing the first arguments going into f . |
v2 | The MultiDimensionalVector containing the second arguments going into f . |
f | The function that is applied on every element of v1 and v2 . |
T1 | Type of the elements in the first MultiDimensionalVector; type of the first argument to f . |
T2 | Type of the elements in the second MultiDimensionalVector; type of the second argument to f . |
Function | A binary function object or function taking a T1 , const T1& or T1& as first argument, and a T2 , const T2& or T2& as second argument. |
References max_element(), min(), and VecMath::MultiDimensionalVector< T, D >::size().
Function VecMath::for_each | ( | MultiDimensionalVector< T1, D > & | v1, |
MultiDimensionalVector< T2, D > & | v2, | ||
Function | f | ||
) |
Loop over two MultiDimensionalVector s simultaneously, applying a function on both elements.
v1 | The MultiDimensionalVector containing the first arguments going into f . |
v2 | The MultiDimensionalVector containing the second arguments going into f . |
f | The function that is applied on every element of v1 and v2 . |
T1 | Type of the elements in the first MultiDimensionalVector; type of the first argument to f . |
T2 | Type of the elements in the second MultiDimensionalVector; type of the second argument to f . |
D | Dimensionality (nesting depth) of both MultiDimensionalVector s. |
Function | A binary function object or function taking a T1 , const T1& or T1& as first argument, and a T2 , const T2& or T2& as second argument. |
References max_element(), min(), and VecMath::MultiDimensionalVector< T, D >::size().
Referenced by for_each(), VertexHolder< N, P, NUM >::for_each_vertex_transformed(), and VertexHolder< N, P, NUM >::for_each_vertex_transformed_projected().
Function VecMath::for_each | ( | const MultiDimensionalVector< T1, 1 > & | v1, |
const MultiDimensionalVector< T2, 1 > & | v2, | ||
Function | f | ||
) |
Loop over two MultiDimensionalVector s simultaneously, applying a const function on both elements.
v1 | The MultiDimensionalVector containing the first arguments going into f . |
v2 | The MultiDimensionalVector containing the second arguments going into f . |
f | The function that is applied on every element of v1 and v2 . |
T1 | Type of the elements in the first MultiDimensionalVector; type of the first argument to f . |
T2 | Type of the elements in the second MultiDimensionalVector; type of the second argument to f . |
Function | A binary function object or function taking a T1 or const T1& as first argument, and a T2 or const T2& as second argument. |
References max_element(), min(), and VecMath::MultiDimensionalVector< T, D >::size().
Function VecMath::for_each | ( | MultiDimensionalVector< T1, 1 > & | v1, |
MultiDimensionalVector< T2, 1 > & | v2, | ||
MultiDimensionalVector< T3, 1 > & | v3, | ||
Function | f | ||
) |
Loop over three MultiDimensionalVector s simultaneously, applying a function on all elements.
v1 | The MultiDimensionalVector containing the first arguments going into f . |
v2 | The MultiDimensionalVector containing the second arguments going into f . |
v3 | The MultiDimensionalVector containing the third arguments going into f . |
f | The function that is applied on every element of v1 , v2 v2 and v3 . |
T1 | Type of the elements in the first MultiDimensionalVector; type of the first argument to f . |
T2 | Type of the elements in the second MultiDimensionalVector; type of the second argument to f . |
T3 | Type of the elements in the third MultiDimensionalVector; type of the third argument to f . |
Function | A ternary function object or function taking a T1 , const T1& or T1& as first argument, a T2 , const T2& or T2& as second argument, and a T2 , const T2& or T3& as third argument. |
References max_element(), std::min(), min(), and VecMath::MultiDimensionalVector< T, D >::size().
Function VecMath::for_each | ( | const MultiDimensionalVector< T1, D > & | v1, |
const MultiDimensionalVector< T2, D > & | v2, | ||
Function | f | ||
) |
Loop over two MultiDimensionalVector s simultaneously, applying a const function on both elements.
v1 | The MultiDimensionalVector containing the first arguments going into f . |
v2 | The MultiDimensionalVector containing the second arguments going into f . |
f | The function that is applied on every element of v1 and v2 . |
T1 | Type of the elements in the first MultiDimensionalVector; type of the first argument to f . |
T2 | Type of the elements in the second MultiDimensionalVector; type of the second argument to f . |
D | Dimensionality (nesting depth) of both MultiDimensionalVector s. |
Function | A binary function object or function taking a T1 or const T1& as first argument, and a T2 or const T2& as second argument. |
References for_each(), max_element(), min(), and VecMath::MultiDimensionalVector< T, D >::size().
Function VecMath::for_each | ( | const MultiDimensionalVector< T1, 1 > & | v1, |
const MultiDimensionalVector< T2, 1 > & | v2, | ||
const MultiDimensionalVector< T3, 1 > & | v3, | ||
Function | f | ||
) |
Loop over three MultiDimensionalVector s simultaneously, applying a const function on all elements.
v1 | The MultiDimensionalVector containing the first arguments going into f . |
v2 | The MultiDimensionalVector containing the second arguments going into f . |
v3 | The MultiDimensionalVector containing the third arguments going into f . |
f | The function that is applied on every element of v1 , v2 v2 and v3 . |
T1 | Type of the elements in the first MultiDimensionalVector; type of the first argument to f . |
T2 | Type of the elements in the second MultiDimensionalVector; type of the second argument to f . |
T3 | Type of the elements in the third MultiDimensionalVector; type of the third argument to f . |
Function | A ternary function object or function taking a T1 , const T1& or T1& as first argument, a T2 , const T2& or T2& as second argument, and a T2 , const T2& or T3& as third argument. |
References max_element(), std::min(), min(), and VecMath::MultiDimensionalVector< T, D >::size().
Vector< D, N > VecMath::operator* | ( | const Vector< D, N > & | x, |
const N & | s | ||
) |
x | Vector |
s | scalar type |
x*s
Vector< D, N > VecMath::operator* | ( | const N & | s, |
const Vector< D, N > & | x | ||
) |
x | Vector |
s | scalar type |
x*s
N VecMath::operator* | ( | const Vector< D, N > & | x, |
const Vector< D, N > & | y | ||
) |
scalar multiplication between two Vectors (dot product)
x | First factor |
y | Second factor |
x
, y
> Vector< D, N > VecMath::operator+ | ( | const Vector< D, N > & | x, |
const Vector< D, N > & | y | ||
) |
Plus.
x | first operand |
y | second operand |
x+y
Rotation< D, N > VecMath::operator+ | ( | const Rotation< D, N > & | A, |
const Rotation< D, N > & | B | ||
) |
Unary minus.
-v
Vector< D, N > VecMath::operator- | ( | const Vector< D, N > & | x, |
const Vector< D, N > & | y | ||
) |
Binary minus.
x | first operand |
y | second operand |
x-y
Vector< D, N > VecMath::operator/ | ( | const Vector< D, N > & | x, |
const N & | s | ||
) |
x | Dividend |
s | Scalar divisor |
Vector< D, N > VecMath::operator/ | ( | const Vector< D, N > & | x, |
const Vector< D, N > & | y | ||
) |
divide every component of one vector by same component of another
X | Dividend |
y | Divisor |
Vector< D, N > VecMath::scale | ( | const Vector< D, N > & | x, |
const Vector< D, N > & | y | ||
) |
multiply every component of one vector with same component of another
X | Dividend |
y | Divisor |
N VecMath::sqnorm | ( | const Vector< D, N > & | x | ) |
Referenced by xyz2RGBColorManager::findClosestPoints(), Util::glVertex(), VecMath::Rotation< D, N >::operator bool(), operator<(), FunctionValueGrid< N, P, NUM >::setBoundaries(), FunctionValueGrid< N, P, NUM >::setGridSize(), and vnormalize().