$extrastylesheet
Olena  User documentation 2.1
An Image Processing Platform
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
mln::algebra Namespace Reference

Namespaces

namespace  internal

Classes

struct  h_mat
 N-Dimensional matrix with homogeneous coordinates. More...
class  h_vec
 N-Dimensional vector with homogeneous coordinates. More...
class  mat
 NxM-dimensional matrix. More...
class  quat
 Quaternion values. More...
class  vec
 N-dimensional vector. More...

Functions

template<typename T >
bool about_equal (const T &f, const T &q)
bool about_equal (const quat &p, const quat &q)
template<unsigned n, typename T >
mln::trait::value_< typename
mln::trait::op::times< T, T >
::ret >::sum 
det (const mat< n, n, T > &m)
quat exp (const quat &q)
template<typename C >
void from_to_ (const algebra::h_mat< 3, C > &from, algebra::quat &to)
template<typename C >
void from_to_ (const quat &from, mln::util::couple< C, algebra::vec< 3, C > > &to)
template<typename T , unsigned m>
void from_to_ (const vec< 3, T > &from, value::rgb< m > &to_)
template<typename C1 , typename G , typename C2 >
void from_to_ (const vec< 1, C1 > &from, point< G, C2 > &to)
template<unsigned n, typename C1 , typename G , typename C2 >
void from_to_ (const vec< n, C1 > &from, point< G, C2 > &to)
template<typename C1 , typename G >
void from_to_ (const vec< 1, C1 > &from, point< G, C1 > &to)
template<unsigned n, typename C1 , typename G >
void from_to_ (const vec< n, C1 > &from, point< G, C1 > &to)
template<unsigned n, typename T , typename P >
void from_to_ (const vec< n, T > &from, Gpoint< P > &to)
bool interpol_ok (const quat &p, const quat &q, float h)
template<unsigned N, typename T >
bool ldlt_decomp (mat< N, N, T > &A, vec< N, T > &rdiag)
template<unsigned N, typename T >
void ldlt_solve (const mat< N, N, T > &A, const vec< N, T > &rdiag, const vec< N, T > &B, vec< N, T > &x)
quat lerp (const quat &p, const quat &q, float h)
quat log (const quat &q)
quat operator* (const quat &lhs, const quat &rhs)
template<typename S >
quat operator* (const quat &lhs, const value::scalar_< S > &rhs)
template<unsigned n, unsigned o, typename T , unsigned m, typename U >
mat< n, m, typename
mln::trait::value_< typename
mln::trait::op::times< T, U >
::ret >::sum > 
operator* (const mat< n, o, T > &lhs, const mat< o, m, U > &rhs)
template<unsigned o, typename T , typename U >
mln::trait::value_< typename
mln::trait::op::times< T, U >
::ret >::sum 
operator* (const mat< 1, o, T > &lhs, const mat< o, 1, U > &rhs)
template<unsigned n, unsigned m, typename T , typename U >
vec< n, typename
mln::trait::value_< typename
mln::trait::op::times< T, U >
::ret >::sum > 
operator* (const mat< n, m, T > &lhs, const vec< m, U > &rhs)
template<unsigned m, typename T , typename U >
mln::trait::value_< typename
mln::trait::op::times< T, U >
::ret >::sum 
operator* (const mat< 1, m, T > &lhs, const vec< m, U > &rhs)
template<unsigned m, typename T , typename U >
mat< m, m, typename
mln::trait::op::times< T, U >
::ret
operator* (const vec< m, T > &lhs, const mat< 1, m, U > &rhs)
template<unsigned n, unsigned m, typename T , typename S >
mat< n, m, typename
mln::trait::op::times< T, S >
::ret
operator* (const mat< n, m, T > &lhs, const value::scalar_< S > &s)
template<unsigned n, typename T , typename U >
mln::trait::value_< typename
mln::trait::op::times< T, U >
::ret >::sum 
operator* (const vec< n, T > &lhs, const vec< n, U > &rhs)
template<unsigned n, typename T , typename S >
vec< n, typename
mln::trait::op::times< T, S >
::ret
operator* (const vec< n, T > &lhs, const mln::value::scalar_< S > &s)
quat operator+ (const quat &lhs, const quat &rhs)
template<unsigned n, unsigned m, typename T , typename U >
mat< n, m, typename
mln::trait::op::plus< T, U >
::ret
operator+ (const mat< n, m, T > &lhs, const mat< n, m, U > &rhs)
template<unsigned n, typename T , typename U >
vec< n, typename
mln::trait::op::plus< T, U >
::ret
operator+ (const vec< n, T > &lhs, const vec< n, U > &rhs)
quat operator- (const quat &lhs, const quat &rhs)
template<unsigned n, unsigned m, typename T >
mat< n, m, typename
mln::trait::op::uminus< T >
::ret
operator- (const mat< n, m, T > &lhs)
template<unsigned n, unsigned m, typename T , typename U >
mat< n, m, typename
mln::trait::op::minus< T, U >
::ret
operator- (const mat< n, m, T > &lhs, const mat< n, m, U > &rhs)
template<unsigned n, typename T >
vec< n, typename
mln::trait::op::uminus< T >
::ret
operator- (const vec< n, T > &rhs)
template<unsigned n, typename T , typename U >
vec< n, typename
mln::trait::op::minus< T, U >
::ret
operator- (const vec< n, T > &lhs, const vec< n, U > &rhs)
template<typename S >
quat operator/ (const quat &lhs, const value::scalar_< S > &rhs)
template<unsigned n, unsigned m, typename T , typename S >
mat< n, m, typename
mln::trait::op::div< T, S >
::ret
operator/ (const mat< n, m, T > &lhs, const value::scalar_< S > &s)
template<unsigned n, typename T , typename S >
vec< n, typename
mln::trait::op::div< T, S >
::ret
operator/ (const vec< n, T > &lhs, const mln::value::scalar_< S > &s)
std::ostream & operator<< (std::ostream &ostr, const quat &q)
template<unsigned n, unsigned m, typename T >
std::ostream & operator<< (std::ostream &ostr, const mat< n, m, T > &v)
template<unsigned n, typename T >
std::ostream & operator<< (std::ostream &ostr, const vec< n, T > &v)
template<unsigned n, unsigned m, typename T , typename U >
bool operator== (const mat< n, m, T > &lhs, const mat< n, m, U > &rhs)
template<unsigned n, typename T , typename U >
bool operator== (const vec< n, T > &lhs, const vec< n, U > &rhs)
template<unsigned n, typename T >
std::istream & operator>> (std::istream &istr, vec< n, T > &v)
quat pow (const quat &q, double t)
quat slerp (const quat &p, const quat &q, float h)
quat slerp_2 (const quat &p, const quat &q, float h)
quat slerp_3 (const quat &p, const quat &q, float h)
quat slerp_4 (const quat &p, const quat &q, float h)
quat slerp_5 (const quat &p, const quat &q, float h)
template<unsigned n, typename T >
mln::value::props< T >::sum tr (const mat< n, n, T > &m)
template<typename T , typename U >
vec< 3, typename
mln::trait::op::times< T, U >
::ret
vprod (const vec< 3, T > &lhs, const vec< 3, U > &rhs)

