|
cgv
|
matrix of fixed size dimensions More...
#include <fmat.h>
Public Types | |
| typedef fvec< T, N *M > | base_type |
| base type is a vector with sufficent number of elements | |
| typedef fmat< T, N, M > | this_type |
| base type is a vector with sufficent number of elements | |
Public Member Functions | |
| fmat () | |
| standard constructor | |
| fmat (const T &c) | |
| construct a matrix with all elements set to c | |
| fmat (cgv::type::uint32_type n, cgv::type::uint32_type m, const T *a, bool column_major=true) | |
| creates a matrix from an array a of given dimensions - by default in column major format | |
| template<typename S > | |
| fmat (cgv::type::uint32_type n, cgv::type::uint32_type m, const S *a, bool column_major=true) | |
| creates a matrix from an array a of given dimensions but different type - by default in column major format | |
| template<typename S > | |
| fmat (const fmat< S, N, M > &m) | |
| copy constructor for matrix with different element type | |
| template<typename T1 , typename T2 > | |
| fmat (const fvec< T1, N > &v, const fvec< T2, M > &w) | |
| construct from outer product of vector v and w | |
| template<typename S > | |
| fmat< T, N, M > & | operator= (const fmat< S, N, M > &m) |
| assignment of a matrix with a different element type | |
| this_type & | operator= (const T &s) |
| assignment of a scalar s to each element of the matrix | |
| bool | is_square () const |
| returns true if matrix is a square matrix | |
| T & | operator() (unsigned i, unsigned j) |
| access to the element in the ith row in column j | |
| const T & | operator() (unsigned i, unsigned j) const |
| const access to the element in the ith row on column j | |
| this_type | operator* (const T &s) const |
| scalar multiplication | |
| fmat< T, N, M > & | operator/= (const T &s) |
| in place division by a scalar | |
| const fmat< T, N, M > | operator/ (const T &s) const |
| division by a scalar | |
| fmat< T, N, M > & | operator+= (const T &s) |
| in place addition by a scalar | |
| const fmat< T, N, M > | operator+ (const T &s) |
| componentwise addition of a scalar | |
| fmat< T, N, M > & | operator-= (const T &s) |
| in place substraction of a scalar | |
| const fmat< T, N, M > | operator- (const T &s) |
| componentwise subtraction of a scalar | |
| const fmat< T, N, M > | operator- () const |
| negation operator | |
| template<typename S > | |
| fmat< T, N, M > & | operator+= (const fmat< S, N, M > &m) |
| in place addition of matrix | |
| template<typename S > | |
| fmat< T, N, M > & | operator-= (const fmat< S, N, M > &m) |
| in place subtraction of matrix | |
| template<typename S > | |
| const fmat< T, N, M > | operator+ (const fmat< S, N, M > m2) const |
| matrix addition | |
| template<typename S > | |
| const fmat< T, N, M > | operator- (const fmat< S, N, M > m2) const |
| matrix subtraction | |
| template<typename S > | |
| const fmat< T, N, M > | operator*= (const fmat< S, N, N > &m2) |
| in place matrix multiplication with a ncols x ncols matrix m2 | |
| template<typename S , cgv::type::uint32_type L> | |
| const fmat< T, N, L > | operator* (const fmat< S, M, L > &m2) const |
| multiplication with a ncols x M matrix m2 | |
| template<typename S > | |
| const fvec< T, N > | operator* (const fvec< S, M > &v) const |
| matrix vector multiplication | |
| const fvec< T, M > | row (unsigned i) const |
| extract a row from the matrix as a vector, this is done by a type cast | |
| void | set_row (unsigned i, const fvec< T, M > &v) |
| set row i of the matrix to vector v | |
| const fvec< T, N > & | col (unsigned j) const |
| extract a column of the matrix as a vector | |
| void | set_col (unsigned j, const fvec< T, N > &v) |
| set column j of the matrix to vector v | |
| T | trace () const |
| returns the trace | |
| void | transpose () |
| transpose matrix | |
| T | frobenius_norm () const |
| returns the frobenius norm of matrix m | |
| void | identity () |
| set identity matrix | |
| const_reverse_iterator | rend () const |
| reverse iterator pointing to the end of reverse iteration | |
| void | set (const T &x, const T &y) |
| set the first two components | |
| void | set (const T &x, const T &y, const T &z) |
| set the first three components | |
| void | set (const T &x, const T &y, const T &z, const T &w) |
| set the first four components | |
| void | fill (const T &a) |
| fill elements of vector with scalar v | |
| void | zeros () |
| fill the vector with zeros | |
| void | ones () |
| fill the vector with ones | |
| fvec< T, N+1 > | lift () const |
| convert to homogeneous version by adding a 1 | |
| vec< T > | to_vec () const |
| conversion to vector type | |
| T & | x () |
| first element | |
| const T & | x () const |
| first element of const vector | |
| T & | y () |
| second element | |
| const T & | y () const |
| second element of const vector | |
| T & | z () |
| third element | |
| const T & | z () const |
| third element of const vector | |
| T & | w () |
| fourth element | |
| const T & | w () const |
| fourth element of const vector | |
| T & | operator() (const int i) |
| access i'th element | |
| const T & | operator() (const int i) const |
| access i'th element of const vector | |
| operator T* () | |
| cast into array. This allows calls like glVertex<N><T>v(p) instead of glVertex<N><T,N>(p.x(),p.y(),....) | |
| operator const T * () const | |
| cast into const array | |
| fvec< T, N > & | operator+= (const fvec< S, N > &_v) |
| in place vector addition | |
| fvec< T, N > & | operator-= (const fvec< S, N > &_v) |
| in place vector subtraction | |
| fvec< T, N > & | operator*= (const fvec< S, N > &_v) |
| in place componentwise vector multiplication | |
| fvec< T, N > & | operator/= (const fvec< S, N > &_v) |
| in place componentwise vector division | |
| fvec< T, N > | operator+ (const fvec< S, N > &v) const |
| vector addition | |
| fvec< T, N > | operator+ (const T &s) const |
| componentwise addition of scalar | |
| fvec< T, N > | operator- (const T &s) const |
| componentwise subtraction of scalar | |
| fvec< T, N > | operator- (const fvec< S, N > &v) const |
| vector subtraction | |
| fvec< T, N > | operator* (const fvec< S, N > &v) const |
| componentwise vector multiplication | |
| fvec< T, N > | operator/ (const fvec< S, N > &v) const |
| componentwise vector division | |
| bool | operator== (const fvec< S, N > &v) const |
| test for equality | |
| bool | operator!= (const fvec< S, N > &v) const |
| test for inequality | |
| T | length () const |
| length of the vector L2-Norm | |
| void | abs () |
| componentwise absolute values | |
| void | ceil () |
| ceil componentwise | |
| void | floor () |
| floor componentwise | |
| void | round () |
| round componentwise | |
| T | sqr_length () const |
| square length of vector | |
| double | normalize () |
| normalize the vector using the L2-Norm and return the length | |
Static Public Member Functions | |
| static unsigned | nrows () |
| number of rows | |
| static unsigned | ncols () |
| number of columns | |
| static fvec< T, N > | from_vec (const vec< T > &) |
| conversion from vector | |
| static cgv::type::uint32_type | size () |
| return number of elements | |
matrix of fixed size dimensions
Template arguments are
T ... coordinate typeN ... number of rowsM ... number of columns Matrix elements can be accessed with the (i,j)-operator with 0-based indices. For example A(i,j) accesses the matrix element in the (i+1)th row and the (j+1)th column.The matrix inherits the functionality of a N*M dimensional vector and is stored in column major format. This means that A(i,j)=A(j*M+i).