Honeycomb  0.1
Component-Model Framework
Public Types | Public Member Functions | Protected Types | Friends | List of all members
honey::VecBase< Subclass > Class Template Reference

Vector base class. More...

#include <Base.h>

Inheritance diagram for honey::VecBase< Subclass >:
Inheritance graph
[legend]
Collaboration diagram for honey::VecBase< Subclass >:
Collaboration graph
[legend]

Public Types

typedef Subclass VecS
 
typedef Numeral< Real >::Real_ Real_
 
- Public Types inherited from honey::MatrixBase< Subclass >
typedef Subclass MatrixS
 
typedef Vec< s_rows, RealVecCol
 
typedef Vec< s_cols, Real, matrix::Option::vecRowVecRow
 

Public Member Functions

VecSfromAxis (sdt i)
 Initialize with unit axis (all zeros except for a one at index i) More...
 
template<class T >
VecBaseoperator= (const MatrixBase< T > &rhs)
 Assign to row or column vector of any dimension. Asserts that if this vector has a fixed dimension then it matches rhs. More...
 
template<sdt Dim>
vec::priv::Segment< VecS, Dim >::type segment (sdt i, sdt dim=-1)
 Get segment at offset i with dimension dim. If dimension is fixed then dim may be left unspecified. Segments are the vector analog of matrix blocks. More...
 
template<sdt Dim>
vec::priv::Segment< const VecS, Dim >::type segment (sdt i, sdt dim=-1) const
 
vec::priv::Segment< VecS >::type segment (sdt i, sdt dim)
 Get dynamic segment at offset i with dimension dim More...
 
vec::priv::Segment< const VecS >::type segment (sdt i, sdt dim) const
 
VecSresize (sdt dim)
 Sets number of dimensions and reallocates only if different. All previous data is lost on reallocation. Returns self. More...
 
Real lengthSqr () const
 Get the square of the length. More...
 
Real length () const
 Get length (magnitude) of vector. More...
 
VecS normalize (optional< Real & > len=optnull) const
 Get unit vector. The pre-normalized length will be returned in len if specified. More...
 
template<class T >
Real dot (const VecBase< T > &v) const
 Vector dot product. More...
 
- Public Member Functions inherited from honey::MatrixBase< Subclass >
template<class Num >
MatrixSfromArray (const Num *a, bool rowMajor=true)
 Initialize from array. If the array is in row-major format set rowMajor to true, otherwise set to false for column-major. More...
 
MatrixSfromArray (const Real *a, bool rowMajor=true)
 
MatrixSfromZero ()
 Zero all elements. More...
 
MatrixSfromScalar (Real f)
 Initialize with scalar in every element. More...
 
MatrixSfromIdentity ()
 Make matrix identity. For non-square matrices the identity is in the upper-left square block, the rest is filled with zero. More...
 
template<class T >
matrix::Builder< MatrixSoperator<< (T &&val)
 Initialize matrix elements from scalars and other matrices using the comma operator: Matrix() << 1, 2, vec*5 ... The number of assigned elements must total up to be the matrix size exactly. More...
 
template<class T >
MatrixBaseoperator= (const MatrixBase< T > &rhs)
 Assign to matrix of any size. Asserts that any fixed dimensions in this matrix match those in rhs. More...
 
template<class Matrix >
Matrix cast ()
 Convert to a matrix of another real type. More...
 
template<class T >
bool operator== (const MatrixBase< T > &rhs) const
 
template<class T >
bool operator!= (const MatrixBase< T > &rhs) const
 
template<class T >
bool operator< (const MatrixBase< T > &rhs) const
 
template<class T >
bool operator> (const MatrixBase< T > &rhs) const
 
template<class T >
bool operator<= (const MatrixBase< T > &rhs) const
 
template<class T >
bool operator>= (const MatrixBase< T > &rhs) const
 
template<class T , class Res >
Res && add (const T &rhs, Res &&res) const
 Add another matrix. Stores result in and returns res. res may reference the same matrix as this or rhs. More...
 