Detailed Description

Namespace of algebraic structure.

Function Documentation

template<typename T >
bool mln::algebra::about_equal ( const T f,
const T q 
)

Definition at line 34 of file algebra/h_mat.cc.

bool mln::algebra::about_equal ( const quat &  p,
const quat &  q 
)
template<unsigned n, typename T >
mln::trait::value_< typename mln::trait::op::times< T , T >::ret >::sum mln::algebra::det ( const mat< n, n, T > &  m)

Compute the determinant of a matrix m.

quat mln::algebra::exp ( const quat &  q)
template<typename C >
void mln::algebra::from_to_ ( const algebra::h_mat< 3, C > &  from,
algebra::quat &  to 
)
template<typename C >
void mln::algebra::from_to_ ( const quat &  from,
mln::util::couple< C, algebra::vec< 3, C > > &  to 
)
template<typename T , unsigned m>
void mln::algebra::from_to_ ( const vec< 3, T > &  from,
value::rgb< m > &  to_ 
)
template<typename C1 , typename G , typename C2 >
void mln::algebra::from_to_ ( const vec< 1, C1 > &  from,
point< G, C2 > &  to 
)
inline
template<unsigned n, typename C1 , typename G , typename C2 >
void mln::algebra::from_to_ ( const vec< n, C1 > &  from,
point< G, C2 > &  to 
)
template<typename C1 , typename G >
void mln::algebra::from_to_ ( const vec< 1, C1 > &  from,
point< G, C1 > &  to 
)
inline
template<unsigned n, typename C1 , typename G >
void mln::algebra::from_to_ ( const vec< n, C1 > &  from,
point< G, C1 > &  to 
)
template<unsigned n, typename T , typename P >
void mln::algebra::from_to_ ( const vec< n, T > &  from,
Gpoint< P > &  to 
)
bool mln::algebra::interpol_ok ( const quat &  p,
const quat &  q,
float  h 
)
template<unsigned N, typename T >
bool mln::algebra::ldlt_decomp ( mat< N, N, T > &  A,
vec< N, T > &  rdiag 
)
inline

