Namespaces | Classes | Functions

mln::algebra Namespace Reference

Namespace of algebraic structure. More...

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
class  quat
class  vec

Functions

template<typename T >
bool about_equal (const T &f, const T &q)
bool about_equal (const quat &p, const quat &q)
template<typename T >
mln::trait::value_< typename
mln::trait::op::times< T, T >
::ret >::sum 
det (const mat< 3, 3, T > &m)
template<typename T >
mln::trait::value_< typename
mln::trait::op::times< T, T >
::ret >::sum 
det (const mat< 2, 2, T > &m)
quat exp (const quat &q)
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)
 Perform LDL^T decomposition of a symmetric positive definite matrix.
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)
 Solve A x = B after mln::algebra::ldlt_decomp.
quat lerp (const quat &p, const quat &q, float h)
quat log (const quat &q)
template<typename T >
mat< 3, 3, T > make (const T &t00, const T &t01, const T &t02, const T &t10, const T &t11, const T &t12, const T &t20, const T &t21, const T &t22)
template<typename T >
mat< 2, 2, T > make (const T &t00, const T &t01, const T &t10, const T &t11)
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, 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)
 Scalar product (dot product).
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)
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)
quat operator* (const quat &lhs, const quat &rhs)
template<typename S >
quat operator* (const quat &lhs, const value::scalar_< S > &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 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 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)
quat operator+ (const quat &lhs, const quat &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)
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, 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 , typename U >
vec< n, typename
mln::trait::op::minus< T, U >
::ret
operator- (const vec< n, T > &lhs, const vec< n, U > &rhs)
template<unsigned n, typename T >
vec< n, typename
mln::trait::op::uminus< T >
::ret
operator- (const vec< n, T > &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<typename S >
quat operator/ (const quat &lhs, const value::scalar_< S > &rhs)
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)
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, unsigned m, typename T >
std::ostream & operator<< (std::ostream &ostr, const mat< n, m, T > &v)
std::ostream & operator<< (std::ostream &ostr, const quat &q)
template<unsigned n, typename T >
std::ostream & operator<< (std::ostream &ostr, const vec< n, T > &v)
template<unsigned n, typename T , typename U >
bool operator== (const vec< n, T > &lhs, const vec< n, U > &rhs)
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 >
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<typename P >
to_point (const vec< P::dim, float > &v)
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)
 Vectorial product (cross product).

Detailed Description

Namespace of algebraic structure.


Function Documentation

template<typename T >
bool mln::algebra::about_equal ( const T &  f,
const T &  q 
) [inline]
bool mln::algebra::about_equal ( const quat &  p,
const quat &  q 
) [inline]

Definition at line 599 of file quat.hh.

References mln::norm::l2(), and mln::algebra::quat::to_vec().

template<typename T >
mln::trait::value_< typename mln::trait::op::times< T, T >::ret >::sum mln::algebra::det ( const mat< 3, 3, T > &  m  )  [inline]

Definition at line 841 of file algebra/mat.hh.

template<typename T >
mln::trait::value_< typename mln::trait::op::times< T, T >::ret >::sum mln::algebra::det ( const mat< 2, 2, T > &  m  )  [inline]

Definition at line 833 of file algebra/mat.hh.

Referenced by mln::algebra::internal::inverse().

quat mln::algebra::exp ( const quat &  q  )  [inline]

Definition at line 573 of file quat.hh.

References about_equal(), mln::norm::l2(), mln::algebra::quat::s(), and mln::algebra::quat::v().

Referenced by pow().

bool mln::algebra::interpol_ok ( const quat &  p,
const quat &  q,
float  h 
) [inline]

Definition at line 607 of file quat.hh.

References mln::algebra::quat::is_unit().

Referenced by lerp(), slerp(), slerp_2(), slerp_3(), slerp_4(), and slerp_5().

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 79 of file misc.hh.

Referenced by mln::geom::mesh_curvature().

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 112 of file misc.hh.

Referenced by mln::geom::mesh_curvature().

quat mln::algebra::lerp ( const quat &  p,
const quat &  q,
float  h 
) [inline]

Definition at line 620 of file quat.hh.

References interpol_ok().

Referenced by slerp().

quat mln::algebra::log ( const quat &  q  )  [inline]

Definition at line 565 of file quat.hh.

References mln::algebra::quat::is_unit(), mln::algebra::quat::theta(), and mln::algebra::quat::uv().

Referenced by pow().

template<typename T >
mat< 3, 3, T > mln::algebra::make ( const T &  t00,
const T &  t01,
const T &  t02,
const T &  t10,
const T &  t11,
const T &  t12,
const T &  t20,
const T &  t21,
const T &  t22 
) [inline]

Definition at line 628 of file algebra/mat.hh.

template<typename T >
mat< 2, 2, T > mln::algebra::make ( const T &  t00,
const T &  t01,
const T &  t10,
const T &  t11 
) [inline]

Definition at line 616 of file algebra/mat.hh.

Referenced by mln::algebra::internal::inverse().

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 
) [inline]

Definition at line 697 of file algebra/mat.hh.

References mln::rhs, and mln::literal::zero.

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 
) [inline]

Definition at line 714 of file algebra/mat.hh.

References mln::rhs, and mln::literal::zero.

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 
) [inline]

Scalar product (dot product).

Definition at line 632 of file algebra/vec.hh.

References mln::literal::zero.

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 
) [inline]

Definition at line 646 of file algebra/vec.hh.

References mln::value::scalar_< T >::to_equiv().

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 
) [inline]

Definition at line 728 of file algebra/mat.hh.