MatrixS operator+ () const
 
template<class T >
MatrixS operator+ (const MatrixBase< T > &rhs) const
 
template<class T >
MatrixSoperator+= (const MatrixBase< T > &rhs)
 
template<class T , class Res >
Res && sub (const T &rhs, Res &&res) const
 Subtract another matrix. Stores result in and returns res. res may reference the same matrix as this or rhs. More...
 
MatrixS operator- () const
 
template<class T >
MatrixS operator- (const MatrixBase< T > &rhs) const
 
template<class T >
MatrixSoperator-= (const MatrixBase< T > &rhs)
 
template<class T , class Res >
Res && mul (const T &rhs, Res &&res) const
 Multiply with another matrix. This mat's column size must match rhs' row size. Stores result in and returns res. Complexity: $ O(m n\ rhs_n) $. More...
 
template<class T >
Matrix< s_rows, T::s_cols, Realoperator* (const T &rhs) const
 Multiply with another matrix. Returns a new matrix. More...
 
MatrixS operator* (Real rhs) const
 
template<class T >
MatrixSoperator*= (const MatrixBase< T > &rhs)
 
MatrixSoperator*= (Real rhs)
 
MatrixS operator/ (Real rhs) const
 
MatrixSoperator/= (Real rhs)
 
MatrixS elemAdd (Real rhs) const
 Add rhs to each element. Returns a new matrix with the results. More...
 
MatrixSelemAddEq (Real rhs)
 Add rhs to each element. More...
 
MatrixS elemSub (Real rhs) const
 Subtract rhs from each element. Returns a new matrix with the results. More...
 
MatrixSelemSubEq (Real rhs)
 Subtract rhs from each element. More...
 
template<class T >
MatrixS elemMul (const MatrixBase< T > &rhs) const
 Multiply each element with its corresponding element in rhs. Returns a new matrix with the results. More...
 
template<class T >
MatrixSelemMulEq (const MatrixBase< T > &rhs)
 Multiply each element with its corresponding element in rhs. More...
 
template<class T >
MatrixS elemDiv (const MatrixBase< T > &rhs) const
 Divide each element by its corresponding element in rhs. Returns a new matrix with the results. More...
 
template<class T >
MatrixSelemDivEq (const MatrixBase< T > &rhs)
 Divide each element by its corresponding element in rhs. More...
 
MatrixS elemAbs () const
 Get the absolute value of each element. Returns a new matrix with the results. More...
 
MatrixS elemSqr () const
 Square each element. Returns a new matrix with the results. More...
 
MatrixS elemInverse () const
 Inverse each element. Returns a new matrix with the results. More...
 
template<class T >
MatrixS elemMin (const MatrixBase< T > &rhs) const
 Get the min of each element and its corresponding element in rhs. Returns a new matrix with the results. More...
 
template<class T >
MatrixS elemMax (const MatrixBase< T > &rhs) const
 Get the max of each element and its corresponding element in rhs. Returns a new matrix with the results. More...
 
bool isZero () const
 Check if each element is exactly zero. More...
 
bool isNearZero (Real tol=Real_::zeroTol) const
 Check if each element is close to zero. More...
 
template<class T >
MatrixS clamp (const MatrixBase< T > &min, const MatrixBase< T > &max) const
 Clamp each element between its corresponding elements in min and max. Returns a new matrix with the results. More...
 
Real sum () const
 Get the sum of all elements. More...
 
Real prod () const
 Get the product of all elements. More...
 
Real mean () const
 Get the mean of all elements. More...
 
Real min () const
 Get the minimum element. More...
 
Real max () const
 Get the maximum element. More...
 
template<sdt Rows, sdt Cols>
matrix::Block< MatrixS, Rows, Cols > block (sdt row, sdt col, sdt rows=-1, sdt cols=-1)
 Get block at offset (row,col) with size (Rows, Cols). If Rows or Cols is fixed then rows or cols may be left unspecified. More...
 