Perform LDL^T decomposition of a symmetric positive definite matrix.

Like Cholesky, but no square roots. Overwrites lower triangle of matrix.

From Trimesh's ldltdc routine.

Definition at line 80 of file misc.hh.

template<unsigned N, typename T >
void mln::algebra::ldlt_solve ( const mat< N, N, T > &  A,
const vec< N, T > &  rdiag,
const vec< N, T > &  B,
vec< N, T > &  x 
)
inline

Solve A x = B after mln::algebra::ldlt_decomp.

Definition at line 113 of file misc.hh.

quat mln::algebra::lerp ( const quat &  p,
const quat &  q,
float  h 
)
quat mln::algebra::log ( const quat &  q)
quat mln::algebra::operator* ( const quat &  lhs,
const quat &  rhs 
)
template<typename S >
quat mln::algebra::operator* ( const quat &  lhs,
const value::scalar_< S > &  rhs 
)
template<unsigned n, unsigned o, typename T , unsigned m, typename U >
mat<n, m, typename mln::trait::value_< typename mln::trait::op::times< T , U >::ret >::sum> mln::algebra::operator* ( const mat< n, o, T > &  lhs,
const mat< o, m, U > &  rhs 
)
template<unsigned o, typename T , typename U >
mln::trait::value_< typename mln::trait::op::times< T , U >::ret >::sum mln::algebra::operator* ( const mat< 1, o, T > &  lhs,
const mat< o, 1, U > &  rhs 
)
template<unsigned n, unsigned m, typename T , typename U >
vec<n, typename mln::trait::value_< typename mln::trait::op::times< T , U >::ret >::sum> mln::algebra::operator* ( const mat< n, m, T > &  lhs,
const vec< m, U > &  rhs 
)
template<unsigned m, typename T , typename U >
mln::trait::value_< typename mln::trait::op::times< T , U >::ret >::sum mln::algebra::operator* ( const mat< 1, m, T > &  lhs,
const vec< m, U > &  rhs 
)
template<unsigned m, typename T , typename U >
mat<m, m, typename mln::trait::op::times< T , U >::ret> mln::algebra::operator* ( const vec< m, T > &  lhs,
const mat< 1, m, U > &  rhs 
)
template<unsigned n, unsigned m, typename T , typename S >
mat<n, m, typename mln::trait::op::times< T , S >::ret> mln::algebra::operator* ( const mat< n, m, T > &  lhs,
const value::scalar_< S > &  s 
)
template<unsigned n, typename T , typename U >
mln::trait::value_< typename mln::trait::op::times< T , U >::ret >::sum mln::algebra::operator* ( const vec< n, T > &  lhs,
const vec< n, U > &  rhs 
)

Scalar product (dot product).