References mln::literal::zero.

quat mln::algebra::operator* ( const quat &  lhs,
const quat &  rhs 
) [inline]

Definition at line 534 of file quat.hh.

References mln::algebra::quat::s(), mln::algebra::quat::v(), and vprod().

template<typename S >
quat mln::algebra::operator* ( const quat &  lhs,
const value::scalar_< S > &  rhs 
) [inline]

Definition at line 543 of file quat.hh.

References mln::value::scalar_< T >::to_equiv(), and mln::algebra::quat::to_vec().

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 
) [inline]

Definition at line 759 of file algebra/mat.hh.

References mln::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 
) [inline]

Definition at line 745 of file algebra/mat.hh.

References mln::literal::zero.

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 
) [inline]

Definition at line 773 of file algebra/mat.hh.

References mln::value::scalar_< T >::to_equiv().

quat mln::algebra::operator+ ( const quat &  lhs,
const quat &  rhs 
) [inline]

Definition at line 520 of file quat.hh.

References mln::algebra::quat::to_vec().

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 
) [inline]

Definition at line 590 of file algebra/vec.hh.

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 
) [inline]

Definition at line 658 of file algebra/mat.hh.

References mln::rhs.

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 
) [inline]

Definition at line 670 of file algebra/mat.hh.

References mln::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 
) [inline]

Definition at line 618 of file algebra/vec.hh.

template<unsigned n, typename T >
vec< n, typename mln::trait::op::uminus< T >::ret > mln::algebra::operator- ( const vec< n, T > &  rhs  )  [inline]

Definition at line 604 of file algebra/vec.hh.

quat mln::algebra::operator- ( const quat &  lhs,
const quat &  rhs 
) [inline]

Definition at line 527 of file quat.hh.

References mln::algebra::quat::to_vec().

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  )  [inline]

Definition at line 682 of file algebra/mat.hh.

References mln::rhs.

template<typename S >
quat mln::algebra::operator/ ( const quat &  lhs,
const value::scalar_< S > &  rhs 
) [inline]
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 
) [inline]
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 
) [inline]

Definition at line 786 of file algebra/mat.hh.

References mln::value::scalar_< T >::to_equiv().

template<unsigned n, unsigned m, typename T >
std::ostream & mln::algebra::operator<< ( std::ostream &  ostr,
const mat< n, m, T > &  v 
) [inline]

Definition at line 801 of file algebra/mat.hh.

References mln::debug::format().

std::ostream & mln::algebra::operator<< ( std::ostream &  ostr,
const quat &  q 
) [inline]

Definition at line 514 of file quat.hh.

References mln::algebra::quat::to_vec().

template<unsigned n, typename T >
std::ostream & mln::algebra::operator<< ( std::ostream &  ostr,
const vec< n, T > &  v 
) [inline]

Definition at line 686 of file algebra/vec.hh.

References mln::debug::format().

template<unsigned n, typename T , typename U >
bool mln::algebra::operator== ( const vec< n, T > &  lhs,
const vec< n, U > &  rhs 
) [inline]

Definition at line 577 of file algebra/vec.hh.

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 
) [inline]

Definition at line 646 of file algebra/mat.hh.

References mln::rhs.

template<unsigned n, typename T >
std::istream & mln::algebra::operator>> ( std::istream &  istr,
vec< n, T > &  v 
) [inline]

Definition at line 700 of file algebra/vec.hh.

quat mln::algebra::pow ( const quat &  q,
double  t 
) [inline]

Definition at line 585 of file quat.hh.

References exp(), mln::algebra::quat::is_unit(), and log().

Referenced by slerp_2(), slerp_3(), slerp_4(), and slerp_5().

quat mln::algebra::slerp ( const quat &  p,
const quat &  q,
float  h 
) [inline]

Definition at line 630 of file quat.hh.

References about_equal(), interpol_ok(), lerp(), and mln::algebra::quat::sprod().

Referenced by slerp_2(), slerp_3(), slerp_4(), and slerp_5().

quat mln::algebra::slerp_2 ( const quat &  p,
const quat &  q,
float  h 
) [inline]

Definition at line 641 of file quat.hh.

References about_equal(), mln::algebra::quat::conj(), interpol_ok(), pow(), and slerp().

quat mln::algebra::slerp_3 ( const quat &  p,
const quat &  q,
float  h 
) [inline]

Definition at line 650 of file quat.hh.

References about_equal(), mln::algebra::quat::conj(), interpol_ok(), pow(), and slerp().

quat mln::algebra::slerp_4 ( const quat &  p,
const quat &  q,
float  h 
) [inline]

Definition at line 659 of file quat.hh.

References about_equal(), mln::algebra::quat::conj(), interpol_ok(), pow(), and slerp().

quat mln::algebra::slerp_5 ( const quat &  p,
const quat &  q,
float  h 
) [inline]

Definition at line 668 of file quat.hh.

References about_equal(), mln::algebra::quat::conj(), interpol_ok(), pow(), and slerp().

template<typename P >
P mln::algebra::to_point ( const vec< P::dim, float > &  v  )  [inline]

Definition at line 726 of file algebra/vec.hh.

template<unsigned n, typename T >
mln::value::props< T >::sum mln::algebra::tr ( const mat< n, n, T > &  m  )  [inline]

Definition at line 819 of file algebra/mat.hh.

References mln::literal::zero.

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 
) [inline]

Vectorial product (cross product).

Definition at line 713 of file algebra/vec.hh.

Referenced by mln::geom::mesh_corner_point_area(), mln::geom::mesh_curvature(), mln::geom::mesh_normal(), and operator*().