template<sdt Rows, sdt Cols>
matrix::Block< const MatrixS, Rows, Cols > block (sdt row, sdt col, sdt rows=-1, sdt cols=-1) const
 
matrix::Block< MatrixSblock (sdt row, sdt col, sdt rows, sdt cols)
 Get dynamic block at offset (row,col) with size (rows, cols) More...
 
matrix::Block< const MatrixSblock (sdt row, sdt col, sdt rows, sdt cols) const
 
matrix::Block< MatrixS, 1, s_cols > row (sdt row)
 Get row as a row vector. More...
 
matrix::Block< const MatrixS, 1, s_cols > row (sdt row) const
 
matrix::Block< MatrixS, s_rows, 1 > col (sdt col)
 Get column as a column vector. More...
 
matrix::Block< const MatrixS, s_rows, 1 > col (sdt col) const
 
MatrixSresize (sdt rows, sdt cols)
 Sets number of rows/columns and reallocates only if the size has changed (rows*cols). All previous data is lost on reallocation. Returns self. More...
 
matrix::Iter< MatrixSbegin ()
 Get an iterator over the elements in row-major order. More...
 
matrix::Iter< const MatrixSbegin () const
 
matrix::Iter< MatrixSend ()
 Get an iterator to the end of the iteration provided by begin() More...
 
matrix::Iter< const MatrixSend () const
 
matrix::Iter< MatrixSiter (sdt i)
 Get an iterator to the element at index. More...
 
matrix::Iter< const MatrixSiter (sdt i) const
 
matrix::Iter< MatrixSiter (sdt row, sdt col)
 Get an iterator to the element at (row, col) More...
 
matrix::Iter< const MatrixSiter (sdt row, sdt col) const
 
template<class Num >
Num * toArray (Num *a, bool rowMajor=true) const
 Copy matrix into array. If the array is in row-major format set rowMajor to true, otherwise set to false for column-major. More...
 
RealtoArray (Real *a, bool rowMajor=true) const
 
template<class Res >
Res && transpose (Res &&res) const
 $ M^T $ transpose and store result in res. Returns res. More...
 
Matrix< s_cols, s_rows, Realtranspose () const
 Returns new matrix. More...
 
void transposeInPlace ()
 transpose and store in this matrix, only valid for square matrices More...
 
template<class T , class Res >
Res && transposeMul (const T &rhs, Res &&res) const
 $ M^T * rhs $ Stores result in and returns res. More...
 
template<class T >
Matrix< s_cols, T::s_cols, RealtransposeMul (const T &rhs) const
 Returns new matrix. More...
 
template<class T , class Res >
Res && mulTranspose (const T &rhs, Res &&res) const
 $ M * rhs^T $ Stores result in and returns res. More...
 
template<class T >
Matrix< s_rows, T::s_rows, RealmulTranspose (const T &rhs) const
 Returns new matrix. More...
 
template<class T , class Res >
Res && transposeMulTranspose (const T &rhs, Res &&res) const
 $ M^T * rhs^T = (rhs*M)^T $ Stores result in and returns res. More...
 
template<class T >
Matrix< s_cols, T::s_rows, RealtransposeMulTranspose (const T &rhs) const
 Returns new matrix. More...
 
auto minor (sdt row, sdt col) const -> Matrix< (s_rows > 0)?s_rows-1:s_rows, (s_cols > 0)?s_cols-1:s_cols, Real >
 Returns a matrix without the selected row and column. More...
 
Matrix< s_cols, s_rows, Realinverse (optional< Real & > det=optnull) const
 Get the pseudo-inverse of this matrix. The pseudo-determinant will be returned in det if specified. More...
 
Real determinant () const
 Get the determinant. Returns the pseudo-determinant if this matrix is not square. More...
 
Real cond () const
 Get the condition value. A high value means the matrix is ill-conditioned and close to singular, so inversion and linear ops will be unreliable. More...
 