template<unsigned n, typename T , typename S >
vec<n, typename mln::trait::op::times< T , S >::ret> mln::algebra::operator* ( const vec< n, T > &  lhs,
const mln::value::scalar_< S > &  s 
)
quat mln::algebra::operator+ ( const quat &  lhs,
const quat &  rhs 
)
template<unsigned n, unsigned m, typename T , typename U >
mat<n, m, typename mln::trait::op::plus< T , U >::ret> mln::algebra::operator+ ( const mat< n, m, T > &  lhs,
const mat< n, m, U > &  rhs 
)
template<unsigned n, typename T , typename U >
vec<n, typename mln::trait::op::plus< T , U >::ret> mln::algebra::operator+ ( const vec< n, T > &  lhs,
const vec< n, U > &  rhs 
)
quat mln::algebra::operator- ( const quat &  lhs,
const quat &  rhs 
)
template<unsigned n, unsigned m, typename T >
mat<n, m, typename mln::trait::op::uminus< T >::ret> mln::algebra::operator- ( const mat< n, m, T > &  lhs)
template<unsigned n, unsigned m, typename T , typename U >
mat<n, m, typename mln::trait::op::minus< T , U >::ret> mln::algebra::operator- ( const mat< n, m, T > &  lhs,
const mat< n, m, U > &  rhs 
)
template<unsigned n, typename T >
vec<n, typename mln::trait::op::uminus< T >::ret> mln::algebra::operator- ( const vec< n, T > &  rhs)
template<unsigned n, typename T , typename U >
vec<n, typename mln::trait::op::minus< T , U >::ret> mln::algebra::operator- ( const vec< n, T > &  lhs,
const vec< n, U > &  rhs 
)
template<typename S >
quat mln::algebra::operator/ ( const quat &  lhs,
const value::scalar_< S > &  rhs 
)
template<unsigned n, unsigned m, typename T , typename S >
mat<n, m, typename mln::trait::op::div< T , S >::ret> mln::algebra::operator/ ( const mat< n, m, T > &  lhs,
const value::scalar_< S > &  s 
)
template<unsigned n, typename T , typename S >
vec<n, typename mln::trait::op::div< T , S >::ret> mln::algebra::operator/ ( const vec< n, T > &  lhs,
const mln::value::scalar_< S > &  s 
)
std::ostream& mln::algebra::operator<< ( std::ostream &  ostr,
const quat &  q 
)
template<unsigned n, unsigned m, typename T >
std::ostream& mln::algebra::operator<< ( std::ostream &  ostr,
const mat< n, m, T > &  v 
)
template<unsigned n, typename T >
std::ostream& mln::algebra::operator<< ( std::ostream &  ostr,
const vec< n, T > &  v 
)
template<unsigned n, unsigned m, typename T , typename U >
bool mln::algebra::operator== ( const mat< n, m, T > &  lhs,
const mat< n, m, U > &  rhs 
)
template<unsigned n, typename T , typename U >
bool mln::algebra::operator== ( const vec< n, T > &  lhs,
const vec< n, U > &  rhs 
)
template<unsigned n, typename T >
std::istream& mln::algebra::operator>> ( std::istream &  istr,
vec< n, T > &  v 
)
quat mln::algebra::pow ( const quat &  q,
double  t 
)
quat mln::algebra::slerp ( const quat &  p,
const quat &  q,
float  h 
)
quat mln::algebra::slerp_2 ( const quat &  p,
const quat &  q,
float  h 
)
quat mln::algebra::slerp_3 ( const quat &  p,
const quat &  q,
float  h 
)
quat mln::algebra::slerp_4 ( const quat &  p,
const quat &  q,
float  h 
)
quat mln::algebra::slerp_5 ( const quat &  p,
const quat &  q,
float  h 
)
template<unsigned n, typename T >
mln::value::props< T >::sum mln::algebra::tr ( const mat< n, n, T > &  m)

Compute the trace of a matrix m.

template<typename T , typename U >
vec<3, typename mln::trait::op::times< T , U >::ret> mln::algebra::vprod ( const vec< 3, T > &  lhs,
const vec< 3, U > &  rhs 
)

Vectorial product (cross product).