Protected Types

typedef Alge_< RealAlge
 
- Protected Types inherited from honey::MatrixBase< Subclass >
typedef matrix::priv::Traits< Subclass >::Storage Storage
 
typedef Numeral< Real >::Real_ Real_
 
typedef Real_::DoubleType Double_
 
typedef Double_::Real Double
 
typedef Alge_< RealAlge
 
typedef Alge_< DoubleAlge_d
 
typedef Trig_< RealTrig
 
typedef Svd< RealSvd
 

Friends

ostream & operator<< (ostream &os, const VecBase &val)
 

Additional Inherited Members

- Protected Member Functions inherited from honey::MatrixBase< Subclass >
const Realm (sdt i) const
 Access matrix element at index. Wrapper for convenience only, more readable than (*this)(i) More...
 
Realm (sdt i)
 
const Realm (sdt row, sdt col) const
 Access matrix element with (row, column) More...
 
Realm (sdt row, sdt col)
 
template<class Num >
MatrixSfromColMajor (const Num *a)
 
template<class Num >
Num * toColMajor (Num *a) const
 

Detailed Description

template<class Subclass>
class honey::VecBase< Subclass >

Vector base class.

Member Typedef Documentation

template<class Subclass>
typedef Alge_<Real> honey::MatrixBase< Subclass >::Alge
protected
template<class Subclass>
typedef Numeral<Real>::Real_ honey::MatrixBase< Subclass >::Real_
template<class Subclass>
typedef Subclass honey::VecBase< Subclass >::VecS

Member Function Documentation

template<class Subclass>
template<class T >
Real honey::VecBase< Subclass >::dot ( const VecBase< T > &  v) const
inline

Vector dot product.

template<class Subclass>
VecS& honey::VecBase< Subclass >::fromAxis ( sdt  i)
inline

Initialize with unit axis (all zeros except for a one at index i)

template<class Subclass>
Real honey::VecBase< Subclass >::length ( ) const
inline

Get length (magnitude) of vector.

template<class Subclass>
Real honey::VecBase< Subclass >::lengthSqr ( ) const
inline

Get the square of the length.

template<class Subclass>
VecS honey::VecBase< Subclass >::normalize ( optional< Real & >  len = optnull) const
inline

Get unit vector. The pre-normalized length will be returned in len if specified.

template<class Subclass>
template<class T >
VecBase& honey::VecBase< Subclass >::operator= ( const MatrixBase< T > &  rhs)
inline

Assign to row or column vector of any dimension. Asserts that if this vector has a fixed dimension then it matches rhs.

template<class Subclass>
VecS& honey::VecBase< Subclass >::resize ( sdt  dim)
inline

Sets number of dimensions and reallocates only if different. All previous data is lost on reallocation. Returns self.

Asserts that if this vector has a fixed dimension then it matches dim.

template<class Subclass>
template<sdt Dim>
vec::priv::Segment<VecS,Dim>::type honey::VecBase< Subclass >::segment ( sdt  i,
sdt  dim = -1 
)
inline

Get segment at offset i with dimension dim. If dimension is fixed then dim may be left unspecified. Segments are the vector analog of matrix blocks.

template<class Subclass>
template<sdt Dim>
vec::priv::Segment<const VecS,Dim>::type honey::VecBase< Subclass >::segment ( sdt  i,
sdt  dim = -1 
) const
inline
template<class Subclass>
vec::priv::Segment<VecS>::type honey::VecBase< Subclass >::segment ( sdt  i,
sdt  dim 
)
inline

Get dynamic segment at offset i with dimension dim

template<class Subclass>
vec::priv::Segment<const VecS>::type honey::VecBase< Subclass >::segment ( sdt  i,
sdt  dim 
) const
inline

Friends And Related Function Documentation

template<class Subclass>
ostream& operator<< ( ostream &  os,
const VecBase< Subclass > &  val 
)
friend

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