cml Namespace Reference


Namespaces

namespace  detail
namespace  et
namespace  meta

Classes

struct  any_type
 Match any type (for use with same_type<> and select_switch<>). More...
struct  col_basis
 Column-vector matrix basis tag. More...
struct  col_major
 Col-major storage tag. More...
struct  constants
 Templated constants struct. More...
struct  Default
class  dynamic_1D
 Dynamically-sized and allocated 1D array. More...
class  dynamic_2D
 Dynamically-sized and allocated 2D array. More...
struct  dynamic_memory_tag
 Dynamically-allocated memory tag. More...
struct  dynamic_size_tag
 Runtime-sized tag. More...
struct  epsilon
struct  external
 This is a selector for external 1D and 2D arrays. More...
class  external_1D
 Fixed-size external 1D array. More...
class  external_1D< Element,-1 >
 Run-time sized external 1D array. More...
class  external_2D
 Fixed-size external 2D array. More...
class  external_2D< Element,-1,-1, Layout >
 Run-time sized external 2D array. More...
struct  external_memory_tag
 Externally-allocated memory tag. More...
struct  false_type
 Type of a false statement. More...
struct  fixed
 This is a selector for fixed 1D and 2D arrays. More...
class  fixed_1D
 Statically-allocated array. More...
class  fixed_2D
 The internal statically-allocated 2D-array implementation class. More...
struct  fixed_memory_tag
 Statically-allocated memory tag. More...
struct  fixed_size_tag
 Statically-sized tag. More...
struct  is_true
struct  is_true< true >
class  matrix< Element, dynamic< Alloc >, BasisOrient, Layout >
 Resizeable, dynamic-memory matrix. More...
class  matrix< Element, external< Rows, Cols >, BasisOrient, Layout >
 Fixed-size, external-memory matrix. More...
class  matrix< Element, external<-1,-1 >, BasisOrient, Layout >
 Dynamic-size, external-memory matrix. More...
class  matrix< Element, fixed< Rows, Cols >, BasisOrient, Layout >
 Fixed-size, fixed-memory matrix. More...
struct  negative_cross
 Helper to specify v2^v1 multiplication order. More...
struct  NilCase
struct  not_resizable_tag
 Not resizable tag. More...
struct  oned_tag
 1D tag (to select array shape). More...
struct  positive_cross
 Helper to specify v1^v2 multiplication order. More...
class  quaternion
 A configurable quaternion type. More...
struct  remove_const
 Remove a const qualifier from a type. More...
struct  remove_reference
 Remove a reference qualifier from a type. More...
struct  resizable_tag
 Resizable tag. More...
struct  row_basis
 Row-vector matrix basis tag. More...
struct  row_major
 Row-major storage tag. More...
struct  same_type
 Determine if two types are the same. More...
struct  same_type< any_type, any_type >
 Disambiguate pair of any_type's. More...
struct  same_type< any_type, T >
 Match a type and any_type. More...
struct  same_type< T, any_type >
 Match a type and any_type. More...
struct  same_type< T, T >
 Match the same type for both of same_type's template arguments. More...
struct  scalar_first
 Helper to specify scalar-first quaternion ordering. More...
struct  select_if< false, TrueT, FalseT >
 Result is FalseT if false. More...
struct  select_if< true, TrueT, FalseT >
 Result is TrueT if true. More...
struct  select_switch
 Return the matched type (like a switch/case statement). More...
struct  STATIC_ASSERTION_FAILURE< true >
 Struct instantiated when a true assertion is made at compile-time. More...
struct  STATIC_ASSERTION_FAILURE_M
 A more meaningful compile-time assertion struct. More...
struct  STATIC_ASSERTION_FAILURE_M< true, M >
 Instantiated for true assertions. More...
struct  true_type
 Type of a true statement. More...
struct  twod_tag
 2D tag (to select array shape). More...
struct  type_pair
 A "type pair". More...
struct  type_quad
 A "type quadruple". More...
struct  unit_size_tag
 Unit-sized tag. More...
class  vector< Element, dynamic< Alloc > >
 Resizeable, dynamic-memory vector. More...
class  vector< Element, external< Size > >
 Fixed-size, fixed-memory vector. More...
class  vector< Element, external<> >
 Run-time sized vector. More...
class  vector< Element, fixed< Size > >
 Fixed-size, fixed-memory vector. More...
struct  vector_first
 Helper to specify vector-first quaternion ordering. More...

Typedefs

typedef constants< double > constantsd
typedef constants< float > constantsf
typedef epsilon< double > epsilond
typedef epsilon< float > epsilonf
typedef matrix< double, fixed< 2, 2 > > matrix22d
typedef matrix< double, fixed
< 2, 2 >, col_basis, col_major
matrix22d_c
typedef matrix< double, fixed
< 2, 2 >, row_basis, row_major
matrix22d_r
typedef matrix< float, fixed< 2, 2 > > matrix22f
typedef matrix< float, fixed
< 2, 2 >, col_basis, col_major
matrix22f_c
typedef matrix< float, fixed
< 2, 2 >, row_basis, row_major
matrix22f_r
typedef matrix< int, fixed< 2, 2 > > matrix22i
typedef matrix< int, fixed
< 2, 2 >, col_basis, col_major
matrix22i_c
typedef matrix< int, fixed
< 2, 2 >, row_basis, row_major
matrix22i_r
typedef matrix< double, fixed
< 2, 3 >, col_basis, col_major
matrix23d_c
typedef matrix< float, fixed
< 2, 3 >, col_basis, col_major
matrix23f_c
typedef matrix< int, fixed
< 2, 3 >, col_basis, col_major
matrix23i_c
typedef matrix< double, fixed
< 3, 2 >, row_basis, row_major
matrix32d_r
typedef matrix< float, fixed
< 3, 2 >, row_basis, row_major
matrix32f_r
typedef matrix< int, fixed
< 3, 2 >, row_basis, row_major
matrix32i_r
typedef matrix< double, fixed< 3, 3 > > matrix33d
typedef matrix< double, fixed
< 3, 3 >, col_basis, col_major
matrix33d_c
typedef matrix< double, fixed
< 3, 3 >, row_basis, row_major
matrix33d_r
typedef matrix< float, fixed< 3, 3 > > matrix33f
typedef matrix< float, fixed
< 3, 3 >, col_basis, col_major
matrix33f_c
typedef matrix< float, fixed
< 3, 3 >, row_basis, row_major
matrix33f_r
typedef matrix< int, fixed< 3, 3 > > matrix33i
typedef matrix< int, fixed
< 3, 3 >, col_basis, col_major
matrix33i_c
typedef matrix< int, fixed
< 3, 3 >, row_basis, row_major
matrix33i_r
typedef matrix< double, fixed
< 3, 4 >, col_basis, col_major
matrix34d_c
typedef matrix< float, fixed
< 3, 4 >, col_basis, col_major
matrix34f_c
typedef matrix< int, fixed
< 3, 4 >, col_basis, col_major
matrix34i_c
typedef matrix< double, fixed
< 4, 3 >, row_basis, row_major
matrix43d_r
typedef matrix< float, fixed
< 4, 3 >, row_basis, row_major
matrix43f_r
typedef matrix< int, fixed
< 4, 3 >, row_basis, row_major
matrix43i_r
typedef matrix< double, fixed< 4, 4 > > matrix44d
typedef matrix< double, fixed
< 4, 4 >, col_basis, col_major
matrix44d_c
typedef matrix< double, fixed
< 4, 4 >, row_basis, row_major
matrix44d_r
typedef matrix< float, fixed< 4, 4 > > matrix44f
typedef matrix< float, fixed
< 4, 4 >, col_basis, col_major
matrix44f_c
typedef matrix< float, fixed
< 4, 4 >, row_basis, row_major
matrix44f_r
typedef matrix< int, fixed< 4, 4 > > matrix44i
typedef matrix< int, fixed
< 4, 4 >, col_basis, col_major
matrix44i_c
typedef matrix< int, fixed
< 4, 4 >, row_basis, row_major
matrix44i_r
typedef std::pair< size_t, size_tmatrix_size
typedef matrix< double, dynamic<> > matrixd
typedef matrix< double,
dynamic<>, col_basis,
col_major
matrixd_c
typedef matrix< double,
dynamic<>, row_basis,
row_major
matrixd_r
typedef matrix< float, dynamic<> > matrixf
typedef matrix< float, dynamic
<>, col_basis, col_major
matrixf_c
typedef matrix< float, dynamic
<>, row_basis, row_major
matrixf_r
typedef matrix< int, dynamic<> > matrixi
typedef matrix< int, dynamic
<>, col_basis, col_major
matrixi_c
typedef matrix< int, dynamic
<>, row_basis, row_major
matrixi_r
typedef quaternion< double > quaterniond
typedef quaternion< double,
fixed<>, vector_first,
negative_cross
quaterniond_n
typedef quaternion< double,
fixed<>, vector_first,
positive_cross
quaterniond_p
typedef quaternion< float > quaternionf
typedef quaternion< float,
fixed<>, vector_first,
negative_cross
quaternionf_n
typedef quaternion< float,
fixed<>, vector_first,
positive_cross
quaternionf_p
typedef vector< double, fixed< 2 > > vector2d
typedef vector< float, fixed< 2 > > vector2f
typedef vector< int, fixed< 2 > > vector2i
typedef vector< double, fixed< 3 > > vector3d
typedef vector< float, fixed< 3 > > vector3f
typedef vector< int, fixed< 3 > > vector3i
typedef vector< double, fixed< 4 > > vector4d
typedef vector< float, fixed< 4 > > vector4f
typedef vector< int, fixed< 4 > > vector4i
typedef vector< double, dynamic<> > vectord
typedef vector< float, dynamic<> > vectorf
typedef vector< int, dynamic<> > vectori

Enumerations

enum  AxisOrder {
  axis_order_xyz = euler_order_xyz, axis_order_xzy = euler_order_xzy, axis_order_yzx = euler_order_yzx, axis_order_yxz = euler_order_yxz,
  axis_order_zxy = euler_order_zxy, axis_order_zyx = euler_order_zyx
}
enum  AxisOrder2D { axis_order_xy = axis_order_xyz, axis_order_yx = axis_order_yxz }
enum  EulerOrder {
  euler_order_xyz, euler_order_xyx, euler_order_xzy, euler_order_xzx,
  euler_order_yzx, euler_order_yzy, euler_order_yxz, euler_order_yxy,
  euler_order_zxy, euler_order_zxz, euler_order_zyx, euler_order_zyz
}
enum  Handedness { left_handed, right_handed }
enum  SphericalType { latitude, colatitude }
enum  ZClip { z_clip_neg_one, z_clip_zero }

Functions

template<typename T >
acos_safe (T theta)
 Wrap std::acos() and clamp argument to [-1, 1].
template<typename T >
asin_safe (T theta)
 Wrap std::asin() and clamp argument to [-1, 1].
template<size_t N>
vector< double, fixed< N > > axis (size_t i)
 Return an N-d cardinal axis by index.
vector< double, fixed< 2 > > axis_2D (size_t i)
 Return a 2D cardinal axis by index.
vector< double, fixed< 3 > > axis_3D (size_t i)
 Return a 3D cardinal axis by index.
template<class T1 , class T2 , class T3 , class T4 , typename Scalar >
detail::TypePromote< typename
detail::TypePromote< T1, T2,
typename et::ExprTraits< T1 >
::result_tag >::temporary_type,
typename detail::TypePromote
< T3, T4, typename
et::ExprTraits< T3 >
::result_tag >::temporary_type,
typename et::ExprTraits< T1 >
::result_tag >::temporary_type 
bilerp (const T1 &val00, const T2 &val10, const T3 &val01, const T4 &val11, Scalar u, Scalar v)
template<class VecT , typename Real >
void cartesian_to_cylindrical (const VecT &v, Real &radius, Real &theta, Real &height, size_t axis, Real tolerance=epsilon< Real >::placeholder())
template<class VecT , typename Real >
void cartesian_to_polar (const VecT &v, Real &radius, Real &theta, Real tolerance=epsilon< Real >::placeholder())
template<class VecT , typename Real >
void cartesian_to_spherical (const VecT &v, Real &radius, Real &theta, Real &phi, size_t axis, SphericalType type, Real tolerance=epsilon< Real >::placeholder())
template<typename T >
clamp (T value, T min, T max)
 Clamp input value to the range [min, max].
template<class XprT >
et::VectorXpr< et::MatrixColOp
< XprT > > 
col (const et::MatrixXpr< XprT > &expr, size_t i)
 Matrix col operator taking an et::MatrixXpr operand.
template<typename E , class AT , typename BO , typename L >
et::VectorXpr< et::MatrixColOp
< matrix< E, AT, BO, L > > > 
col (const matrix< E, AT, BO, L > &expr, size_t i)
 Matrix col operator taking a matrix operand.
template<class XprT >
et::QuaternionXpr
< et::ConjugateOp< XprT > > 
conjugate (QUATXPR_ARG_TYPE arg)
 Conjugation of a QuaternionXpr.
template<typename E , class AT , class OT , class CT >
et::QuaternionXpr
< et::ConjugateOp< quaternion
< E, AT, OT, CT > > > 
conjugate (const quaternion< E, AT, OT, CT > &arg)
 Conjugation of a quaternion.
template<typename LeftT , typename RightT >
detail::CrossPromote< LeftT,
RightT >::promoted_vector 
cross (const LeftT &left, const RightT &right)
template<class VecT >
vector< typename
VecT::value_type, fixed< 3 > > 
cross_cardinal (size_t i, const VecT &v)
 Return the cross product of the i'th cardinal basis vector and v.
template<class VecT >
vector< typename
VecT::value_type, fixed< 3 > > 
cross_cardinal (const VecT &v, size_t i)
 Return the cross product of v and the i'th cardinal basis vector.
template<typename T >
cub (T value)
 Cube a value.
void cyclic_permutation (size_t first, size_t &i, size_t &j, size_t &k, size_t &l)
 Cyclic permutation of the set { 0, 1, 2, 3 }, starting with 'first'.
void cyclic_permutation (size_t first, size_t &i, size_t &j, size_t &k)
 Cyclic permutation of the set { 0, 1, 2 }, starting with 'first'.
void cyclic_permutation (size_t first, size_t &i, size_t &j)
 Cyclic permutation of the set { 0, 1 }, starting with 'first'.
template<typename E , class A >
void cylindrical_to_cartesian (E radius, E theta, E height, size_t axis, vector< E, A > &v)
template<typename T >
deg (T theta)
 Convert radians to degrees.
template<typename XprT >
XprT::value_type determinant (const et::MatrixXpr< XprT > &e)
 Determinant of a matrix expression.
template<typename E , class AT , class BO , class L >
determinant (const matrix< E, AT, BO, L > &M)
 Determinant of a matrix.
template<typename LeftT , typename RightT >
detail::DotPromote< LeftT,
RightT >::promoted_scalar 
dot (const LeftT &left, const RightT &right)
 Vector dot (inner) product implementation.
template<class XprT1 , class XprT2 >
detail::DotPromote
< et::QuaternionXpr< XprT1 >
, et::QuaternionXpr< XprT2 >
>::promoted_scalar 
dot (QUATXPR_ARG_TYPE_N(1) p, QUATXPR_ARG_TYPE_N(2) q)
template<class XprT , typename E , class AT , class OT , class CT >
detail::DotPromote
< et::QuaternionXpr< XprT >
, quaternion< E, AT, OT, CT >
>::promoted_scalar 
dot (QUATXPR_ARG_TYPE p, const quaternion< E, AT, OT, CT > &q)
template<typename E , class AT , class OT , class CT , class XprT >
detail::DotPromote< quaternion
< E, AT, OT, CT >
, et::QuaternionXpr< XprT >
>::promoted_scalar 
dot (const quaternion< E, AT, OT, CT > &p, QUATXPR_ARG_TYPE q)
template<typename E1 , class AT1 , typename E2 , class AT2 , class OT , class CT >
detail::DotPromote< quaternion
< E1, AT1, OT, CT >
, quaternion< E2, AT2, OT, CT >
>::promoted_scalar 
dot (const quaternion< E1, AT1, OT, CT > &p, const quaternion< E2, AT2, OT, CT > &q)
template<class QuatT >
QuatT::temporary_type exp (const QuatT &q, typename QuatT::value_type tolerance=epsilon< typename QuatT::value_type >::placeholder())
 Exponential function of a quaternion or quaternion expression.
template<class MatT , typename Real >
void extract_frustum_planes (const MatT &m, Real planes[6][4], ZClip z_clip, bool normalize=true)
template<class MatT , typename Real >
void extract_frustum_planes (const MatT &modelview, const MatT &projection, Real planes[6][4], ZClip z_clip, bool normalize=true)
template<class MatT , class PlaneT >
void extract_near_frustum_plane (const MatT &m, PlaneT &plane, ZClip z_clip)
 Extract the near plane of a frustum given a concatenated modelview and projection matrix with the given near z-clipping range.
template<typename T >
fov_to_zoom (T fov)
 Convert field of view to zoom factor.
template<typename Real , typename E , class A >
void get_frustum_corners (Real planes[6][4], vector< E, A > corners[8])
template<typename E , class AT , class OT , class CT >
quaternion< E, AT, OT, CT > identity (const quaternion< E, AT, OT, CT > &arg)
 Set a quaternion to the multiplicative identity.
template<typename E , class AT , typename BO , typename L >
matrix< E, AT, BO, L > identity (const matrix< E, AT, BO, L > &m)
 Set the given matrix to the identity matrix.
template<size_t N>
matrix< double, fixed< N, N >
, row_basis, row_major
identity ()
 Return an NxN identity matrix.
matrix< double, fixed
< 2, 2 >, row_basis, row_major
identity_2x2 ()
 Return the 2x2 identity matrix.
matrix< double, fixed
< 3, 3 >, row_basis, row_major
identity_3x3 ()
 Return the 3x3 identity matrix.
matrix< double, fixed
< 4, 4 >, row_basis, row_major
identity_4x4 ()
 Return the 4x4 identity matrix.
template<size_t N, size_t M>
matrix< double, fixed< N, M >
, row_basis, row_major
identity_transform ()
 Return an NxM identity transform.
template<typename E , class A , class B , class L >
void identity_transform (matrix< E, A, B, L > &m)
 Set a (possibly non-square) matrix to represent an identity transform.
matrix< double, fixed
< 2, 3 >, col_basis, col_major
identity_transform_2x3 ()
 Return a 2x3 identity transform.
matrix< double, fixed
< 3, 2 >, row_basis, row_major
identity_transform_3x2 ()
 Return a 3x2 identity transform.
matrix< double, fixed
< 3, 4 >, col_basis, col_major
identity_transform_3x4 ()
 Return a 3x4 identity transform.
matrix< double, fixed
< 4, 3 >, row_basis, row_major
identity_transform_4x3 ()
 Return a 4x3 identity transform.
template<typename XprT >
et::QuaternionXpr< XprT >
::imaginary_type 
imaginary (const et::QuaternionXpr< XprT > &e)
 Returns the imaginary (vector) part of the QuaternionXpr.
template<typename E , class AT , class OT , class CT >
quaternion< E, AT, OT, CT >
::imaginary_type 
imaginary (const quaternion< E, AT, OT, CT > &q)
 Returns the imaginary (vector) part of the quaternion.
template<typename T >
bool in_range (T value, T min, T max)
 Test input value for inclusion in [min, max].
template<typename T >
size_t index_of_max (T a, T b, T c)
 Index of maximum of 3 values.
template<typename T >
size_t index_of_max (T a, T b)
 Index of maximum of 2 values.
template<typename T >
size_t index_of_max_abs (T a, T b, T c)
 Index of maximum of 3 values by magnitude.
template<typename T >
size_t index_of_max_abs (T a, T b)
 Index of maximum of 2 values by magnitude.
template<typename T >
size_t index_of_min (T a, T b, T c)
 Index of minimum of 3 values.
template<typename T >
size_t index_of_min (T a, T b)
 Index of minimum of 2 values.
template<typename T >
size_t index_of_min_abs (T a, T b, T c)
 Index of minimum of 3 values by magnitude.
template<typename T >
size_t index_of_min_abs (T a, T b)
 Index of minimum of 2 values by magnitude.
template<typename T >
inv_sqrt (T value)
 Inverse square root.
template<class XprT >
et::QuaternionXpr
< et::QuaternionInverseOp
< XprT > > 
inverse (QUATXPR_ARG_TYPE arg)
 Inverse of a QuaternionXpr.
template<typename E , class AT , class OrderT , class CrossT >
et::QuaternionXpr
< et::QuaternionInverseOp
< quaternion< E, AT, OrderT,
CrossT > > > 
inverse (const quaternion< E, AT, OrderT, CrossT > &arg)
 Inverse of a quaternion.
template<typename XprT >
et::MatrixXpr< XprT >
::temporary_type 
inverse (const et::MatrixXpr< XprT > &e)
 Inverse of a matrix expression.
template<typename E , class AT , typename BO , typename L >
matrix< E, AT, BO, L >
::temporary_type 
inverse (const matrix< E, AT, BO, L > &M)
 Inverse of a matrix.
template<typename XprT >
XprT::value_type length (VECXPR_ARG_TYPE arg)
 Length of a vector expr.
template<typename E , class AT >
vector< E, AT >::value_type length (const vector< E, AT > &arg)
 Length of a vector.
template<typename T >
length (T x, T y, T z)
 Length in R3.
template<typename T >
length (T x, T y)
 Length in R2.
template<typename XprT >
XprT::value_type length (QUATXPR_ARG_TYPE arg)
 Length of a quaternion expr.
template<typename E , class AT , class OT , class CT >
quaternion< E, AT, OT, CT >
::value_type 
length (const quaternion< E, AT, OT, CT > &arg)
 Length of a quaternion.
template<typename XprT >
XprT::value_type length_squared (VECXPR_ARG_TYPE arg)
 Squared length of a vector expr.
template<typename E , class AT >
vector< E, AT >::value_type length_squared (const vector< E, AT > &arg)
 Squared length of a vector.
template<typename T >
length_squared (T x, T y, T z)
 Squared length in R3.
template<typename T >
length_squared (T x, T y)
 Squared length in R2.
template<typename XprT >
XprT::value_type length_squared (QUATXPR_ARG_TYPE arg)
 Squared length of a quaternion expr.
template<typename E , class AT , class OT , class CT >
quaternion< E, AT, OT, CT >
::value_type 
length_squared (const quaternion< E, AT, OT, CT > &arg)
 Squared length of a quaternion.
template<class T1 , class T2 , typename Scalar >
detail::TypePromote< T1, T2,
typename et::ExprTraits< T1 >
::result_tag >::temporary_type 
lerp (const T1 &val0, const T2 &val1, Scalar u)
 Linear interpolation of 2 values.
template<class QuatT >
QuatT::temporary_type log (const QuatT &q, typename QuatT::value_type tolerance=epsilon< typename QuatT::value_type >::placeholder())
 Log of a quaternion or quaternion expression.
template<typename XprT >
et::MatrixXpr< XprT >
::temporary_type 
lu (const et::MatrixXpr< XprT > &e)
 LU factorization for a matrix expression.
template<typename E , class AT , typename BO , class L >
matrix< E, AT, BO, L >
::temporary_type 
lu (const matrix< E, AT, BO, L > &m)
 LU factorization for a matrix.
template<typename MatT , typename VecT >
et::MatVecPromote< MatT, VecT >
::temporary_type 
lu_solve (const MatT &LU, const VecT &b)
 Solve y = LUx for x.
template<class MatT_1 , class MatT_2 , typename Real >
void make_pick_drag_volume (Real pick_x1, Real pick_y1, Real pick_x2, Real pick_y2, Real viewport_x, Real viewport_y, Real viewport_width, Real viewport_height, const MatT_1 &view, const MatT_2 &projection, Real planes[6][4], ZClip z_clip, bool normalize=true)
template<class MatT_1 , class MatT_2 , class MatT_3 , typename E , class A >
void make_pick_ray (E pick_x, E pick_y, const MatT_1 &view, const MatT_2 &projection, const MatT_3 &viewport, vector< E, A > &origin, vector< E, A > &direction, bool normalize=true)
template<class MatT_1 , class MatT_2 , typename Real >
void make_pick_volume (Real pick_x, Real pick_y, Real pick_width, Real pick_height, Real viewport_x, Real viewport_y, Real viewport_width, Real viewport_height, const MatT_1 &view, const MatT_2 &projection, Real planes[6][4], ZClip z_clip, bool normalize=true)
template<class VecT_1 , class VecT_2 >
detail::DotPromote< VecT_1,
VecT_2 >::promoted_scalar 
manhattan_distance (const VecT_1 &v1, const VecT_2 &v2)
template<typename T >
map_range (T value, T min1, T max1, T min2, T max2)
 Map input value from [min1, max1] to [min2, max2].
template<typename E , class A , class B , class L , class MatT >
void matrix_3D_affine_from_2D_affine (matrix< E, A, B, L > &m, const MatT &affine_2D)
 Construct a 3D affine transform from a 2D affine transform.
template<typename E , class A , class B , class L , class MatT >
void matrix_3D_affine_from_3D_affine (matrix< E, A, B, L > &m, const MatT &affine_3D)
 Construct a 3D affine transform from another 3D affine transform.
template<typename E , class A , class B , class L , class XprT , class VecT >
void matrix_affine_transform (matrix< E, A, B, L > &m, const et::MatrixXpr< XprT > &linear, const VecT &translation)
 3D affine transform from a matrix expression and a translation
template<typename E , class A , class B , class L , typename ME , class MA , class MB , class ML , class VecT >
void matrix_affine_transform (matrix< E, A, B, L > &m, const matrix< ME, MA, MB, ML > &linear, const VecT &translation)
 3D affine transform from a matrix and a translation
template<typename E , class A , class B , class L , class VecT >
void matrix_affine_transform (matrix< E, A, B, L > &m, E angle_0, E angle_1, E angle_2, EulerOrder order, const VecT &translation)
 3D affine transform from an Euler-angle triple and a translation
template<typename E , class A , class B , class L , class VecT_1 , class VecT_2 >
void matrix_affine_transform (matrix< E, A, B, L > &m, const VecT_1 &axis, E angle, const VecT_2 &translation)
 3D affine transform from an axis-angle pair and a translation
template<typename E , class A , class B , class L , class XprT , class VecT >
void matrix_affine_transform (matrix< E, A, B, L > &m, const et::QuaternionXpr< XprT > &q, const VecT &translation)
 3D affine transform from a quaternion expression and a translation
template<typename E , class A , class B , class L , typename QE , class QA , class O , class C , class VecT >
void matrix_affine_transform (matrix< E, A, B, L > &m, const quaternion< QE, QA, O, C > &q, const VecT &translation)
 3D affine transform from a quaternion and a translation
template<typename E , class A , class B , class L , class VecT_1 , class VecT_2 , class VecT_3 , class VecT_4 >
void matrix_affine_transform (matrix< E, A, B, L > &m, const VecT_1 &x, const VecT_2 &y, const VecT_3 &z, const VecT_4 &translation)
 3D affine transform from three basis vectors and a translation
template<typename E , class A , class B , class L , class MatT , class VecT >
void matrix_affine_transform_2D (matrix< E, A, B, L > &m, const MatT &linear, const VecT &translation)
 2D affine transform from a matrix and a translation
template<typename E , class A , class B , class L , class VecT >
void matrix_affine_transform_2D (matrix< E, A, B, L > &m, E angle, const VecT &translation)
 2D affine transform from a rotation angle and a translation
template<typename E , class A , class B , class L , class VecT_1 , class VecT_2 , class VecT_3 >
void matrix_affine_transform_2D (matrix< E, A, B, L > &m, const VecT_1 &x, const VecT_2 &y, const VecT_3 &translation)
 2D affine transform from two basis vectors and a translation
template<typename E , class A , class B , class L , class VecT_1 , class VecT_2 >
void matrix_aim_at (matrix< E, A, B, L > &m, const VecT_1 &pos, const VecT_2 &target, AxisOrder order=axis_order_zyx)
 See vector_ortho.h for details.
template<typename E , class A , class B , class L , class VecT_1 , class VecT_2 , class VecT_3 >
void matrix_aim_at (matrix< E, A, B, L > &m, const VecT_1 &pos, const VecT_2 &target, const VecT_3 &reference, AxisOrder order=axis_order_zyx)
 See vector_ortho.h for details.
template<typename E , class A , class B , class L , class VecT_1 , class VecT_2 >
void matrix_aim_at_2D (matrix< E, A, B, L > &m, const VecT_1 &pos, const VecT_2 &target, AxisOrder2D order=axis_order_xy)
 See vector_ortho.h for details.
template<typename E , class A , class B , class L , class VecT_1 , class VecT_2 , class VecT_3 >
void matrix_aim_at_axial (matrix< E, A, B, L > &m, const VecT_1 &pos, const VecT_2 &target, const VecT_3 &axis, AxisOrder order=axis_order_zyx)
 See vector_ortho.h for details.
template<typename E , class A , class B , class L , class VecT , class MatT >
void matrix_aim_at_viewplane (matrix< E, A, B, L > &m, const VecT &pos, const MatT &view_matrix, Handedness handedness, AxisOrder order=axis_order_zyx)
 See vector_ortho.h for details.
template<class MatT , typename Real , typename E , class A >
void matrix_decompose_SRT (const MatT &m, Real &scale_x, Real &scale_y, Real &scale_z, vector< E, A > &axis, Real &angle, vector< E, A > &translation, Real tolerance=epsilon< Real >::placeholder())
template<class MatT , typename Real , typename E , class A >
void matrix_decompose_SRT (const MatT &m, Real &scale_x, Real &scale_y, Real &scale_z, Real &angle_0, Real &angle_1, Real &angle_2, EulerOrder order, vector< E, A > &translation, Real tolerance=epsilon< Real >::placeholder())
template<class MatT , typename Real , typename QE , class QA , class O , class C , typename VE , class VA >
void matrix_decompose_SRT (const MatT &m, Real &scale_x, Real &scale_y, Real &scale_z, quaternion< QE, QA, O, C > &rotation, vector< VE, VA > &translation)
template<class MatT , typename Real , typename ME , class MA , class B , class L , typename VE , class VA >
void matrix_decompose_SRT (const MatT &m, Real &scale_x, Real &scale_y, Real &scale_z, matrix< ME, MA, B, L > &rotation, vector< VE, VA > &translation)
template<class MatT , typename Real , typename E , class A >
void matrix_decompose_SRT_2D (const MatT &m, Real &scale_x, Real &scale_y, Real &angle, vector< E, A > &translation)
template<class MatT , typename Real , typename ME , class MA , class B , class L , typename VE , class VA >
void matrix_decompose_SRT_2D (const MatT &m, Real &scale_x, Real &scale_y, matrix< ME, MA, B, L > &rotation, vector< VE, VA > &translation)
template<class MatT >
TEMP_VEC3 matrix_get_basis_vector (const MatT &m, size_t i)
 Get the i'th basis vector of a 3D transform.
template<class MatT >
TEMP_VEC2 matrix_get_basis_vector_2D (const MatT &m, size_t i)
 Get the i'th basis vector of a 2D transform.
template<class MatT , class E , class A >
void matrix_get_basis_vectors (const MatT &m, vector< E, A > &x, vector< E, A > &y, vector< E, A > &z)
 Get the basis vectors of a 3D transform.
template<class MatT , typename E , class A >
void matrix_get_basis_vectors_2D (const MatT &m, vector< E, A > &x, vector< E, A > &y)
 Get the basis vectors of a 2D transform.
template<class MatT >
void matrix_get_translation (const MatT &m, typename MatT::value_type &t1, typename MatT::value_type &t2, typename MatT::value_type &t3)
 Get the translation of a 3D affine transform.
template<class MatT >
vector< typename
MatT::value_type, fixed< 3 > > 
matrix_get_translation (const MatT &m)
 Get the translation of a 3D affine transform.
template<class MatT >
void matrix_get_translation_2D (const MatT &m, typename MatT::value_type &t1, typename MatT::value_type &t2)
 Get the translation of a 2D affine transform.
template<class MatT >
vector< typename
MatT::value_type, fixed< 2 > > 
matrix_get_translation_2D (const MatT &m)
 Get the translation of a 2D affine transform.
template<class MatT >
TEMP_VEC3 matrix_get_transposed_basis_vector (const MatT &m, size_t i)
 Get the i'th transposed basis vector of a 3D transform.
template<class MatT >
TEMP_VEC2 matrix_get_transposed_basis_vector_2D (const MatT &m, size_t i)
 Get the i'th transposed basis vector of a 2D transform.
template<class MatT , typename E , class A >
void matrix_get_transposed_basis_vectors (const MatT &m, vector< E, A > &x, vector< E, A > &y, vector< E, A > &z)
 Get the transposed basis vectors of a 3D transform.
template<class MatT , typename E , class A >
void matrix_get_transposed_basis_vectors_2D (const MatT &m, vector< E, A > &x, vector< E, A > &y)
 Get the transposed basis vectors of a 2D transform.
template<class MatT >
TEMP_VEC3 matrix_get_transposed_x_basis_vector (const MatT &m)
 Get the transposed x basis vector of a 3D transform.
template<class MatT >
TEMP_VEC2 matrix_get_transposed_x_basis_vector_2D (const MatT &m)
 Get the transposed x basis vector of a 2D transform.
template<class MatT >
TEMP_VEC3 matrix_get_transposed_y_basis_vector (const MatT &m)
 Get the transposed y basis vector of a 3D transform.
template<class MatT >
TEMP_VEC2 matrix_get_transposed_y_basis_vector_2D (const MatT &m)
 Get the transposed y basis vector of a 2D transform.
template<class MatT >
TEMP_VEC3 matrix_get_transposed_z_basis_vector (const MatT &m)
 Get the transposed z basis vector of a 3D transform.
template<class MatT >
vector< typename
MatT::value_type, fixed< 3 > > 
matrix_get_view_translation (const MatT &m)
 Get the translation of a 3D affine transform.
template<class MatT >
TEMP_VEC3 matrix_get_x_basis_vector (const MatT &m)
 Get the x basis vector of a 3D transform.
template<class MatT >
TEMP_VEC2 matrix_get_x_basis_vector_2D (const MatT &m)
 Get the x basis vector of a 2D transform.
template<class MatT >
TEMP_VEC3 matrix_get_y_basis_vector (const MatT &m)
 Get the y basis vector of a 3D transform.
template<class MatT >
TEMP_VEC2 matrix_get_y_basis_vector_2D (const MatT &m)
 Get the y basis vector of a 2D transform.
template<class MatT >
TEMP_VEC3 matrix_get_z_basis_vector (const MatT &m)
 Get the z basis vector of a 3D transform.
template<typename E , class A , class B , class L >
void matrix_invert_RT_only (matrix< E, A, B, L > &m)
 Invert a matrix consisting of a 3D rotation and translation.
template<typename E , class A , class B , class L >
void matrix_invert_RT_only_2D (matrix< E, A, B, L > &m)
 Invert a matrix consisting of a 2D rotation and ranslation.
template<typename E , class A , class B , class L , class MatT >
void matrix_linear_transform (matrix< E, A, B, L > &m, const MatT &linear)
 Build a matrix from the 3x3 linear transform part of another matrix.
template<typename E , class A , class B , class L , class MatT >
void matrix_linear_transform_2D (matrix< E, A, B, L > &m, const MatT &linear)
 Build a matrix from the 2x2 linear transform part of another matrix.
template<typename E , class A , class B , class L >
void matrix_look_at (matrix< E, A, B, L > &m, E eye_x, E eye_y, E eye_z, E target_x, E target_y, E target_z, E up_x, E up_y, E up_z, Handedness handedness)
 Build a matrix representing a 'look at' view transform.
template<typename E , class A , class B , class L , class VecT_1 , class VecT_2 , class VecT_3 >
void matrix_look_at (matrix< E, A, B, L > &m, const VecT_1 &eye, const VecT_2 &target, const VecT_3 &up, Handedness handedness)
 Build a matrix representing a 'look at' view transform.
template<typename E , class A , class B , class L >
void matrix_look_at_LH (matrix< E, A, B, L > &m, E eye_x, E eye_y, E eye_z, E target_x, E target_y, E target_z, E up_x, E up_y, E up_z)
 Build a matrix representing a left-handed'look at' view transform.
template<typename E , class A , class B , class L , class VecT_1 , class VecT_2 , class VecT_3 >
void matrix_look_at_LH (matrix< E, A, B, L > &m, const VecT_1 &eye, const VecT_2 &target, const VecT_3 &up)
 Build a matrix representing a left-handedness 'look at' view transform.
template<typename E , class A , class B , class L >
void matrix_look_at_RH (matrix< E, A, B, L > &m, E eye_x, E eye_y, E eye_z, E target_x, E target_y, E target_z, E up_x, E up_y, E up_z)
 Build a matrix representing a right-handed'look at' view transform.
template<typename E , class A , class B , class L , class VecT_1 , class VecT_2 , class VecT_3 >
void matrix_look_at_RH (matrix< E, A, B, L > &m, const VecT_1 &eye, const VecT_2 &target, const VecT_3 &up)
 Build a matrix representing a right-handedness 'look at' view transform.
template<typename E , class A , class B , class L >
void matrix_ortho_project (matrix< E, A, B, L > &m, size_t axis)
 Build a matrix representing an orthographic projection onto a plane.
template<typename E , class A , class B , class L >
void matrix_ortho_project_2D (matrix< E, A, B, L > &m, size_t axis)
 Build a matrix representing a 2D orthographic projection.
template<typename E , class A , class B , class L , class VecT >
void matrix_ortho_project_to_hplane (matrix< E, A, B, L > &m, const VecT &normal)
 Build a matrix representing a 3D orthographic projection about the given hyperplane passing through the origin.
template<typename E , class A , class B , class L , class VecT >
void matrix_ortho_project_to_hplane_2D (matrix< E, A, B, L > &m, const VecT &normal)
 Build a matrix representing a 2D orthographic projection about the given hyperplane passing through the origin.
template<typename E , class A , class B , class L >
void matrix_ortho_project_x_2D (matrix< E, A, B, L > &m)
 Build a matrix representing an orthographic projection onto the x axis.
template<typename E , class A , class B , class L >
void matrix_ortho_project_xy (matrix< E, A, B, L > &m)
 Build a matrix representing an orthographic projection onto the zy plane.
template<typename E , class A , class B , class L >
void matrix_ortho_project_y_2D (matrix< E, A, B, L > &m)
 Build a matrix representing an orthographic projection onto the y axis.
template<typename E , class A , class B , class L >
void matrix_ortho_project_yz (matrix< E, A, B, L > &m)
 Build a matrix representing an orthographic projection onto the yz plane.
template<typename E , class A , class B , class L >
void matrix_ortho_project_zx (matrix< E, A, B, L > &m)
 Build a matrix representing an orthographic projection onto the zx plane.
template<typename E , class A , class B , class L >
void matrix_orthogonalize_2x2 (matrix< E, A, B, L > &m, size_t stable_axis=0, size_t num_iter=0, E s=E(1))
 Orthogonalize the upper-left 2x2 portion of a matrix.
template<typename E , class A , class B , class L >
void matrix_orthogonalize_3x3 (matrix< E, A, B, L > &m, size_t stable_axis=2, size_t num_iter=0, E s=E(1))
 Orthogonalize the upper-left 3x3 portion of a matrix.
template<typename E , class A , class B , class L >
void matrix_orthographic (matrix< E, A, B, L > &m, E width, E height, E n, E f, Handedness handedness, ZClip z_clip)
 Build an orthographic projection matrix.
template<typename E , class A , class B , class L >
void matrix_orthographic (matrix< E, A, B, L > &m, E left, E right, E bottom, E top, E n, E f, Handedness handedness, ZClip z_clip)
 Build a matrix representing an orthographic projection, specified by frustum bounds in l,r,b,t,n,f form, and with the given handedness and z clipping range.
template<typename E , class A , class B , class L >
void matrix_orthographic_LH (matrix< E, A, B, L > &m, E width, E height, E n, E f, ZClip z_clip)
 Build a left-handedness orthographic projection matrix.
template<typename E , class A , class B , class L >
void matrix_orthographic_LH (matrix< E, A, B, L > &m, E left, E right, E bottom, E top, E n, E f, ZClip z_clip)
 Build a left-handedness orthographic projection matrix.
template<typename E , class A , class B , class L >
void matrix_orthographic_RH (matrix< E, A, B, L > &m, E width, E height, E n, E f, ZClip z_clip)
 Build a right-handedness orthographic projection matrix.
template<typename E , class A , class B , class L >
void matrix_orthographic_RH (matrix< E, A, B, L > &m, E left, E right, E bottom, E top, E n, E f, ZClip z_clip)
 Build a right-handedness orthographic projection matrix.
template<typename E , class A , class B , class L >
void matrix_perspective (matrix< E, A, B, L > &m, E width, E height, E n, E f, Handedness handedness, ZClip z_clip)
 Build a matrix representing a perspective projection, specified by frustum bounds in w,h,n,f form, and with the given handedness and z clipping range.
template<typename E , class A , class B , class L >
void matrix_perspective (matrix< E, A, B, L > &m, E left, E right, E bottom, E top, E n, E f, Handedness handedness, ZClip z_clip)
 Build a matrix representing a perspective projection, specified by frustum bounds in l,r,b,t,n,f form, and with the given handedness and z clipping range.
template<typename E , class A , class B , class L >
void matrix_perspective_LH (matrix< E, A, B, L > &m, E width, E height, E n, E f, ZClip z_clip)
 Build a left-handedness frustum perspective matrix.
template<typename E , class A , class B , class L >
void matrix_perspective_LH (matrix< E, A, B, L > &m, E left, E right, E bottom, E top, E n, E f, ZClip z_clip)
 Build a left-handedness frustum perspective matrix.
template<typename E , class A , class B , class L >
void matrix_perspective_RH (matrix< E, A, B, L > &m, E width, E height, E n, E f, ZClip z_clip)
 Build a right-handedness frustum perspective matrix.
template<typename E , class A , class B , class L >
void matrix_perspective_RH (matrix< E, A, B, L > &m, E left, E right, E bottom, E top, E n, E f, ZClip z_clip)
 Build a right-handedness frustum perspective matrix.
template<typename E , class A , class B , class L >
void matrix_perspective_xfov (matrix< E, A, B, L > &m, E xfov, E aspect, E n, E f, Handedness handedness, ZClip z_clip)
 Build a perspective matrix.
template<typename E , class A , class B , class L >
void matrix_perspective_xfov_LH (matrix< E, A, B, L > &m, E xfov, E aspect, E n, E f, ZClip z_clip)
 Build a left-handedness perspective matrix.
template<typename E , class A , class B , class L >
void matrix_perspective_xfov_RH (matrix< E, A, B, L > &m, E xfov, E aspect, E n, E f, ZClip z_clip)
 Build a right-handedness perspective matrix.
template<typename E , class A , class B , class L >
void matrix_perspective_yfov (matrix< E, A, B, L > &m, E yfov, E aspect, E n, E f, Handedness handedness, ZClip z_clip)
 Build a perspective matrix.
template<typename E , class A , class B , class L >
void matrix_perspective_yfov_LH (matrix< E, A, B, L > &m, E yfov, E aspect, E n, E f, ZClip z_clip)
 Build a left-handedness perspective matrix.
template<typename E , class A , class B , class L >
void matrix_perspective_yfov_RH (matrix< E, A, B, L > &m, E yfov, E aspect, E n, E f, ZClip z_clip)
 Build a right-handedness perspective matrix.
template<typename E , class A , class B , class L >
void matrix_pick (matrix< E, A, B, L > &m, E pick_x, E pick_y, E pick_width, E pick_height, E viewport_x, E viewport_y, E viewport_width, E viewport_height)
template<typename E , class A , class B , class L >
void matrix_reflect (matrix< E, A, B, L > &m, size_t axis)
 Build a matrix representing a 3D reflection along the given world axis.
template<typename E , class A , class B , class L >
void matrix_reflect_2D (matrix< E, A, B, L > &m, size_t axis)
 Build a matrix representing a 2D reflection along the given world axis.
template<typename E , class A , class B , class L , class VecT >
void matrix_reflect_about_hplane (matrix< E, A, B, L > &m, const VecT &normal)
 Build a matrix representing a 3D reflection about the given hyperplane.
template<typename E , class A , class B , class L , class VecT >
void matrix_reflect_about_hplane_2D (matrix< E, A, B, L > &m, const VecT &normal)
 Build a matrix representing a 2D reflection about the given hyperplane.
template<typename E , class A , class B , class L >
void matrix_reflect_x (matrix< E, A, B, L > &m)
 Build a matrix representing a 3D reflection along the world x axis.
template<typename E , class A , class B , class L >
void matrix_reflect_x_2D (matrix< E, A, B, L > &m)
 Build a matrix representing a 2D reflection along the world x axis.
template<typename E , class A , class B , class L >
void matrix_reflect_y (matrix< E, A, B, L > &m)
 Build a matrix representing a 3D reflection along the world y axis.
template<typename E , class A , class B , class L >
void matrix_reflect_y_2D (matrix< E, A, B, L > &m)
 Build a matrix representing a 2D reflection along the world y axis.
template<typename E , class A , class B , class L >
void matrix_reflect_z (matrix< E, A, B, L > &m)
 Build a matrix representing a 3D reflection along the world z axis.
template<typename E , class A , class B , class L >
void matrix_rotate_2D (matrix< E, A, B, L > &m, E angle)
template<typename E , class A , class B , class L >
void matrix_rotate_about_local_axis (matrix< E, A, B, L > &m, size_t axis, E angle)
 Rotate a rotation matrix about the given local axis.
template<typename E , class A , class B , class L >
void matrix_rotate_about_local_x (matrix< E, A, B, L > &m, E angle)
 Rotate a rotation matrix about its local x axis.
template<typename E , class A , class B , class L >
void matrix_rotate_about_local_y (matrix< E, A, B, L > &m, E angle)
 Rotate a rotation matrix about its local y axis.
template<typename E , class A , class B , class L >
void matrix_rotate_about_local_z (matrix< E, A, B, L > &m, E angle)
 Rotate a rotation matrix about its local z axis.
template<typename E , class A , class B , class L >
void matrix_rotate_about_world_axis (matrix< E, A, B, L > &m, size_t axis, E angle)
 Rotate a rotation matrix about the given world axis.
template<typename E , class A , class B , class L >
void matrix_rotate_about_world_x (matrix< E, A, B, L > &m, E angle)
 Rotate a rotation matrix about the world x axis.
template<typename E , class A , class B , class L >
void matrix_rotate_about_world_y (matrix< E, A, B, L > &m, E angle)
 Rotate a rotation matrix about the world y axis.
template<typename E , class A , class B , class L >
void matrix_rotate_about_world_z (matrix< E, A, B, L > &m, E angle)
 Rotate a rotation matrix about the world z axis.
template<typename E , class A , class B , class L >
void matrix_rotation_2D (matrix< E, A, B, L > &m, E angle)
 Build a matrix representing a 2D rotation.
template<typename E , class A , class B , class L , class VecT_1 , class VecT_2 >
void matrix_rotation_aim_at (matrix< E, A, B, L > &m, const VecT_1 &pos, const VecT_2 &target, AxisOrder order=axis_order_zyx)
 See vector_ortho.h for details.
template<typename E , class A , class B , class L , class VecT_1 , class VecT_2 , class VecT_3 >
void matrix_rotation_aim_at (matrix< E, A, B, L > &m, const VecT_1 &pos, const VecT_2 &target, const VecT_3 &reference, AxisOrder order=axis_order_zyx)
 See vector_ortho.h for details.
template<typename E , class A , class B , class L , class VecT_1 , class VecT_2 , class VecT_3 >
void matrix_rotation_aim_at_axial (matrix< E, A, B, L > &m, const VecT_1 &pos, const VecT_2 &target, const VecT_3 &axis, AxisOrder order=axis_order_zyx)
 See vector_ortho.h for details.
template<typename E , class A , class B , class L , class VecT >
void matrix_rotation_align (matrix< E, A, B, L > &m, const VecT &align, bool normalize=true, AxisOrder order=axis_order_zyx)
 See vector_ortho.h for details.
template<typename E , class A , class B , class L , class VecT_1 , class VecT_2 >
void matrix_rotation_align (matrix< E, A, B, L > &m, const VecT_1 &align, const VecT_2 &reference, bool normalize=true, AxisOrder order=axis_order_zyx)
 See vector_ortho.h for details.
template<typename E , class A , class B , class L , class VecT >
void matrix_rotation_align_2D (matrix< E, A, B, L > &m, const VecT &align, bool normalize=true, AxisOrder2D order=axis_order_xy)
 See vector_ortho.h for details.
template<typename E , class A , class B , class L , class VecT_1 , class VecT_2 >
void matrix_rotation_align_axial (matrix< E, A, B, L > &m, const VecT_1 &align, const VecT_2 &axis, bool normalize=true, AxisOrder order=axis_order_zyx)
 See vector_ortho.h for details.
template<typename E , class A , class B , class L , class MatT >
void matrix_rotation_align_viewplane (matrix< E, A, B, L > &m, const MatT &view_matrix, Handedness handedness, AxisOrder order=axis_order_zyx)
 See vector_ortho.h for details.
template<typename E , class A , class B , class L , class MatT >
void matrix_rotation_align_viewplane_LH (matrix< E, A, B, L > &m, const MatT &view_matrix, AxisOrder order=axis_order_zyx)
 See vector_ortho.h for details.
template<typename E , class A , class B , class L , class MatT >
void matrix_rotation_align_viewplane_RH (matrix< E, A, B, L > &m, const MatT &view_matrix, AxisOrder order=axis_order_zyx)
 See vector_ortho.h for details.
template<typename E , class A , class B , class L , class VecT >
void matrix_rotation_axis_angle (matrix< E, A, B, L > &m, const VecT &axis, E angle)
 Build a rotation matrix from an axis-angle pair.
template<class MatT_1 , class MatT_2 >
MAT_TEMP_3X3 matrix_rotation_difference (const MatT_1 &m1, const MatT_2 &m2)
 Return the rotational 'difference' between two 3D rotation matrices.
template<class MatT_1 , class MatT_2 >
MAT_TEMP_2X2 matrix_rotation_difference_2D (const MatT_1 &m1, const MatT_2 &m2)
 Return the rotational 'difference' between two 2D rotation matrices.
template<typename E , class A , class B , class L >
void matrix_rotation_euler (matrix< E, A, B, L > &m, E angle_0, E angle_1, E angle_2, EulerOrder order)
 Build a rotation matrix from an Euler-angle triple.
template<typename E , class A , class B , class L >
void matrix_rotation_euler_derivatives (matrix< E, A, B, L > &m, int axis, E angle_0, E angle_1, E angle_2, EulerOrder order)
 Build a matrix of derivatives of Euler angles about the specified axis.
template<typename E , class A , class B , class L , class QuatT >
void matrix_rotation_quaternion (matrix< E, A, B, L > &m, const QuatT &q)
 Build a rotation matrix from a quaternion.
template<class E , class A , class B , class L , class VecT_1 , class VecT_2 >
void matrix_rotation_vec_to_vec (matrix< E, A, B, L > &m, const VecT_1 &v1, const VecT_2 &v2, bool unit_length_vectors=false)
 Build a rotation matrix to rotate from one vector to another.
template<typename E , class A , class B , class L >
void matrix_rotation_world_axis (matrix< E, A, B, L > &m, size_t axis, E angle)
 Build a matrix representing a 3D rotation about the given world axis.
template<typename E , class A , class B , class L >
void matrix_rotation_world_x (matrix< E, A, B, L > &m, E angle)
 Build a matrix representing a 3D rotation about the world x axis.
template<typename E , class A , class B , class L >
void matrix_rotation_world_y (matrix< E, A, B, L > &m, E angle)
 Build a matrix representing a 3D rotation about the world y axis.
template<typename E , class A , class B , class L >
void matrix_rotation_world_z (matrix< E, A, B, L > &m, E angle)
 Build a matrix representing a 3D rotation about the world z axis.
template<typename E , class A , class B , class L , class VecT >
void matrix_scale (matrix< E, A, B, L > &m, const VecT &scale)
 Build a matrix representing a non-uniform 3D scale.
template<typename E , class A , class B , class L >
void matrix_scale (matrix< E, A, B, L > &m, E scale_x, E scale_y, E scale_z)
 Build a matrix representing a non-uniform 3D scale.
template<typename E , class A , class B , class L , class VecT >
void matrix_scale_2D (matrix< E, A, B, L > &m, const VecT &scale)
 Build a matrix representing a non-uniform 2D scale.
template<typename E , class A , class B , class L >
void matrix_scale_2D (matrix< E, A, B, L > &m, E scale_x, E scale_y)
 Build a matrix representing a non-uniform 2D scale.
template<typename E , class A , class B , class L , class VecT >
void matrix_scale_along_axis (matrix< E, A, B, L > &m, const VecT &axis, E scale)
 Build a matrix representing a 3D scale along an arbitrary axis.
template<typename E , class A , class B , class L , class VecT >
void matrix_scale_along_axis_2D (matrix< E, A, B, L > &m, const VecT &axis, E scale)
 Build a matrix representing a 2D scale along an arbitrary axis.
template<typename E , class A , class B , class L >
void matrix_scale_rotation_angle (matrix< E, A, B, L > &m, E t, E tolerance=epsilon< E >::placeholder())
 Scale the angle of a 3D rotation matrix.
template<typename E , class A , class B , class L >
void matrix_scale_rotation_angle_2D (matrix< E, A, B, L > &m, E t, E tolerance=epsilon< E >::placeholder())
 Scale the angle of a 2D rotation matrix.
template<typename E , class A , class B , class L , class VecT >
void matrix_set_basis_vector (matrix< E, A, B, L > &m, size_t i, const VecT &v)
 Set the i'th basis vector of a 3D transform.
template<typename E , class A , class B , class L , class VecT >
void matrix_set_basis_vector_2D (matrix< E, A, B, L > &m, size_t i, const VecT &v)
 Set the i'th basis vector of a 2D transform.
template<typename E , class A , class B , class L , class VecT_1 , class VecT_2 , class VecT_3 >
void matrix_set_basis_vectors (matrix< E, A, B, L > &m, const VecT_1 &x, const VecT_2 &y, const VecT_3 &z)
 Set the basis vectors of a 3D transform.
template<typename E , class A , class B , class L , class VecT_1 , class VecT_2 >
void matrix_set_basis_vectors_2D (matrix< E, A, B, L > &m, const VecT_1 &x, const VecT_2 &y)
 Set the basis vectors of a 2D transform.
template<typename E , class A , class B , class L , class VecT >
void matrix_set_translation (matrix< E, A, B, L > &m, const VecT &translation)
 Set the translation of a 3D affine transform from a 3D or 2D vector.
template<typename E , class A , class B , class L >
void matrix_set_translation (matrix< E, A, B, L > &m, E x, E y)
 Set the translation of a 3D affine transform with z set to 0.
template<typename E , class A , class B , class L >
void matrix_set_translation (matrix< E, A, B, L > &m, E x, E y, E z)
 Set the translation of a 3D affine transform.
template<typename E , class A , class B , class L , class VecT >
void matrix_set_translation_2D (matrix< E, A, B, L > &m, const VecT &translation)
 Set the translation of a 2D affine transform from a 2D vector.
template<typename E , class A , class B , class L >
void matrix_set_translation_2D (matrix< E, A, B, L > &m, E x, E y)
 Set the translation of a 2D affine transform.
template<typename E , class A , class B , class L , class VecT >
void matrix_set_transposed_basis_vector (matrix< E, A, B, L > &m, size_t i, const VecT &v)
 Set the i'th transposed basis vector of a 3D transform.
template<typename E , class A , class B , class L , class VecT >
void matrix_set_transposed_basis_vector_2D (matrix< E, A, B, L > &m, size_t i, const VecT &v)
 Set the i'th transposed basis vector of a 2D transform.
template<typename E , class A , class B , class L , class VecT_1 , class VecT_2 , class VecT_3 >
void matrix_set_transposed_basis_vectors (matrix< E, A, B, L > &m, const VecT_1 &x, const VecT_2 &y, const VecT_3 &z)
 Set the transposed basis vectors of a 3D transform.
template<typename E , class A , class B , class L , class VecT_1 , class VecT_2 >
void matrix_set_transposed_basis_vectors_2D (matrix< E, A, B, L > &m, const VecT_1 &x, const VecT_2 &y)
 Set the transposed basis vectors of a 2D transform.
template<typename E , class A , class B , class L , class VecT >
void matrix_set_transposed_x_basis_vector (matrix< E, A, B, L > &m, const VecT &x)
 Set the transposed x basis vector of a 3D transform.
template<typename E , class A , class B , class L , class VecT >
void matrix_set_transposed_x_basis_vector_2D (matrix< E, A, B, L > &m, const VecT &x)
 Set the transposed x basis vector of a 2D transform.
template<typename E , class A , class B , class L , class VecT >
void matrix_set_transposed_y_basis_vector (matrix< E, A, B, L > &m, const VecT &y)
 Set the transposed y basis vector of a 3D transform.
template<typename E , class A , class B , class L , class VecT >
void matrix_set_transposed_y_basis_vector_2D (matrix< E, A, B, L > &m, const VecT &y)
 Set the transposed y basis vector of a 2D transform.
template<typename E , class A , class B , class L , class VecT >
void matrix_set_transposed_z_basis_vector (matrix< E, A, B, L > &m, const VecT &z)
 Set the transposed z basis vector of a 3D transform.
template<typename E , class A , class B , class L , class VecT >
void matrix_set_x_basis_vector (matrix< E, A, B, L > &m, const VecT &x)
 Set the x basis vector of a 3D transform.
template<typename E , class A , class B , class L , class VecT >
void matrix_set_x_basis_vector_2D (matrix< E, A, B, L > &m, const VecT &x)
 Set the x basis vector of a 2D transform.
template<typename E , class A , class B , class L , class VecT >
void matrix_set_y_basis_vector (matrix< E, A, B, L > &m, const VecT &y)
 Set the y basis vector of a 3D transform.
template<typename E , class A , class B , class L , class VecT >
void matrix_set_y_basis_vector_2D (matrix< E, A, B, L > &m, const VecT &y)
 Set the y basis vector of a 2D transform.
template<typename E , class A , class B , class L , class VecT >
void matrix_set_z_basis_vector (matrix< E, A, B, L > &m, const VecT &z)
 Set the z basis vector of a 3D transform.
template<typename E , class A , class B , class L >
void matrix_shear (matrix< E, A, B, L > &m, size_t axis, E shear_s, E shear_t)
 Build a matrix representing a 3D shear along the specified world axis.
template<typename E , class A , class B , class L >
void matrix_shear_2D (matrix< E, A, B, L > &m, size_t axis, E shear)
 Build a matrix representing a 2D shear along the specified world axis.
template<typename E , class A , class B , class L >
void matrix_shear_x (matrix< E, A, B, L > &m, E shear_s, E shear_t)
 Build a matrix representing a 3D shear along the world x axis.
template<typename E , class A , class B , class L >
void matrix_shear_x_2D (matrix< E, A, B, L > &m, E shear)
 Build a matrix representing a 2D shear along the world x axis.
template<typename E , class A , class B , class L >
void matrix_shear_y (matrix< E, A, B, L > &m, E shear_s, E shear_t)
 Build a matrix representing a 3D shear along the world y axis.
template<typename E , class A , class B , class L >
void matrix_shear_y_2D (matrix< E, A, B, L > &m, E shear)
 Build a matrix representing a 2D shear along the world y axis.
template<typename E , class A , class B , class L >
void matrix_shear_z (matrix< E, A, B, L > &m, E shear_s, E shear_t)
 Build a matrix representing a 3D shear along the world z axis.
template<typename E , class A , class B , class L , class VecT >
void matrix_skew_symmetric (matrix< E, A, B, L > &m, const VecT &v)
 3D skew-symmetric matrix
template<typename E , class A , class B , class L >
void matrix_skew_symmetric_2D (matrix< E, A, B, L > &m, E s)
 2D skew-symmetric matrix
template<class MatT_1 , class MatT_2 , typename E >
MAT_TEMP_3X3 matrix_slerp (const MatT_1 &m1, const MatT_2 &m2, E t, E tolerance=epsilon< E >::placeholder())
 Spherical linear interpolation of two 3D rotation matrices.
template<class MatT_1 , class MatT_2 , typename E >
MAT_TEMP_2X2 matrix_slerp_2D (const MatT_1 &m1, const MatT_2 &m2, E t, E tolerance=epsilon< E >::placeholder())
 Spherical linear interpolation of two 2D rotation matrices.
template<class MatT , typename E , class A >
void matrix_to_axis_angle (const MatT &m, vector< E, A > &axis, E &angle, E tolerance=epsilon< E >::placeholder())
 Convert a 3D rotation matrix to an axis-angle pair.
template<class MatT , typename Real >
void matrix_to_euler (const MatT &m, Real &angle_0, Real &angle_1, Real &angle_2, EulerOrder order, Real tolerance=epsilon< Real >::placeholder())
 Convert a 3D rotation matrix to an Euler-angle triple.
template<class MatT >
MatT::value_type matrix_to_rotation_2D (const MatT &m)
 Convert a 2D rotation matrix to a rotation angle.
template<typename E , class A , class B , class L , class VecT >
void matrix_translation (matrix< E, A, B, L > &m, const VecT &translation)
 Build a matrix representing a 3D translation.
template<typename E , class A , class B , class L >
void matrix_translation (matrix< E, A, B, L > &m, E x, E y)
 Build a matrix representing a 3D translation with z set to 0.
template<typename E , class A , class B , class L >
void matrix_translation (matrix< E, A, B, L > &m, E x, E y, E z)
 Build a matrix representing a 3D translation.
template<typename E , class A , class B , class L , class VecT >
void matrix_translation_2D (matrix< E, A, B, L > &m, const VecT &translation)
 Build a matrix representing a 2D translation.
template<typename E , class A , class B , class L >
void matrix_translation_2D (matrix< E, A, B, L > &m, E x, E y)
 Build a matrix representing a 2D translation.
template<typename E , class A , class B , class L >
void matrix_uniform_scale (matrix< E, A, B, L > &m, E scale)
 Build a matrix representing a uniform 3D scale.
template<typename E , class A , class B , class L >
void matrix_uniform_scale_2D (matrix< E, A, B, L > &m, E scale)
 Build a matrix representing a uniform 2D scale.
template<typename E , class A , class B , class L >
void matrix_viewport (matrix< E, A, B, L > &m, E left, E right, E bottom, E top, ZClip z_clip, E n=E(0), E f=E(1))
size_t next (size_t i, size_t N)
 Return next, with cycling, in a series of N non-negative integers.
template<class T1 , class T2 , typename Real >
detail::TypePromote< T1, T2,
typename et::ExprTraits< T1 >
::result_tag >::temporary_type 
nlerp (const T1 &t1, const T2 &t2, Real t)
template<typename XprT >
XprT::value_type norm (QUATXPR_ARG_TYPE arg)
 Cayley norm of a QuaternionXpr.
template<typename E , class AT , class OT , class CT >
quaternion< E, AT, OT, CT >
::value_type 
norm (const quaternion< E, AT, OT, CT > &arg)
 Cayley norm of a quaternion.
template<typename XprT >
XprT::result_type normalize (VECXPR_ARG_TYPE arg)
 Normalize a vector expr.
template<typename E , class AT >
vector< E, AT > normalize (const vector< E, AT > &arg)
 Normalize a vector.
template<typename XprT >
XprT::temporary_type normalize (QUATXPR_ARG_TYPE arg)
 Normalize a quaternion expr.
template<typename E , class AT , class OT , class CT >
quaternion< E, AT, OT, CT > normalize (const quaternion< E, AT, OT, CT > &arg)
 Normalize a quaternion.
template<class XprT1 , class XprT2 >
et::QuaternionPromote
< typename
XprT1::temporary_type,
typename XprT2::temporary_type >
::temporary_type 
operator* (QUATXPR_ARG_TYPE_N(1) left, QUATXPR_ARG_TYPE_N(2) right)
 Declare mul taking two et::QuaternionXpr operands.
template<class XprT , typename E , class AT , class OT , class CT >
et::QuaternionPromote
< typename
XprT::temporary_type, typename
quaternion< E, AT, OT, CT >
::temporary_type >
::temporary_type 
operator* (QUATXPR_ARG_TYPE left, const quaternion< E, AT, OT, CT > &right)
 Declare mul taking an et::QuaternionXpr and a quaternion.
template<typename E , class AT , class OT , class CT , class XprT >
et::QuaternionPromote
< typename quaternion< E, AT,
OT, CT >::temporary_type,
typename XprT::temporary_type >
::temporary_type 
operator* (const quaternion< E, AT, OT, CT > &left, QUATXPR_ARG_TYPE right)
 Declare mul taking a quaternion and a et::QuaternionXpr.
template<typename E1 , class AT1 , typename E2 , class AT2 , class OT , class CT >
et::QuaternionPromote
< typename quaternion< E1, AT1,
OT, CT >::temporary_type,
typename quaternion< E2, AT2,
OT, CT >::temporary_type >
::temporary_type 
operator* (const quaternion< E1, AT1, OT, CT > &left, const quaternion< E2, AT2, OT, CT > &right)
 Declare mul taking two quaternion operands.
template<typename XprT1 , typename XprT2 >
et::MatVecPromote< typename
XprT1::result_type, typename
XprT2::result_type >
::temporary_type 
operator* (const et::VectorXpr< XprT1 > &left, const et::MatrixXpr< XprT2 > &right)
 operator*() for a VectorXpr and a MatrixXpr.
template<typename XprT , typename E , class AT , typename BO , class L >
et::MatVecPromote< typename
XprT::result_type, matrix< E,
AT, BO, L >>::temporary_type 
operator* (const et::VectorXpr< XprT > &left, const matrix< E, AT, BO, L > &right)
 operator*() for a VectorXpr and a matrix.
template<typename XprT , typename E , class AT >
et::MatVecPromote< typename
XprT::result_type, vector< E,
AT >>::temporary_type 
operator* (const vector< E, AT > &left, const et::MatrixXpr< XprT > &right)
 operator*() for a vector and a MatrixXpr.
template<typename E1 , class AT1 , typename E2 , class AT2 , typename BO , class L >
et::MatVecPromote< vector< E1,
AT1 >, matrix< E2, AT2, BO, L >
>::temporary_type 
operator* (const vector< E1, AT1 > &left, const matrix< E2, AT2, BO, L > &right)
 operator*() for a vector and a matrix.
template<typename XprT1 , typename XprT2 >
et::MatVecPromote< typename
XprT1::result_type, typename
XprT2::result_type >
::temporary_type 
operator* (const et::MatrixXpr< XprT1 > &left, const et::VectorXpr< XprT2 > &right)
 operator*() for a MatrixXpr and a VectorXpr.
template<typename XprT , typename E , class AT >
et::MatVecPromote< typename
XprT::result_type, vector< E,
AT >>::temporary_type 
operator* (const et::MatrixXpr< XprT > &left, const vector< E, AT > &right)
 operator*() for a MatrixXpr and a vector.
template<typename E , class AT , class L , typename BO , typename XprT >
et::MatVecPromote< matrix< E,
AT, BO, L >, typename
XprT::result_type >
::temporary_type 
operator* (const matrix< E, AT, BO, L > &left, const et::VectorXpr< XprT > &right)
 operator*() for a matrix and a VectorXpr.
template<typename E1 , class AT1 , typename BO , class L , typename E2 , class AT2 >
et::MatVecPromote< matrix< E1,
AT1, BO, L >, vector< E2, AT2 >
>::temporary_type 
operator* (const matrix< E1, AT1, BO, L > &left, const vector< E2, AT2 > &right)
 operator*() for a matrix and a vector.
template<typename XprT1 , typename XprT2 >
et::MatrixPromote< typename
XprT1::result_type, typename
XprT2::result_type >
::temporary_type 
operator* (const et::MatrixXpr< XprT1 > &left, const et::MatrixXpr< XprT2 > &right)
 operator*() for two MatrixXpr's.
template<typename XprT , typename E , class AT , typename BO , typename L >
et::MatrixPromote< typename
XprT::result_type, matrix< E,
AT, BO, L >>::temporary_type 
operator* (const et::MatrixXpr< XprT > &left, const matrix< E, AT, BO, L > &right)
 operator*() for a MatrixXpr and a matrix.
template<typename E , class AT , typename BO , typename L , typename XprT >
et::MatrixPromote< matrix< E,
AT, BO, L >, typename
XprT::result_type >
::temporary_type 
operator* (const matrix< E, AT, BO, L > &left, const et::MatrixXpr< XprT > &right)
 operator*() for a matrix and a MatrixXpr.
template<typename E1 , class AT1 , typename L1 , typename E2 , class AT2 , typename L2 , typename BO >
et::MatrixPromote< matrix< E1,
AT1, BO, L1 >, matrix< E2, AT2,
BO, L2 >>::temporary_type 
operator* (const matrix< E1, AT1, BO, L1 > &left, const matrix< E2, AT2, BO, L2 > &right)
 operator*() for two matrices.
template<class XprT >
std::ostream & operator<< (std::ostream &os, const et::VectorXpr< XprT > &v)
 Output a vector expression to a std::ostream.
template<typename E , class AT >
std::ostream & operator<< (std::ostream &os, const vector< E, AT > &v)
 Output a vector to a std::ostream.
template<class XprT >
std::ostream & operator<< (std::ostream &os, const et::QuaternionXpr< XprT > &q)
 Output a quaternion expression to a std::ostream.
template<typename E , class AT , class OT , typename CT >
std::ostream & operator<< (std::ostream &os, const cml::quaternion< E, AT, OT, CT > &q)
 Output a quaternion to a std::ostream.
template<class XprT >
std::ostream & operator<< (std::ostream &os, const et::MatrixXpr< XprT > &m)
 Output a matrix expression to a std::ostream.
template<typename E , class AT , typename BO , class L >
std::ostream & operator<< (std::ostream &os, const matrix< E, AT, BO, L > &m)
 Output a matrix to a std::ostream.
template<class VecT , typename E , class A >
void orthonormal_basis (const VecT &align, vector< E, A > &x, vector< E, A > &y, vector< E, A > &z, bool normalize_align=true, AxisOrder order=axis_order_zyx)
 This version of orthonormal_basis() constructs in arbitrary basis given a vector with which to align the i'th basis vector.
template<class VecT_1 , class VecT_2 , typename E , class A >
void orthonormal_basis (const VecT_1 &align, const VecT_2 &reference, vector< E, A > &x, vector< E, A > &y, vector< E, A > &z, bool normalize_align=true, AxisOrder order=axis_order_zyx)
 This version of orthonormal_basis() ultimately does the work for all orthonormal_basis_*() functions.
template<class VecT , typename E , class A >
void orthonormal_basis_2D (const VecT &align, vector< E, A > &x, vector< E, A > &y, bool normalize_align=true, AxisOrder2D order=axis_order_xy)
 Build a 2D orthonormal basis.
template<class VecT_1 , class VecT_2 , typename E , class A >
void orthonormal_basis_axial (const VecT_1 &align, const VecT_2 &axis, vector< E, A > &x, vector< E, A > &y, vector< E, A > &z, bool normalize_align=true, AxisOrder order=axis_order_zyx)
 orthonormal_basis_axial() generates a basis in which the j'th basis vector is aligned with 'axis' and the i'th basis vector is maximally aligned (as 'aligned as possible') with 'align'.
template<class MatT , typename E , class A >
void orthonormal_basis_viewplane (const MatT &view_matrix, vector< E, A > &x, vector< E, A > &y, vector< E, A > &z, Handedness handedness, AxisOrder order=axis_order_zyx)
 orthonormal_basis_viewplane() builds a basis aligned with a viewplane, as extracted from the input view matrix.
template<class MatT , typename E , class A >
void orthonormal_basis_viewplane_LH (const MatT &view_matrix, vector< E, A > &x, vector< E, A > &y, vector< E, A > &z, AxisOrder order=axis_order_zyx)
 Build a viewplane-oriented basis from a left-handedness view matrix.
template<class MatT , typename E , class A >
void orthonormal_basis_viewplane_RH (const MatT &view_matrix, vector< E, A > &x, vector< E, A > &y, vector< E, A > &z, AxisOrder order=axis_order_zyx)
 Build a viewplane-oriented basis from a right-handedness view matrix.
template<typename E , class A >
void orthonormalize (vector< E, A > &v0, vector< E, A > &v1, size_t stable_axis=0, size_t num_iter=0, E s=E(1))
 Orthonormalize 2 basis vectors in R2.
template<typename E , class A >
void orthonormalize (vector< E, A > &v0, vector< E, A > &v1, vector< E, A > &v2, size_t stable_axis=2, size_t num_iter=0, E s=E(1))
 Orthonormalize 3 basis vectors in R3.
template<typename LeftT , typename RightT >
detail::OuterPromote< LeftT,
RightT >::promoted_matrix 
outer (const LeftT &left, const RightT &right)
template<class VecT >
vector< typename
VecT::value_type, fixed< 2 > > 
perp (const VecT &v)
template<typename LeftT , typename RightT >
detail::DotPromote< LeftT,
RightT >::promoted_scalar 
perp_dot (const LeftT &left, const RightT &right)
 perp_dot()
template<typename E , class A >
void polar_to_cartesian (E radius, E theta, vector< E, A > &v)
size_t prev (size_t i, size_t N)
 Return previous, with cycling, in a series of N non-negative integers.
template<class MatT_1 , class MatT_2 , class MatT_3 , class VecT >
vector< typename
VecT::value_type, fixed< 3 > > 
project_point (const MatT_1 &modelview, const MatT_2 &projection, const MatT_3 &viewport, const VecT &p)
template<class MatT_1 , class MatT_2 , class MatT_3 , class MatT_4 , class VecT >
vector< typename
VecT::value_type, fixed< 3 > > 
project_point (const MatT_1 &model, const MatT_2 &view, const MatT_3 &projection, const MatT_4 &viewport, const VecT &p)
template<class VecT_1 , class VecT_2 >
detail::CrossPromote< VecT_1,
VecT_2 >::promoted_vector 
project_to_hplane (const VecT_1 &v, const VecT_2 &n)
template<class QuatT >
vector< typename
QuatT::value_type, fixed< 3 > > 
quaternion_get_basis_vector (const QuatT &q, size_t i)
 Get the i'th basis vector of a quaternion rotation.
template<class QuatT , typename E , class A >
void quaternion_get_basis_vectors (const QuatT &q, vector< E, A > &x, vector< E, A > &y, vector< E, A > &z)
 Get the basis vectors of a quaternion rotation.
template<class QuatT >
vector< typename
QuatT::value_type, fixed< 3 > > 
quaternion_get_x_basis_vector (const QuatT &q)
 Get the x basis vector of a quaternion rotation.
template<class QuatT >
vector< typename
QuatT::value_type, fixed< 3 > > 
quaternion_get_y_basis_vector (const QuatT &q)
 Get the y basis vector of a quaternion rotation.
template<class QuatT >
vector< typename
QuatT::value_type, fixed< 3 > > 
quaternion_get_z_basis_vector (const QuatT &q)
 Get the z basis vector of a quaternion rotation.
template<class E , class A , class O , class C >
void quaternion_rotate_about_local_axis (quaternion< E, A, O, C > &q, size_t axis, E angle)
template<class E , class A , class O , class C >
void quaternion_rotate_about_local_x (quaternion< E, A, O, C > &q, E angle)
template<class E , class A , class O , class C >
void quaternion_rotate_about_local_y (quaternion< E, A, O, C > &q, E angle)
template<class E , class A , class O , class C >
void quaternion_rotate_about_local_z (quaternion< E, A, O, C > &q, E angle)
template<class E , class A , class O , class C >
void quaternion_rotate_about_world_axis (quaternion< E, A, O, C > &q, size_t axis, E angle)
template<class E , class A , class O , class C >
void quaternion_rotate_about_world_x (quaternion< E, A, O, C > &q, E angle)
template<class E , class A , class O , class C >
void quaternion_rotate_about_world_y (quaternion< E, A, O, C > &q, E angle)
template<class E , class A , class O , class C >
void quaternion_rotate_about_world_z (quaternion< E, A, O, C > &q, E angle)
template<typename E , class A , class O , class C , class VecT_1 , class VecT_2 >
void quaternion_rotation_aim_at (quaternion< E, A, O, C > &q, const VecT_1 &pos, const VecT_2 &target, AxisOrder order=axis_order_zyx)
 See vector_ortho.h for details.
template<typename E , class A , class O , class C , class VecT_1 , class VecT_2 , class VecT_3 >
void quaternion_rotation_aim_at (quaternion< E, A, O, C > &q, const VecT_1 &pos, const VecT_2 &target, const VecT_3 &reference, AxisOrder order=axis_order_zyx)
 See vector_ortho.h for details.
template<typename E , class A , class O , class C , class VecT_1 , class VecT_2 , class VecT_3 >
void quaternion_rotation_aim_at_axial (quaternion< E, A, O, C > &q, const VecT_1 &pos, const VecT_2 &target, const VecT_3 &axis, AxisOrder order=axis_order_zyx)
 See vector_ortho.h for details.
template<typename E , class A , class O , class C , class VecT >
void quaternion_rotation_align (quaternion< E, A, O, C > &q, const VecT &align, bool normalize=true, AxisOrder order=axis_order_zyx)
 See vector_ortho.h for details.
template<typename E , class A , class O , class C , class VecT_1 , class VecT_2 >
void quaternion_rotation_align (quaternion< E, A, O, C > &q, const VecT_1 &align, const VecT_2 &reference, bool normalize=true, AxisOrder order=axis_order_zyx)
 See vector_ortho.h for details.
template<typename E , class A , class O , class C , class VecT_1 , class VecT_2 >
void quaternion_rotation_align_axial (quaternion< E, A, O, C > &q, const VecT_1 &align, const VecT_2 &axis, bool normalize=true, AxisOrder order=axis_order_zyx)
 See vector_ortho.h for details.
template<typename E , class A , class O , class C , class MatT >
void quaternion_rotation_align_viewplane (quaternion< E, A, O, C > &q, const MatT &view_matrix, Handedness handedness, AxisOrder order=axis_order_zyx)
 See vector_ortho.h for details.
template<typename E , class A , class O , class C , class MatT >
void quaternion_rotation_align_viewplane_LH (quaternion< E, A, O, C > &q, const MatT &view_matrix, AxisOrder order=axis_order_zyx)
 See vector_ortho.h for details.
template<typename E , class A , class O , class C , class MatT >
void quaternion_rotation_align_viewplane_RH (quaternion< E, A, O, C > &q, const MatT &view_matrix, AxisOrder order=axis_order_zyx)
 See vector_ortho.h for details.
template<class E , class A , class O , class C , class VecT >
void quaternion_rotation_axis_angle (quaternion< E, A, O, C > &q, const VecT &axis, E angle)
 Build a quaternion from an axis-angle pair.
template<class QuatT_1 , class QuatT_2 >
et::QuaternionPromote2
< QuatT_1, QuatT_2 >
::temporary_type 
quaternion_rotation_difference (const QuatT_1 &q1, const QuatT_2 &q2)
 Return the rotational 'difference' between two quaternions.
template<class E , class A , class O , class C >
void quaternion_rotation_euler (quaternion< E, A, O, C > &q, E angle_0, E angle_1, E angle_2, EulerOrder order)
 Build a quaternion from an Euler-angle triple.
template<class E , class A , class O , class C , class MatT >
void quaternion_rotation_matrix (quaternion< E, A, O, C > &q, const MatT &m)
 Build a quaternion from a rotation matrix.
template<class E , class A , class O , class C , class VecT_1 , class VecT_2 >
void quaternion_rotation_vec_to_vec (quaternion< E, A, O, C > &q, const VecT_1 &v1, const VecT_2 &v2, bool unit_length_vectors=false)
 Build a quaternion to rotate from one vector to another.
template<class E , class A , class O , class C >
void quaternion_rotation_world_axis (quaternion< E, A, O, C > &q, size_t axis, E angle)
 Build a quaternion representing a rotation about the given world axis.
template<class E , class A , class O , class C >
void quaternion_rotation_world_x (quaternion< E, A, O, C > &q, E angle)
 Build a quaternion representing a rotation about the world x axis.
template<class E , class A , class O , class C >
void quaternion_rotation_world_y (quaternion< E, A, O, C > &q, E angle)
 Build a quaternion representing a rotation about the world y axis.
template<class E , class A , class O , class C >
void quaternion_rotation_world_z (quaternion< E, A, O, C > &q, E angle)
 Build a quaternion representing a rotation about the world z axis.
template<typename E , class A , class O , class C >
void quaternion_scale_angle (quaternion< E, A, O, C > &q, E t, E tolerance=epsilon< E >::placeholder())
template<class QuatT , typename E , class A >
void quaternion_to_axis_angle (const QuatT &q, vector< E, A > &axis, E &angle, E tolerance=epsilon< E >::placeholder())
 Convert a quaternion to an axis-angle pair.
template<class QuatT , typename Real >
void quaternion_to_euler (const QuatT &q, Real &angle_0, Real &angle_1, Real &angle_2, EulerOrder order, Real tolerance=epsilon< Real >::placeholder())
 Convert a quaternion to an Euler-angle triple.
template<typename T >
rad (T theta)
 Convert degrees to radians.
size_t random_binary ()
 Random binary (0,1) value.
long random_integer (long min, long max)
int random_polar ()
 Random polar (-1,1) value.
template<typename T >
random_real (T min, T max)
double random_unit ()
 Random real in [0,1].
template<typename E , class A , class VecT >
void random_unit (vector< E, A > &v, const VecT &axis, E theta)
template<typename E , class A >
void random_unit (vector< E, A > &v)
 Random unit 3D or 2D vector.
template<typename XprT >
et::QuaternionXpr< XprT >
::value_type 
real (const et::QuaternionXpr< XprT > &e)
 Returns the real (scalar) part of the QuaternionXpr.
template<typename E , class AT , class OT , class CT >
quaternion< E, AT, OT, CT >
::value_type 
real (const quaternion< E, AT, OT, CT > &q)
 Returns the real part of the quaternion.
template<class VecT_1 , class VecT_2 , typename Real >
vector< typename
et::ScalarPromote< typename
VecT_1::value_type, typename
VecT_2::value_type >::type,
fixed< 3 >> 
rotate_vector (const VecT_1 &v, const VecT_2 &n, Real angle)
 Rotate a 3D vector v about a unit-length vector n.
template<class VecT , typename Real >
vector< typename
VecT::value_type, fixed< 2 > > 
rotate_vector_2D (const VecT &v, Real angle)
 Rotate a 2D vector v about a unit-length vector n.
template<class XprT >
et::VectorXpr< et::MatrixRowOp
< XprT > > 
row (const et::MatrixXpr< XprT > &expr, size_t i)
 Matrix row operator taking an et::MatrixXpr operand.
template<typename E , class AT , typename BO , typename L >
et::VectorXpr< et::MatrixRowOp
< matrix< E, AT, BO, L > > > 
row (const matrix< E, AT, BO, L > &expr, size_t i)
 Matrix row operator taking a matrix operand.
template<typename T >
double sign (T value)
 Sign of input value as double.
template<class VecT_1 , class VecT_2 , class VecT_3 >
detail::DotPromote< typename
detail::CrossPromote< VecT_1,
VecT_2 >::promoted_vector,
VecT_3 >::promoted_scalar 
signed_angle (const VecT_1 &v1, const VecT_2 &v2, const VecT_3 &reference)
 Signed angle between two 3D vectors.
template<class VecT_1 , class VecT_2 >
detail::DotPromote< VecT_1,
VecT_2 >::promoted_scalar 
signed_angle_2D (const VecT_1 &v1, const VecT_2 &v2)
 Signed angle between two 2D vectors.
template<class T1 , class T2 , typename Real >
detail::TypePromote< T1, T2,
typename et::ExprTraits< T1 >
::result_tag >::temporary_type 
slerp (const T1 &t1, const T2 &t2, Real t, Real tolerance=epsilon< Real >::placeholder())
 NOTE: Computation of intermediate rotation matrices for matrix 'squad' doesn't seem to be working correctly.
template<typename E , class A >
void spherical_to_cartesian (E radius, E theta, E phi, size_t axis, SphericalType type, vector< E, A > &v)
template<typename T >
sqr (T value)
 Square a value.
template<typename T >
sqrt_safe (T value)
 Wrap std::sqrt() and clamp argument to [0, inf).
template<class XprT >
et::MatrixTransposeOp< XprT >
::temporary_type 
T (MATXPR_ARG_TYPE expr)
 Matrix transpose operator taking an et::MatrixXpr operand.
template<typename E , class AT , typename BO , typename L >
et::MatrixTransposeOp< matrix
< E, AT, BO, L >
>::temporary_type 
T (const matrix< E, AT, BO, L > &expr)
 Matrix transpose operator taking a matrix operand.
template<class MatT >
MatT::value_type trace (const MatT &m)
 Trace of a square matrix.
template<class MatT >
MatT::value_type trace_2x2 (const MatT &m)
 Trace of the upper-left 2x2 part of a matrix.
template<class MatT >
MatT::value_type trace_3x3 (const MatT &m)
 Trace of the upper-left 3x3 part of a matrix.
template<class MatT , class VecT >
TEMP_VEC3 transform_point (const MatT &m, const VecT &v)
 Apply a 3D affine transform to a 3D point.
template<class MatT , class VecT >
TEMP_VEC2 transform_point_2D (const MatT &m, const VecT &v)
 Apply a 2D affine transform to a 2D point.
template<class MatT , class VecT >
TEMP_VEC3 transform_vector (const MatT &m, const VecT &v)
 Apply a 3D affine transform to a 3D vector.
template<class MatT , class VecT >
TEMP_VEC2 transform_vector_2D (const MatT &m, const VecT &v)
 Apply a 2D affine transform to a 2D vector.
template<class MatT , class VecT >
TEMP_VEC4 transform_vector_4D (const MatT &m, const VecT &v)
 Apply a 4x4 homogeneous transform matrix to a 4D vector.
template<class XprT >
et::MatrixTransposeOp< XprT >
::temporary_type 
transpose (MATXPR_ARG_TYPE expr)
 Matrix transpose operator taking an et::MatrixXpr operand.
template<typename E , class AT , typename BO , typename L >
et::MatrixTransposeOp< matrix
< E, AT, BO, L >
>::temporary_type 
transpose (const matrix< E, AT, BO, L > &expr)
 Matrix transpose operator taking a matrix operand.
template<class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , typename Scalar >
detail::TypePromote< typename
detail::TypePromote< typename
detail::TypePromote< T1, T2,
typename et::ExprTraits< T1 >
::result_tag >::temporary_type,
typename detail::TypePromote
< T3, T4, typename
et::ExprTraits< T3 >
::result_tag >::temporary_type,
typename et::ExprTraits< T1 >
::result_tag >::temporary_type,
typename detail::TypePromote
< typename detail::TypePromote
< T5, T6, typename
et::ExprTraits< T5 >
::result_tag >::temporary_type,
typename detail::TypePromote
< T7, T8, typename
et::ExprTraits< T7 >
::result_tag >::temporary_type,
typename et::ExprTraits< T1 >
::result_tag >::temporary_type,
typename et::ExprTraits< T1 >
::result_tag >::temporary_type 
trilerp (const T1 &val000, const T2 &val100, const T3 &val010, const T4 &val110, const T5 &val001, const T6 &val101, const T7 &val011, const T8 &val111, Scalar u, Scalar v, Scalar w)
 Trilinear interpolation of 8 values.
template<class VecT_1 , class VecT_2 , class VecT_3 >
detail::DotPromote< VecT_1,
typename detail::CrossPromote
< VecT_2, VecT_3 >
::promoted_vector >
::promoted_scalar 
triple_product (const VecT_1 &v1, const VecT_2 &v2, const VecT_3 &v3)
 Return the triple product of three 3D vectors.
template<class LeftT , class RightT >
detail::CrossPromote< LeftT,
RightT >::promoted_vector 
unit_cross (const LeftT &left, const RightT &right)
 Return normalized cross product of two vectors.
template<class MatT_1 , class MatT_2 , class MatT_3 , class VecT >
vector< typename
VecT::value_type, fixed< 3 > > 
unproject_point (const MatT_1 &modelview, const MatT_2 &projection, const MatT_3 &viewport, const VecT &p)
template<class MatT_1 , class MatT_2 , class MatT_3 , class MatT_4 , class VecT >
vector< typename
VecT::value_type, fixed< 3 > > 
unproject_point (const MatT_1 &model, const MatT_2 &view, const MatT_3 &projection, const MatT_4 &viewport, const VecT &p)
template<class VecT_1 , class VecT_2 >
detail::DotPromote< VecT_1,
VecT_2 >::promoted_scalar 
unsigned_angle (const VecT_1 &v1, const VecT_2 &v2)
 Unsigned angle between two 3D vectors.
template<class VecT_1 , class VecT_2 >
detail::DotPromote< VecT_1,
VecT_2 >::promoted_scalar 
unsigned_angle_2D (const VecT_1 &v1, const VecT_2 &v2)
 Unsigned angle between two 2D vectors.
template<typename T >
wrap (T value, T min, T max)
 Wrap input value to the range [min,max].
vector< double, fixed< 2 > > x_axis_2D ()
 Return a the 2D x cardinal axis.
vector< double, fixed< 3 > > x_axis_3D ()
 Return a the 3D x cardinal axis.
template<typename T >
xfov_to_yfov (T xfov, T aspect)
 Convert horizontal field of view to vertical field of view.
template<typename T >
xzoom_to_yzoom (T xzoom, T aspect)
 Convert horizontal zoom to vertical zoom.
vector< double, fixed< 2 > > y_axis_2D ()
 Return a the 2D y cardinal axis.
vector< double, fixed< 3 > > y_axis_3D ()
 Return a the 3D y cardinal axis.
template<typename T >
yfov_to_xfov (T yfov, T aspect)
 Convert vertical field of view to horizontal field of view.
template<typename T >
yzoom_to_xzoom (T yzoom, T aspect)
 Convert vertical zoom to horizontal zoom.
vector< double, fixed< 3 > > z_axis_3D ()
 Return a the 3D z cardinal axis.
template<size_t N>
vector< double, fixed< N > > zero ()
 Return an N-d zero vector.
vector< double, fixed< 2 > > zero_2D ()
 Return the 2D zero vector.
matrix< double, fixed
< 2, 2 >, row_basis, row_major
zero_2x2 ()
 Return the 2x2 zero matrix.
vector< double, fixed< 3 > > zero_3D ()
 Return the 3D zero vector.
matrix< double, fixed
< 3, 3 >, row_basis, row_major
zero_3x3 ()
 Return the 3x3 zero matrix.
vector< double, fixed< 4 > > zero_4D ()
 Return the 4D zero vector.
matrix< double, fixed
< 4, 4 >, row_basis, row_major
zero_4x4 ()
 Return the 4x4 zero matrix.
template<typename T >
zoom_to_fov (T zoom)
 Convert zoom factor to field of view.

Typedef Documentation

typedef constants<double> cml::constantsd

Definition at line 126 of file typedef.h.

typedef constants<float> cml::constantsf

Definition at line 125 of file typedef.h.

typedef epsilon<double> cml::epsilond

Definition at line 130 of file typedef.h.

typedef epsilon<float> cml::epsilonf

Definition at line 129 of file typedef.h.

typedef matrix< double, fixed<2,2> > cml::matrix22d

Definition at line 41 of file typedef.h.

typedef matrix< double, fixed<2,2>, col_basis, col_major > cml::matrix22d_c

Definition at line 48 of file typedef.h.

typedef matrix< double, fixed<2,2>, row_basis, row_major > cml::matrix22d_r

Definition at line 47 of file typedef.h.

typedef matrix< float, fixed<2,2> > cml::matrix22f

Definition at line 40 of file typedef.h.

typedef matrix< float, fixed<2,2>, col_basis, col_major > cml::matrix22f_c

Definition at line 46 of file typedef.h.

typedef matrix< float, fixed<2,2>, row_basis, row_major > cml::matrix22f_r

Definition at line 45 of file typedef.h.

typedef matrix< int, fixed<2,2> > cml::matrix22i

Definition at line 39 of file typedef.h.

typedef matrix< int, fixed<2,2>, col_basis, col_major > cml::matrix22i_c

Definition at line 44 of file typedef.h.

typedef matrix< int, fixed<2,2>, row_basis, row_major > cml::matrix22i_r

Definition at line 43 of file typedef.h.

typedef matrix< double, fixed<2,3>, col_basis, col_major > cml::matrix23d_c

Definition at line 81 of file typedef.h.

typedef matrix< float, fixed<2,3>, col_basis, col_major > cml::matrix23f_c

Definition at line 80 of file typedef.h.

typedef matrix< int, fixed<2,3>, col_basis, col_major > cml::matrix23i_c

Definition at line 79 of file typedef.h.

typedef matrix< double, fixed<3,2>, row_basis, row_major > cml::matrix32d_r

Definition at line 77 of file typedef.h.

typedef matrix< float, fixed<3,2>, row_basis, row_major > cml::matrix32f_r

Definition at line 76 of file typedef.h.

typedef matrix< int, fixed<3,2>, row_basis, row_major > cml::matrix32i_r

Definition at line 75 of file typedef.h.

typedef matrix< double, fixed<3,3> > cml::matrix33d

Definition at line 53 of file typedef.h.

typedef matrix< double, fixed<3,3>, col_basis, col_major > cml::matrix33d_c

Definition at line 60 of file typedef.h.

typedef matrix< double, fixed<3,3>, row_basis, row_major > cml::matrix33d_r

Definition at line 59 of file typedef.h.

typedef matrix< float, fixed<3,3> > cml::matrix33f

Definition at line 52 of file typedef.h.

typedef matrix< float, fixed<3,3>, col_basis, col_major > cml::matrix33f_c

Definition at line 58 of file typedef.h.

typedef matrix< float, fixed<3,3>, row_basis, row_major > cml::matrix33f_r

Definition at line 57 of file typedef.h.

typedef matrix< int, fixed<3,3> > cml::matrix33i

Definition at line 51 of file typedef.h.

typedef matrix< int, fixed<3,3>, col_basis, col_major > cml::matrix33i_c

Definition at line 56 of file typedef.h.

typedef matrix< int, fixed<3,3>, row_basis, row_major > cml::matrix33i_r

Definition at line 55 of file typedef.h.

typedef matrix< double, fixed<3,4>, col_basis, col_major > cml::matrix34d_c

Definition at line 89 of file typedef.h.

typedef matrix< float, fixed<3,4>, col_basis, col_major > cml::matrix34f_c

Definition at line 88 of file typedef.h.

typedef matrix< int, fixed<3,4>, col_basis, col_major > cml::matrix34i_c

Definition at line 87 of file typedef.h.

typedef matrix< double, fixed<4,3>, row_basis, row_major > cml::matrix43d_r

Definition at line 85 of file typedef.h.

typedef matrix< float, fixed<4,3>, row_basis, row_major > cml::matrix43f_r

Definition at line 84 of file typedef.h.

typedef matrix< int, fixed<4,3>, row_basis, row_major > cml::matrix43i_r

Definition at line 83 of file typedef.h.

typedef matrix< double, fixed<4,4> > cml::matrix44d

Definition at line 65 of file typedef.h.

typedef matrix< double, fixed<4,4>, col_basis, col_major > cml::matrix44d_c

Definition at line 72 of file typedef.h.

typedef matrix< double, fixed<4,4>, row_basis, row_major > cml::matrix44d_r

Definition at line 71 of file typedef.h.

typedef matrix< float, fixed<4,4> > cml::matrix44f

Definition at line 64 of file typedef.h.

typedef matrix< float, fixed<4,4>, col_basis, col_major > cml::matrix44f_c

Definition at line 70 of file typedef.h.

typedef matrix< float, fixed<4,4>, row_basis, row_major > cml::matrix44f_r

Definition at line 69 of file typedef.h.

typedef matrix< int, fixed<4,4> > cml::matrix44i

Definition at line 63 of file typedef.h.

typedef matrix< int, fixed<4,4>, col_basis, col_major > cml::matrix44i_c

Definition at line 68 of file typedef.h.

typedef matrix< int, fixed<4,4>, row_basis, row_major > cml::matrix44i_r

Definition at line 67 of file typedef.h.

typedef std::pair<size_t,size_t> cml::matrix_size

Definition at line 80 of file common.h.

typedef matrix< double, dynamic<> > cml::matrixd

Definition at line 114 of file typedef.h.

typedef matrix< double, dynamic<>, col_basis, col_major > cml::matrixd_c

Definition at line 121 of file typedef.h.

typedef matrix< double, dynamic<>, row_basis, row_major > cml::matrixd_r

Definition at line 120 of file typedef.h.

typedef matrix< float, dynamic<> > cml::matrixf

Definition at line 113 of file typedef.h.

typedef matrix< float, dynamic<>, col_basis, col_major > cml::matrixf_c

Definition at line 119 of file typedef.h.

typedef matrix< float, dynamic<>, row_basis, row_major > cml::matrixf_r

Definition at line 118 of file typedef.h.

typedef matrix< int, dynamic<> > cml::matrixi

Definition at line 112 of file typedef.h.

typedef matrix< int, dynamic<>, col_basis, col_major > cml::matrixi_c

Definition at line 117 of file typedef.h.

typedef matrix< int, dynamic<>, row_basis, row_major > cml::matrixi_r

Definition at line 116 of file typedef.h.

typedef quaternion<double> cml::quaterniond

Definition at line 102 of file typedef.h.

Definition at line 98 of file typedef.h.

Definition at line 100 of file typedef.h.

typedef quaternion<float> cml::quaternionf

Definition at line 101 of file typedef.h.

Definition at line 94 of file typedef.h.

Definition at line 96 of file typedef.h.

typedef vector< double, fixed<2> > cml::vector2d

Definition at line 27 of file typedef.h.

typedef vector< float, fixed<2> > cml::vector2f

Definition at line 26 of file typedef.h.

typedef vector< int, fixed<2> > cml::vector2i

Definition at line 25 of file typedef.h.

typedef vector< double, fixed<3> > cml::vector3d

Definition at line 31 of file typedef.h.

typedef vector< float, fixed<3> > cml::vector3f

Definition at line 30 of file typedef.h.

typedef vector< int, fixed<3> > cml::vector3i

Definition at line 29 of file typedef.h.

typedef vector< double, fixed<4> > cml::vector4d

Definition at line 35 of file typedef.h.

typedef vector< float, fixed<4> > cml::vector4f

Definition at line 34 of file typedef.h.

typedef vector< int, fixed<4> > cml::vector4i

Definition at line 33 of file typedef.h.

typedef vector< double, dynamic<> > cml::vectord

Definition at line 108 of file typedef.h.

typedef vector< float, dynamic<> > cml::vectorf

Definition at line 107 of file typedef.h.

typedef vector< int, dynamic<> > cml::vectori

Definition at line 106 of file typedef.h.


Enumeration Type Documentation

Enumerator:
axis_order_xyz 
axis_order_xzy 
axis_order_yzx 
axis_order_yxz 
axis_order_zxy 
axis_order_zyx 

Definition at line 70 of file helper.h.

Enumerator:
axis_order_xy 
axis_order_yx 

Definition at line 115 of file helper.h.

Enumerator:
euler_order_xyz 
euler_order_xyx 
euler_order_xzy 
euler_order_xzx 
euler_order_yzx 
euler_order_yzy 
euler_order_yxz 
euler_order_yxy 
euler_order_zxy 
euler_order_zxz 
euler_order_zyx 
euler_order_zyz 

Definition at line 29 of file helper.h.

Enumerator:
left_handed 
right_handed 

Definition at line 142 of file helper.h.

Enumerator:
latitude 
colatitude 

Definition at line 154 of file helper.h.

enum cml::ZClip

Enumerator:
z_clip_neg_one 
z_clip_zero 

Definition at line 148 of file helper.h.


Function Documentation

template<typename T >
T cml::acos_safe ( theta  )  [inline]

Wrap std::acos() and clamp argument to [-1, 1].

Definition at line 56 of file util.h.

References clamp(), and T().

Referenced by cml::et::BinaryQuaternionOp< LeftT, RightT, OpT >::log(), cml::et::UnaryQuaternionOp< ExprT, OpT >::log(), cml::quaternion< Element, ArrayType, Order, Cross >::log(), random_unit(), and cml::detail::slerp().

Here is the call graph for this function:

Here is the caller graph for this function:

template<typename T >
T cml::asin_safe ( theta  )  [inline]

Wrap std::asin() and clamp argument to [-1, 1].

Definition at line 62 of file util.h.

References clamp(), and T().

Here is the call graph for this function:

template<size_t N>
vector< double, fixed<N> > cml::axis ( size_t  i  )  [inline]

Return an N-d cardinal axis by index.

Definition at line 44 of file misc.h.

References cml::detail::CheckValidArg().

Referenced by matrix_scale_rotation_angle(), orthonormal_basis(), orthonormal_basis_2D(), and quaternion_scale_angle().

Here is the call graph for this function:

Here is the caller graph for this function:

vector< double, fixed<2> > cml::axis_2D ( size_t  i  )  [inline]

Return a 2D cardinal axis by index.

Definition at line 112 of file misc.h.

Referenced by x_axis_2D(), and y_axis_2D().

Here is the caller graph for this function:

vector< double, fixed<3> > cml::axis_3D ( size_t  i  )  [inline]

Return a 3D cardinal axis by index.

Definition at line 117 of file misc.h.

Referenced by orthonormal_basis(), random_unit(), x_axis_3D(), y_axis_3D(), and z_axis_3D().

Here is the caller graph for this function:

template<class T1 , class T2 , class T3 , class T4 , typename Scalar >
detail::TypePromote< typename detail::TypePromote< T1,T2,typename et::ExprTraits<T1>::result_tag >::temporary_type, typename detail::TypePromote< T3,T4,typename et::ExprTraits<T3>::result_tag >::temporary_type, typename et::ExprTraits<T1>::result_tag>::temporary_type cml::bilerp ( const T1 &  val00,
const T2 &  val10,
const T3 &  val01,
const T4 &  val11,
Scalar  u,
Scalar  v 
) [inline]

Definition at line 1010 of file interpolation.h.

References cml::detail::InterpResize().

Here is the call graph for this function:

template<class VecT , typename Real >
void cml::cartesian_to_cylindrical ( const VecT &  v,
Real &  radius,
Real &  theta,
Real &  height,
size_t  axis,
Real  tolerance = epsilon<Real>::placeholder() 
) [inline]

Definition at line 100 of file coord_conversion.h.

References cml::detail::CheckIndex3(), cml::detail::CheckVec3(), cyclic_permutation(), and length().

Here is the call graph for this function:

template<class VecT , typename Real >
void cml::cartesian_to_polar ( const VecT &  v,
Real &  radius,
Real &  theta,
Real  tolerance = epsilon<Real>::placeholder() 
) [inline]

Definition at line 148 of file coord_conversion.h.

References cml::detail::CheckVec2().

Here is the call graph for this function:

template<class VecT , typename Real >
void cml::cartesian_to_spherical ( const VecT &  v,
Real &  radius,
Real &  theta,
Real &  phi,
size_t  axis,
SphericalType  type,
Real  tolerance = epsilon<Real>::placeholder() 
) [inline]

Definition at line 119 of file coord_conversion.h.

References cml::detail::CheckIndex3(), cml::detail::CheckVec3(), cyclic_permutation(), latitude, length(), and cml::constants< Float >::pi_over_2().

Here is the call graph for this function:

template<typename T >
T cml::clamp ( value,
min,
max 
) [inline]

Clamp input value to the range [min, max].

Definition at line 37 of file util.h.

Referenced by acos_safe(), and asin_safe().

Here is the caller graph for this function:

template<class XprT >
et::VectorXpr< et::MatrixColOp<XprT> > cml::col ( const et::MatrixXpr< XprT > &  expr,
size_t  i 
) [inline]

Matrix col operator taking an et::MatrixXpr operand.

The parse tree is automatically compressed by hoisting the MatrixXpr's subexpression into the subexpression of the MatrixColOp.

Definition at line 250 of file matrix_rowcol.h.

References cml::et::MatrixXpr< ExprT >::expression().

Here is the call graph for this function:

template<typename E , class AT , typename BO , typename L >
et::VectorXpr< et::MatrixColOp< matrix<E,AT,BO,L> > > cml::col ( const matrix< E, AT, BO, L > &  expr,
size_t  i 
) [inline]

Matrix col operator taking a matrix operand.

Definition at line 237 of file matrix_rowcol.h.

Referenced by cml::detail::inverse_f< MatT, _tag >::operator()().

Here is the caller graph for this function:

template<class XprT >
et::QuaternionXpr< et::ConjugateOp<XprT> > cml::conjugate ( QUATXPR_ARG_TYPE  arg  )  [inline]

Conjugation of a QuaternionXpr.

Definition at line 186 of file conjugate.h.

template<typename E , class AT , class OT , class CT >
et::QuaternionXpr< et::ConjugateOp< quaternion<E,AT,OT,CT> > > cml::conjugate ( const quaternion< E, AT, OT, CT > &  arg  )  [inline]

Conjugation of a quaternion.

Definition at line 177 of file conjugate.h.

Referenced by cml::detail::quaternion_rotation_difference().

Here is the caller graph for this function:

template<typename LeftT , typename RightT >
detail::CrossPromote<LeftT,RightT>::promoted_vector cml::cross ( const LeftT &  left,
const RightT &  right 
) [inline]

Definition at line 270 of file vector_products.h.

References CML_STATIC_REQUIRE_M, and cml::detail::Require3D().

Referenced by cml::detail::intersect_planes(), matrix_look_at(), orthonormal_basis(), quaternion_rotation_vec_to_vec(), random_unit(), rotate_vector(), signed_angle(), triple_product(), unit_cross(), and unsigned_angle().

Here is the call graph for this function:

Here is the caller graph for this function:

template<class VecT >
vector< typename VecT::value_type, fixed<3> > cml::cross_cardinal ( size_t  i,
const VecT &  v 
) [inline]

Return the cross product of the i'th cardinal basis vector and v.

Definition at line 89 of file vector_misc.h.

References cml::detail::CheckIndex3(), cml::detail::CheckVec3(), and cyclic_permutation().

Here is the call graph for this function:

template<class VecT >
vector< typename VecT::value_type, fixed<3> > cml::cross_cardinal ( const VecT &  v,
size_t  i 
) [inline]

Return the cross product of v and the i'th cardinal basis vector.

Definition at line 69 of file vector_misc.h.

References cml::detail::CheckIndex3(), cml::detail::CheckVec3(), and cyclic_permutation().

Here is the call graph for this function:

template<typename T >
T cml::cub ( value  )  [inline]

Cube a value.

Definition at line 81 of file util.h.

void cml::cyclic_permutation ( size_t  first,
size_t i,
size_t j,
size_t k,
size_t l 
) [inline]

Cyclic permutation of the set { 0, 1, 2, 3 }, starting with 'first'.

Definition at line 125 of file util.h.

References next().

Here is the call graph for this function:

void cml::cyclic_permutation ( size_t  first,
size_t i,
size_t j,
size_t k 
) [inline]

Cyclic permutation of the set { 0, 1, 2 }, starting with 'first'.

Definition at line 117 of file util.h.

References next().

Here is the call graph for this function:

void cml::cyclic_permutation ( size_t  first,
size_t i,
size_t j 
) [inline]

template<typename E , class A >
void cml::cylindrical_to_cartesian ( radius,
theta,
height,
size_t  axis,
vector< E, A > &  v 
) [inline]

Definition at line 40 of file coord_conversion.h.

References cml::detail::CheckIndex3(), cml::detail::CheckVec3(), and cyclic_permutation().

Here is the call graph for this function:

template<typename T >
T cml::deg ( theta  )  [inline]

Convert radians to degrees.

Definition at line 137 of file util.h.

References cml::constants< Float >::deg_per_rad().

Here is the call graph for this function:

template<typename XprT >
XprT::value_type cml::determinant ( const et::MatrixXpr< XprT > &  e  )  [inline]

Determinant of a matrix expression.

Definition at line 181 of file determinant.h.

References cml::detail::determinant().

Here is the call graph for this function:

template<typename E , class AT , class BO , class L >
E cml::determinant ( const matrix< E, AT, BO, L > &  M  )  [inline]

Determinant of a matrix.

Definition at line 173 of file determinant.h.

References cml::detail::determinant().

Here is the call graph for this function:

template<typename LeftT , typename RightT >
detail::DotPromote<LeftT,RightT>::promoted_scalar cml::dot ( const LeftT &  left,
const RightT &  right 
) [inline]

Vector dot (inner) product implementation.

Definition at line 207 of file vector_products.h.

References CML_STATIC_REQUIRE_M, and cml::detail::UnrollDot().

Here is the call graph for this function:

template<class XprT1 , class XprT2 >
detail::DotPromote< et::QuaternionXpr<XprT1>, et::QuaternionXpr<XprT2>>::promoted_scalar cml::dot ( QUATXPR_ARG_TYPE_N(1)  p,
QUATXPR_ARG_TYPE_N(2)  q 
) [inline]

Definition at line 63 of file quaternion_dot.h.

References cml::detail::quaternion_dot().

Here is the call graph for this function:

template<class XprT , typename E , class AT , class OT , class CT >
detail::DotPromote< et::QuaternionXpr<XprT>, quaternion<E,AT,OT,CT>>::promoted_scalar cml::dot ( QUATXPR_ARG_TYPE  p,
const quaternion< E, AT, OT, CT > &  q 
) [inline]

Definition at line 54 of file quaternion_dot.h.

References cml::detail::quaternion_dot().

Here is the call graph for this function:

template<typename E , class AT , class OT , class CT , class XprT >
detail::DotPromote< quaternion<E,AT,OT,CT>, et::QuaternionXpr<XprT>>::promoted_scalar cml::dot ( const quaternion< E, AT, OT, CT > &  p,
QUATXPR_ARG_TYPE  q 
) [inline]

Definition at line 45 of file quaternion_dot.h.

References cml::detail::quaternion_dot().

Here is the call graph for this function:

template<typename E1 , class AT1 , typename E2 , class AT2 , class OT , class CT >
detail::DotPromote< quaternion<E1,AT1,OT,CT>, quaternion<E2,AT2,OT,CT>>::promoted_scalar cml::dot ( const quaternion< E1, AT1, OT, CT > &  p,
const quaternion< E2, AT2, OT, CT > &  q 
) [inline]

template<class QuatT >
QuatT::temporary_type cml::exp ( const QuatT &  q,
typename QuatT::value_type  tolerance = epsilon<typename QuatT::value_type>::placeholder() 
) [inline]

Exponential function of a quaternion or quaternion expression.

Definition at line 157 of file quaternion_functions.h.

References cml::detail::CheckQuat().

Here is the call graph for this function:

template<class MatT , typename Real >
void cml::extract_frustum_planes ( const MatT &  m,
Real  planes[6][4],
ZClip  z_clip,
bool  normalize = true 
) [inline]

Definition at line 67 of file frustum.h.

References cml::detail::CheckMatHomogeneous3D(), extract_near_frustum_plane(), inv_sqrt(), and normalize().

Here is the call graph for this function:

template<class MatT , typename Real >
void cml::extract_frustum_planes ( const MatT &  modelview,
const MatT &  projection,
Real  planes[6][4],
ZClip  z_clip,
bool  normalize = true 
) [inline]

Definition at line 37 of file frustum.h.

References cml::detail::matrix_concat_transforms_4x4(), and normalize().

Referenced by make_pick_volume().

Here is the call graph for this function:

Here is the caller graph for this function:

template<class MatT , class PlaneT >
void cml::extract_near_frustum_plane ( const MatT &  m,
PlaneT &  plane,
ZClip  z_clip 
) [inline]

Extract the near plane of a frustum given a concatenated modelview and projection matrix with the given near z-clipping range.

The plane is not normalized.

Note:
The plane is in ax+by+cz+d = 0 form.
Warning:
The matrix is assumed to be a homogeneous transformation matrix.

Definition at line 138 of file frustum.h.

References z_clip_neg_one.

Referenced by extract_frustum_planes().

Here is the caller graph for this function:

template<typename T >
T cml::fov_to_zoom ( fov  )  [inline]

Convert field of view to zoom factor.

Definition at line 354 of file util.h.

References T().

Here is the call graph for this function:

template<typename Real , typename E , class A >
void cml::get_frustum_corners ( Real  planes[6][4],
vector< E, A >  corners[8] 
) [inline]

Definition at line 201 of file frustum.h.

References cml::detail::intersect_planes().

Here is the call graph for this function:

template<typename E , class AT , class OT , class CT >
quaternion<E,AT,OT,CT> cml::identity ( const quaternion< E, AT, OT, CT > &  arg  )  [inline]

Set a quaternion to the multiplicative identity.

The input quaternion is not changed.

Definition at line 134 of file quaternion_functions.h.

References cml::quaternion< Element, ArrayType, Order, Cross >::identity().

Here is the call graph for this function:

template<typename E , class AT , typename BO , typename L >
matrix<E,AT,BO,L> cml::identity ( const matrix< E, AT, BO, L > &  m  )  [inline]

Set the given matrix to the identity matrix.

This only makes sense for a square matrix, but no error will be signaled if the matrix is not square.

Todo:
This should return a MatrixXpr to allow loop unrolling, as should the class method.

Definition at line 28 of file matrix_functions.h.

References cml::et::detail::Resize().

Here is the call graph for this function:

template<size_t N>
matrix< double, fixed<N,N>, row_basis, row_major > cml::identity (  )  [inline]

Return an NxN identity matrix.

Definition at line 68 of file misc.h.

matrix< double, fixed<2,2>, row_basis, row_major > cml::identity_2x2 (  )  [inline]

Return the 2x2 identity matrix.

Definition at line 170 of file misc.h.

matrix< double, fixed<3,3>, row_basis, row_major > cml::identity_3x3 (  )  [inline]

Return the 3x3 identity matrix.

Definition at line 175 of file misc.h.

matrix< double, fixed<4,4>, row_basis, row_major > cml::identity_4x4 (  )  [inline]

Return the 4x4 identity matrix.

Definition at line 180 of file misc.h.

template<size_t N, size_t M>
matrix< double, fixed<N,M>, row_basis, row_major > cml::identity_transform (  )  [inline]

Return an NxM identity transform.

Definition at line 79 of file misc.h.

References identity_transform().

Here is the call graph for this function:

template<typename E , class A , class B , class L >
void cml::identity_transform ( matrix< E, A, B, L > &  m  )  [inline]

matrix< double,fixed<2,3>,col_basis,col_major > cml::identity_transform_2x3 (  )  [inline]

Return a 2x3 identity transform.

Definition at line 194 of file misc.h.

matrix< double,fixed<3,2>,row_basis,row_major > cml::identity_transform_3x2 (  )  [inline]

Return a 3x2 identity transform.

Definition at line 189 of file misc.h.

matrix< double,fixed<3,4>,col_basis,col_major > cml::identity_transform_3x4 (  )  [inline]

Return a 3x4 identity transform.

Definition at line 204 of file misc.h.

matrix< double,fixed<4,3>,row_basis,row_major > cml::identity_transform_4x3 (  )  [inline]

Return a 4x3 identity transform.

Definition at line 199 of file misc.h.

template<typename XprT >
et::QuaternionXpr<XprT>::imaginary_type cml::imaginary ( const et::QuaternionXpr< XprT > &  e  )  [inline]

Returns the imaginary (vector) part of the QuaternionXpr.

Definition at line 54 of file quaternion_functions.h.

References cml::et::QuaternionXpr< ExprT >::imaginary().

Here is the call graph for this function:

template<typename E , class AT , class OT , class CT >
quaternion<E,AT,OT,CT>::imaginary_type cml::imaginary ( const quaternion< E, AT, OT, CT > &  q  )  [inline]

Returns the imaginary (vector) part of the quaternion.

Definition at line 45 of file quaternion_functions.h.

References cml::quaternion< Element, ArrayType, Order, Cross >::imaginary().

Here is the call graph for this function:

template<typename T >
bool cml::in_range ( value,
min,
max 
) [inline]

Test input value for inclusion in [min, max].

Definition at line 43 of file util.h.

template<typename T >
size_t cml::index_of_max ( a,
b,
c 
) [inline]

Index of maximum of 3 values.

Definition at line 289 of file util.h.

template<typename T >
size_t cml::index_of_max ( a,
b 
) [inline]

Index of maximum of 2 values.

Definition at line 265 of file util.h.

Referenced by index_of_max_abs(), matrix_to_axis_angle(), and quaternion_rotation_matrix().

Here is the caller graph for this function:

template<typename T >
size_t cml::index_of_max_abs ( a,
b,
c 
) [inline]

Index of maximum of 3 values by magnitude.

Definition at line 295 of file util.h.

References index_of_max().

Here is the call graph for this function:

template<typename T >
size_t cml::index_of_max_abs ( a,
b 
) [inline]

Index of maximum of 2 values by magnitude.

Definition at line 271 of file util.h.

References index_of_max().

Here is the call graph for this function:

template<typename T >
size_t cml::index_of_min ( a,
b,
c 
) [inline]

Index of minimum of 3 values.

Definition at line 301 of file util.h.

template<typename T >
size_t cml::index_of_min ( a,
b 
) [inline]

Index of minimum of 2 values.

Definition at line 277 of file util.h.

Referenced by index_of_min_abs().

Here is the caller graph for this function:

template<typename T >
size_t cml::index_of_min_abs ( a,
b,
c 
) [inline]

Index of minimum of 3 values by magnitude.

Definition at line 307 of file util.h.

References index_of_min().

Here is the call graph for this function:

template<typename T >
size_t cml::index_of_min_abs ( a,
b 
) [inline]

Index of minimum of 2 values by magnitude.

Definition at line 283 of file util.h.

References index_of_min().

Referenced by orthonormal_basis(), and random_unit().

Here is the call graph for this function:

Here is the caller graph for this function:

template<typename T >
T cml::inv_sqrt ( value  )  [inline]

Inverse square root.

Definition at line 87 of file util.h.

References T().

Referenced by extract_frustum_planes().

Here is the call graph for this function:

Here is the caller graph for this function:

template<class XprT >
et::QuaternionXpr< et::QuaternionInverseOp<XprT> > cml::inverse ( QUATXPR_ARG_TYPE  arg  )  [inline]

Inverse of a QuaternionXpr.

Definition at line 204 of file inverse.h.

template<typename E , class AT , class OrderT , class CrossT >
et::QuaternionXpr< et::QuaternionInverseOp< quaternion<E,AT,OrderT,CrossT> > > cml::inverse ( const quaternion< E, AT, OrderT, CrossT > &  arg  )  [inline]

Inverse of a quaternion.

Definition at line 195 of file inverse.h.

template<typename XprT >
et::MatrixXpr<XprT>::temporary_type cml::inverse ( const et::MatrixXpr< XprT > &  e  )  [inline]

Inverse of a matrix expression.

Definition at line 432 of file inverse.h.

References cml::detail::inverse().

Here is the call graph for this function:

template<typename E , class AT , typename BO , typename L >
matrix<E,AT,BO,L>::temporary_type cml::inverse ( const matrix< E, AT, BO, L > &  M  )  [inline]

template<typename XprT >
XprT::value_type cml::length ( VECXPR_ARG_TYPE  arg  )  [inline]

Length of a vector expr.

Definition at line 45 of file vector_functions.h.

template<typename E , class AT >
vector<E,AT>::value_type cml::length ( const vector< E, AT > &  arg  )  [inline]

Length of a vector.

Definition at line 37 of file vector_functions.h.

template<typename T >
T cml::length ( x,
y,
z 
) [inline]

Length in R3.

Definition at line 259 of file util.h.

References length_squared().

Here is the call graph for this function:

template<typename T >
T cml::length ( x,
y 
) [inline]

Length in R2.

Definition at line 253 of file util.h.

References length_squared().

Here is the call graph for this function:

template<typename XprT >
XprT::value_type cml::length ( QUATXPR_ARG_TYPE  arg  )  [inline]

Length of a quaternion expr.

Definition at line 102 of file quaternion_functions.h.

template<typename E , class AT , class OT , class CT >
quaternion<E,AT,OT,CT>::value_type cml::length ( const quaternion< E, AT, OT, CT > &  arg  )  [inline]

template<typename XprT >
XprT::value_type cml::length_squared ( VECXPR_ARG_TYPE  arg  )  [inline]

Squared length of a vector expr.

Definition at line 29 of file vector_functions.h.

template<typename E , class AT >
vector<E,AT>::value_type cml::length_squared ( const vector< E, AT > &  arg  )  [inline]

Squared length of a vector.

Definition at line 21 of file vector_functions.h.

template<typename T >
T cml::length_squared ( x,
y,
z 
) [inline]

Squared length in R3.

Definition at line 247 of file util.h.

template<typename T >
T cml::length_squared ( x,
y 
) [inline]

Squared length in R2.

Definition at line 241 of file util.h.

template<typename XprT >
XprT::value_type cml::length_squared ( QUATXPR_ARG_TYPE  arg  )  [inline]

Squared length of a quaternion expr.

Definition at line 86 of file quaternion_functions.h.

template<typename E , class AT , class OT , class CT >
quaternion<E,AT,OT,CT>::value_type cml::length_squared ( const quaternion< E, AT, OT, CT > &  arg  )  [inline]

template<class T1 , class T2 , typename Scalar >
detail::TypePromote< T1,T2,typename et::ExprTraits<T1>::result_tag>::temporary_type cml::lerp ( const T1 &  val0,
const T2 &  val1,
Scalar  u 
) [inline]

Linear interpolation of 2 values.

Note:
The data points are assumed to be sampled at u = 0 and u = 1, so for interpolation u must lie between 0 and 1.

Definition at line 979 of file interpolation.h.

References cml::detail::InterpResize().

Referenced by cml::detail::nlerp(), cml::detail::nlerp_f< MatT_1, MatT_2, 2 >::operator()(), cml::detail::nlerp_f< MatT_1, MatT_2, 3 >::operator()(), and cml::detail::slerp().

Here is the call graph for this function:

Here is the caller graph for this function:

template<class QuatT >
QuatT::temporary_type cml::log ( const QuatT &  q,
typename QuatT::value_type  tolerance = epsilon<typename QuatT::value_type>::placeholder() 
) [inline]

Log of a quaternion or quaternion expression.

Definition at line 144 of file quaternion_functions.h.

References cml::detail::CheckQuat().

Here is the call graph for this function:

template<typename XprT >
et::MatrixXpr<XprT>::temporary_type cml::lu ( const et::MatrixXpr< XprT > &  e  )  [inline]

LU factorization for a matrix expression.

Definition at line 117 of file lu.h.

References cml::detail::lu_copy().

Here is the call graph for this function:

template<typename E , class AT , typename BO , class L >
matrix<E,AT,BO,L>::temporary_type cml::lu ( const matrix< E, AT, BO, L > &  m  )  [inline]

LU factorization for a matrix.

Definition at line 109 of file lu.h.

References cml::detail::lu_copy().

Referenced by cml::detail::determinant_f< MatT, N >::operator()().

Here is the call graph for this function:

Here is the caller graph for this function:

template<typename MatT , typename VecT >
et::MatVecPromote<MatT,VecT>::temporary_type cml::lu_solve ( const MatT &  LU,
const VecT &  b 
) [inline]

Solve y = LUx for x.

This solves Lb = y for b by forward substitution, then Ux = b for x by backward substitution.

Definition at line 129 of file lu.h.

References cml::et::CheckedSize(), cml::et::CheckedSquare(), and cml::et::detail::Resize().

Here is the call graph for this function:

template<class MatT_1 , class MatT_2 , typename Real >
void cml::make_pick_drag_volume ( Real  pick_x1,
Real  pick_y1,
Real  pick_x2,
Real  pick_y2,
Real  viewport_x,
Real  viewport_y,
Real  viewport_width,
Real  viewport_height,
const MatT_1 &  view,
const MatT_2 &  projection,
Real  planes[6][4],
ZClip  z_clip,
bool  normalize = true 
) [inline]

Definition at line 166 of file picking.h.

References make_pick_volume(), and normalize().

Here is the call graph for this function:

template<class MatT_1 , class MatT_2 , class MatT_3 , typename E , class A >
void cml::make_pick_ray ( pick_x,
pick_y,
const MatT_1 &  view,
const MatT_2 &  projection,
const MatT_3 &  viewport,
vector< E, A > &  origin,
vector< E, A > &  direction,
bool  normalize = true 
) [inline]

Definition at line 59 of file picking.h.

References cml::detail::depth_range_from_viewport_matrix(), normalize(), and unproject_point().

Here is the call graph for this function:

template<class MatT_1 , class MatT_2 , typename Real >
void cml::make_pick_volume ( Real  pick_x,
Real  pick_y,
Real  pick_width,
Real  pick_height,
Real  viewport_x,
Real  viewport_y,
Real  viewport_width,
Real  viewport_height,
const MatT_1 &  view,
const MatT_2 &  projection,
Real  planes[6][4],
ZClip  z_clip,
bool  normalize = true 
) [inline]

Definition at line 112 of file picking.h.

References extract_frustum_planes(), cml::detail::matrix_concat_transforms_4x4(), matrix_pick(), and normalize().

Referenced by make_pick_drag_volume().

Here is the call graph for this function:

Here is the caller graph for this function:

template<class VecT_1 , class VecT_2 >
detail::DotPromote< VecT_1, VecT_2 >::promoted_scalar cml::manhattan_distance ( const VecT_1 &  v1,
const VecT_2 &  v2 
) [inline]

Definition at line 288 of file vector_misc.h.

template<typename T >
T cml::map_range ( value,
min1,
max1,
min2,
max2 
) [inline]

Map input value from [min1, max1] to [min2, max2].

Definition at line 49 of file util.h.

template<typename E , class A , class B , class L , class MatT >
void cml::matrix_3D_affine_from_2D_affine ( matrix< E, A, B, L > &  m,
const MatT &  affine_2D 
) [inline]

Construct a 3D affine transform from a 2D affine transform.

Definition at line 766 of file matrix_transform.h.

References identity_transform(), matrix_get_translation_2D(), matrix_get_x_basis_vector_2D(), matrix_get_y_basis_vector_2D(), matrix_set_basis_vectors_2D(), and matrix_set_translation().

Here is the call graph for this function:

template<typename E , class A , class B , class L , class MatT >
void cml::matrix_3D_affine_from_3D_affine ( matrix< E, A, B, L > &  m,
const MatT &  affine_3D 
) [inline]

Construct a 3D affine transform from another 3D affine transform.

Definition at line 786 of file matrix_transform.h.

References identity_transform(), matrix_get_translation(), matrix_get_x_basis_vector(), matrix_get_y_basis_vector(), matrix_get_z_basis_vector(), matrix_set_basis_vectors(), and matrix_set_translation().

Here is the call graph for this function:

template<typename E , class A , class B , class L , class XprT , class VecT >
void cml::matrix_affine_transform ( matrix< E, A, B, L > &  m,
const et::MatrixXpr< XprT > &  linear,
const VecT &  translation 
) [inline]

3D affine transform from a matrix expression and a translation

Definition at line 719 of file matrix_transform.h.

References matrix_linear_transform(), and matrix_set_translation().

Here is the call graph for this function:

template<typename E , class A , class B , class L , typename ME , class MA , class MB , class ML , class VecT >
void cml::matrix_affine_transform ( matrix< E, A, B, L > &  m,
const matrix< ME, MA, MB, ML > &  linear,
const VecT &  translation 
) [inline]

3D affine transform from a matrix and a translation

Definition at line 710 of file matrix_transform.h.

References matrix_linear_transform(), and matrix_set_translation().

Here is the call graph for this function:

template<typename E , class A , class B , class L , class VecT >
void cml::matrix_affine_transform ( matrix< E, A, B, L > &  m,
angle_0,
angle_1,
angle_2,
EulerOrder  order,
const VecT &  translation 
) [inline]

3D affine transform from an Euler-angle triple and a translation

Definition at line 699 of file matrix_transform.h.

References matrix_rotation_euler(), and matrix_set_translation().

Here is the call graph for this function:

template<typename E , class A , class B , class L , class VecT_1 , class VecT_2 >
void cml::matrix_affine_transform ( matrix< E, A, B, L > &  m,
const VecT_1 &  axis,
angle,
const VecT_2 &  translation 
) [inline]

3D affine transform from an axis-angle pair and a translation

Definition at line 690 of file matrix_transform.h.

References matrix_rotation_axis_angle(), and matrix_set_translation().

Here is the call graph for this function:

template<typename E , class A , class B , class L , class XprT , class VecT >
void cml::matrix_affine_transform ( matrix< E, A, B, L > &  m,
const et::QuaternionXpr< XprT > &  q,
const VecT &  translation 
) [inline]

3D affine transform from a quaternion expression and a translation

Definition at line 679 of file matrix_transform.h.

References matrix_rotation_quaternion(), and matrix_set_translation().

Here is the call graph for this function:

template<typename E , class A , class B , class L , typename QE , class QA , class O , class C , class VecT >
void cml::matrix_affine_transform ( matrix< E, A, B, L > &  m,
const quaternion< QE, QA, O, C > &  q,
const VecT &  translation 
) [inline]

3D affine transform from a quaternion and a translation

Definition at line 669 of file matrix_transform.h.

References matrix_rotation_quaternion(), and matrix_set_translation().

Here is the call graph for this function:

template<typename E , class A , class B , class L , class VecT_1 , class VecT_2 , class VecT_3 , class VecT_4 >
void cml::matrix_affine_transform ( matrix< E, A, B, L > &  m,
const VecT_1 &  x,
const VecT_2 &  y,
const VecT_3 &  z,
const VecT_4 &  translation 
) [inline]

3D affine transform from three basis vectors and a translation

Definition at line 657 of file matrix_transform.h.

References identity_transform(), matrix_set_basis_vectors(), and matrix_set_translation().

Here is the call graph for this function:

template<typename E , class A , class B , class L , class MatT , class VecT >
void cml::matrix_affine_transform_2D ( matrix< E, A, B, L > &  m,
const MatT &  linear,
const VecT &  translation 
) [inline]

2D affine transform from a matrix and a translation

Definition at line 753 of file matrix_transform.h.

References matrix_linear_transform_2D(), and matrix_set_translation_2D().

Here is the call graph for this function:

template<typename E , class A , class B , class L , class VecT >
void cml::matrix_affine_transform_2D ( matrix< E, A, B, L > &  m,
angle,
const VecT &  translation 
) [inline]

2D affine transform from a rotation angle and a translation

Definition at line 744 of file matrix_transform.h.

References matrix_rotation_2D(), and matrix_set_translation_2D().

Here is the call graph for this function:

template<typename E , class A , class B , class L , class VecT_1 , class VecT_2 , class VecT_3 >
void cml::matrix_affine_transform_2D ( matrix< E, A, B, L > &  m,
const VecT_1 &  x,
const VecT_2 &  y,
const VecT_3 &  translation 
) [inline]

2D affine transform from two basis vectors and a translation

Definition at line 734 of file matrix_transform.h.

References identity_transform(), matrix_set_basis_vectors_2D(), and matrix_set_translation_2D().

Here is the call graph for this function:

template<typename E , class A , class B , class L , class VecT_1 , class VecT_2 >
void cml::matrix_aim_at ( matrix< E, A, B, L > &  m,
const VecT_1 &  pos,
const VecT_2 &  target,
AxisOrder  order = axis_order_zyx 
) [inline]

See vector_ortho.h for details.

Definition at line 474 of file matrix_transform.h.

References matrix_rotation_aim_at(), and matrix_set_translation().

Here is the call graph for this function:

template<typename E , class A , class B , class L , class VecT_1 , class VecT_2 , class VecT_3 >
void cml::matrix_aim_at ( matrix< E, A, B, L > &  m,
const VecT_1 &  pos,
const VecT_2 &  target,
const VecT_3 &  reference,
AxisOrder  order = axis_order_zyx 
) [inline]

See vector_ortho.h for details.

Definition at line 463 of file matrix_transform.h.

References matrix_rotation_aim_at(), and matrix_set_translation().

Here is the call graph for this function:

template<typename E , class A , class B , class L , class VecT_1 , class VecT_2 >
void cml::matrix_aim_at_2D ( matrix< E, A, B, L > &  m,
const VecT_1 &  pos,
const VecT_2 &  target,
AxisOrder2D  order = axis_order_xy 
) [inline]

See vector_ortho.h for details.

Definition at line 514 of file matrix_transform.h.

References matrix_rotation_align_2D(), and matrix_set_translation_2D().

Here is the call graph for this function:

template<typename E , class A , class B , class L , class VecT_1 , class VecT_2 , class VecT_3 >
void cml::matrix_aim_at_axial ( matrix< E, A, B, L > &  m,
const VecT_1 &  pos,
const VecT_2 &  target,
const VecT_3 &  axis,
AxisOrder  order = axis_order_zyx 
) [inline]

See vector_ortho.h for details.

Definition at line 484 of file matrix_transform.h.

References matrix_rotation_aim_at_axial(), and matrix_set_translation().

Here is the call graph for this function:

template<typename E , class A , class B , class L , class VecT , class MatT >
void cml::matrix_aim_at_viewplane ( matrix< E, A, B, L > &  m,
const VecT &  pos,
const MatT &  view_matrix,
Handedness  handedness,
AxisOrder  order = axis_order_zyx 
) [inline]

See vector_ortho.h for details.

Definition at line 497 of file matrix_transform.h.

References matrix_rotation_align_viewplane(), and matrix_set_translation().

Here is the call graph for this function:

template<class MatT , typename Real , typename E , class A >
void cml::matrix_decompose_SRT ( const MatT &  m,
Real &  scale_x,
Real &  scale_y,
Real &  scale_z,
vector< E, A > &  axis,
Real &  angle,
vector< E, A > &  translation,
Real  tolerance = epsilon<Real>::placeholder() 
) [inline]

Definition at line 903 of file matrix_transform.h.

References matrix_decompose_SRT(), and matrix_to_axis_angle().

Here is the call graph for this function:

template<class MatT , typename Real , typename E , class A >
void cml::matrix_decompose_SRT ( const MatT &  m,
Real &  scale_x,
Real &  scale_y,
Real &  scale_z,
Real &  angle_0,
Real &  angle_1,
Real &  angle_2,
EulerOrder  order,
vector< E, A > &  translation,
Real  tolerance = epsilon<Real>::placeholder() 
) [inline]

Definition at line 878 of file matrix_transform.h.

References matrix_decompose_SRT(), and matrix_to_euler().

Here is the call graph for this function:

template<class MatT , typename Real , typename QE , class QA , class O , class C , typename VE , class VA >
void cml::matrix_decompose_SRT ( const MatT &  m,
Real &  scale_x,
Real &  scale_y,
Real &  scale_z,
quaternion< QE, QA, O, C > &  rotation,
vector< VE, VA > &  translation 
) [inline]

Definition at line 858 of file matrix_transform.h.

References matrix_decompose_SRT(), and quaternion_rotation_matrix().

Here is the call graph for this function:

template<class MatT , typename Real , typename ME , class MA , class B , class L , typename VE , class VA >
void cml::matrix_decompose_SRT ( const MatT &  m,
Real &  scale_x,
Real &  scale_y,
Real &  scale_z,
matrix< ME, MA, B, L > &  rotation,
vector< VE, VA > &  translation 
) [inline]

Definition at line 816 of file matrix_transform.h.

References cml::detail::CheckMatAffine3D(), cml::detail::CheckMatLinear3D(), matrix_get_basis_vectors(), matrix_get_translation(), and matrix_set_basis_vectors().

Referenced by matrix_decompose_SRT().

Here is the call graph for this function:

Here is the caller graph for this function:

template<class MatT , typename Real , typename E , class A >
void cml::matrix_decompose_SRT_2D ( const MatT &  m,
Real &  scale_x,
Real &  scale_y,
Real &  angle,
vector< E, A > &  translation 
) [inline]

Definition at line 964 of file matrix_transform.h.

References matrix_decompose_SRT_2D(), and matrix_to_rotation_2D().

Here is the call graph for this function:

template<class MatT , typename Real , typename ME , class MA , class B , class L , typename VE , class VA >
void cml::matrix_decompose_SRT_2D ( const MatT &  m,
Real &  scale_x,
Real &  scale_y,
matrix< ME, MA, B, L > &  rotation,
vector< VE, VA > &  translation 
) [inline]

Definition at line 934 of file matrix_transform.h.

References cml::detail::CheckMatAffine2D(), cml::detail::CheckMatLinear2D(), matrix_get_basis_vectors_2D(), matrix_get_translation_2D(), and matrix_set_basis_vectors_2D().

Referenced by matrix_decompose_SRT_2D().

Here is the call graph for this function:

Here is the caller graph for this function:

template<class MatT >
TEMP_VEC3 cml::matrix_get_basis_vector ( const MatT &  m,
size_t  i 
) [inline]

Get the i'th basis vector of a 3D transform.

Definition at line 209 of file matrix_basis.h.

References cml::detail::CheckIndex3(), cml::detail::CheckMatLinear3D(), and TEMP_VEC3.

Referenced by matrix_get_x_basis_vector(), matrix_get_y_basis_vector(), and matrix_get_z_basis_vector().

Here is the call graph for this function:

Here is the caller graph for this function:

template<class MatT >
TEMP_VEC2 cml::matrix_get_basis_vector_2D ( const MatT &  m,
size_t  i 
) [inline]

Get the i'th basis vector of a 2D transform.

Definition at line 238 of file matrix_basis.h.

References cml::detail::CheckIndex2(), cml::detail::CheckMatLinear2D(), and TEMP_VEC2.

Referenced by matrix_get_x_basis_vector_2D(), and matrix_get_y_basis_vector_2D().

Here is the call graph for this function:

Here is the caller graph for this function:

template<class MatT , class E , class A >
void cml::matrix_get_basis_vectors ( const MatT &  m,
vector< E, A > &  x,
vector< E, A > &  y,
vector< E, A > &  z 
) [inline]

Get the basis vectors of a 3D transform.

Definition at line 324 of file matrix_basis.h.

References matrix_get_x_basis_vector(), matrix_get_y_basis_vector(), and matrix_get_z_basis_vector().

Referenced by matrix_decompose_SRT(), matrix_get_view_translation(), matrix_invert_RT_only(), and matrix_orthogonalize_3x3().

Here is the call graph for this function:

Here is the caller graph for this function:

template<class MatT , typename E , class A >
void cml::matrix_get_basis_vectors_2D ( const MatT &  m,
vector< E, A > &  x,
vector< E, A > &  y 
) [inline]

Get the basis vectors of a 2D transform.

Definition at line 344 of file matrix_basis.h.

References matrix_get_x_basis_vector_2D(), and matrix_get_y_basis_vector_2D().

Referenced by matrix_decompose_SRT_2D(), matrix_invert_RT_only_2D(), and matrix_orthogonalize_2x2().

Here is the call graph for this function:

Here is the caller graph for this function:

template<class MatT >
void cml::matrix_get_translation ( const MatT &  m,
typename MatT::value_type &  t1,
typename MatT::value_type &  t2,
typename MatT::value_type &  t3 
) [inline]

Get the translation of a 3D affine transform.

Definition at line 109 of file matrix_translation.h.

References cml::detail::CheckMatAffine3D().

Here is the call graph for this function:

template<class MatT >
vector< typename MatT::value_type, fixed<3> > cml::matrix_get_translation ( const MatT &  m  )  [inline]

Get the translation of a 3D affine transform.

Definition at line 92 of file matrix_translation.h.

References cml::detail::CheckMatAffine3D().

Referenced by matrix_3D_affine_from_3D_affine(), matrix_decompose_SRT(), matrix_get_view_translation(), and matrix_invert_RT_only().

Here is the call graph for this function:

Here is the caller graph for this function:

template<class MatT >
void cml::matrix_get_translation_2D ( const MatT &  m,
typename MatT::value_type &  t1,
typename MatT::value_type &  t2 
) [inline]

Get the translation of a 2D affine transform.

Definition at line 142 of file matrix_translation.h.

References cml::detail::CheckMatAffine2D().

Here is the call graph for this function:

template<class MatT >
vector< typename MatT::value_type, fixed<2> > cml::matrix_get_translation_2D ( const MatT &  m  )  [inline]

Get the translation of a 2D affine transform.

Definition at line 129 of file matrix_translation.h.

References cml::detail::CheckMatAffine2D().

Referenced by matrix_3D_affine_from_2D_affine(), matrix_decompose_SRT_2D(), and matrix_invert_RT_only_2D().

Here is the call graph for this function:

Here is the caller graph for this function:

template<class MatT >
TEMP_VEC3 cml::matrix_get_transposed_basis_vector ( const MatT &  m,
size_t  i 
) [inline]

Get the i'th transposed basis vector of a 3D transform.

Definition at line 223 of file matrix_basis.h.

References cml::detail::CheckIndex3(), and cml::detail::CheckMatLinear3D().

Referenced by matrix_get_transposed_x_basis_vector(), matrix_get_transposed_y_basis_vector(), and matrix_get_transposed_z_basis_vector().

Here is the call graph for this function:

Here is the caller graph for this function:

template<class MatT >
TEMP_VEC2 cml::matrix_get_transposed_basis_vector_2D ( const MatT &  m,
size_t  i 
) [inline]

Get the i'th transposed basis vector of a 2D transform.

Definition at line 251 of file matrix_basis.h.

References cml::detail::CheckIndex2(), cml::detail::CheckMatLinear2D(), and TEMP_VEC2.

Referenced by matrix_get_transposed_x_basis_vector_2D(), and matrix_get_transposed_y_basis_vector_2D().

Here is the call graph for this function:

Here is the caller graph for this function:

template<class MatT , typename E , class A >
void cml::matrix_get_transposed_basis_vectors ( const MatT &  m,
vector< E, A > &  x,
vector< E, A > &  y,
vector< E, A > &  z 
) [inline]

Get the transposed basis vectors of a 3D transform.

Definition at line 334 of file matrix_basis.h.

References matrix_get_transposed_x_basis_vector(), matrix_get_transposed_y_basis_vector(), and matrix_get_transposed_z_basis_vector().

Here is the call graph for this function:

template<class MatT , typename E , class A >
void cml::matrix_get_transposed_basis_vectors_2D ( const MatT &  m,
vector< E, A > &  x,
vector< E, A > &  y 
) [inline]

Get the transposed basis vectors of a 2D transform.

Definition at line 352 of file matrix_basis.h.

References matrix_get_transposed_x_basis_vector_2D(), and matrix_get_transposed_y_basis_vector_2D().

Here is the call graph for this function:

template<class MatT >
TEMP_VEC3 cml::matrix_get_transposed_x_basis_vector ( const MatT &  m  )  [inline]

Get the transposed x basis vector of a 3D transform.

Definition at line 282 of file matrix_basis.h.

References matrix_get_transposed_basis_vector().

Referenced by matrix_get_transposed_basis_vectors().

Here is the call graph for this function:

Here is the caller graph for this function:

template<class MatT >
TEMP_VEC2 cml::matrix_get_transposed_x_basis_vector_2D ( const MatT &  m  )  [inline]

Get the transposed x basis vector of a 2D transform.

Definition at line 312 of file matrix_basis.h.

References matrix_get_transposed_basis_vector_2D().

Referenced by matrix_get_transposed_basis_vectors_2D().

Here is the call graph for this function:

Here is the caller graph for this function:

template<class MatT >
TEMP_VEC3 cml::matrix_get_transposed_y_basis_vector ( const MatT &  m  )  [inline]

Get the transposed y basis vector of a 3D transform.

Definition at line 288 of file matrix_basis.h.

References matrix_get_transposed_basis_vector().

Referenced by matrix_get_transposed_basis_vectors(), and orthonormal_basis_viewplane().

Here is the call graph for this function:

Here is the caller graph for this function:

template<class MatT >
TEMP_VEC2 cml::matrix_get_transposed_y_basis_vector_2D ( const MatT &  m  )  [inline]

Get the transposed y basis vector of a 2D transform.

Definition at line 318 of file matrix_basis.h.

References matrix_get_transposed_basis_vector_2D().

Referenced by matrix_get_transposed_basis_vectors_2D().

Here is the call graph for this function:

Here is the caller graph for this function:

template<class MatT >
TEMP_VEC3 cml::matrix_get_transposed_z_basis_vector ( const MatT &  m  )  [inline]

Get the transposed z basis vector of a 3D transform.

Definition at line 294 of file matrix_basis.h.

References matrix_get_transposed_basis_vector().

Referenced by matrix_get_transposed_basis_vectors(), and orthonormal_basis_viewplane().

Here is the call graph for this function:

Here is the caller graph for this function:

template<class MatT >
vector< typename MatT::value_type, fixed<3> > cml::matrix_get_view_translation ( const MatT &  m  )  [inline]

Get the translation of a 3D affine transform.

Definition at line 164 of file matrix_translation.h.

References dot(), matrix_get_basis_vectors(), and matrix_get_translation().

Here is the call graph for this function:

template<class MatT >
TEMP_VEC3 cml::matrix_get_x_basis_vector ( const MatT &  m  )  [inline]

Get the x basis vector of a 3D transform.

Definition at line 264 of file matrix_basis.h.

References matrix_get_basis_vector().

Referenced by matrix_3D_affine_from_3D_affine(), and matrix_get_basis_vectors().

Here is the call graph for this function:

Here is the caller graph for this function:

template<class MatT >
TEMP_VEC2 cml::matrix_get_x_basis_vector_2D ( const MatT &  m  )  [inline]

Get the x basis vector of a 2D transform.

Definition at line 300 of file matrix_basis.h.

References matrix_get_basis_vector_2D().

Referenced by matrix_3D_affine_from_2D_affine(), and matrix_get_basis_vectors_2D().

Here is the call graph for this function:

Here is the caller graph for this function:

template<class MatT >
TEMP_VEC3 cml::matrix_get_y_basis_vector ( const MatT &  m  )  [inline]

Get the y basis vector of a 3D transform.

Definition at line 270 of file matrix_basis.h.

References matrix_get_basis_vector().

Referenced by matrix_3D_affine_from_3D_affine(), and matrix_get_basis_vectors().

Here is the call graph for this function:

Here is the caller graph for this function:

template<class MatT >
TEMP_VEC2 cml::matrix_get_y_basis_vector_2D ( const MatT &  m  )  [inline]

Get the y basis vector of a 2D transform.

Definition at line 306 of file matrix_basis.h.

References matrix_get_basis_vector_2D().

Referenced by matrix_3D_affine_from_2D_affine(), and matrix_get_basis_vectors_2D().

Here is the call graph for this function:

Here is the caller graph for this function:

template<class MatT >
TEMP_VEC3 cml::matrix_get_z_basis_vector ( const MatT &  m  )  [inline]

Get the z basis vector of a 3D transform.

Definition at line 276 of file matrix_basis.h.

References matrix_get_basis_vector().

Referenced by matrix_3D_affine_from_3D_affine(), and matrix_get_basis_vectors().

Here is the call graph for this function:

Here is the caller graph for this function:

template<typename E , class A , class B , class L >
void cml::matrix_invert_RT_only ( matrix< E, A, B, L > &  m  )  [inline]

Invert a matrix consisting of a 3D rotation and translation.

Definition at line 107 of file matrix_misc.h.

References dot(), matrix_get_basis_vectors(), matrix_get_translation(), matrix_set_translation(), and matrix_set_transposed_basis_vectors().

Here is the call graph for this function:

template<typename E , class A , class B , class L >
void cml::matrix_invert_RT_only_2D ( matrix< E, A, B, L > &  m  )  [inline]

Invert a matrix consisting of a 2D rotation and ranslation.

Definition at line 121 of file matrix_misc.h.

References dot(), matrix_get_basis_vectors_2D(), matrix_get_translation_2D(), matrix_set_translation_2D(), and matrix_set_transposed_basis_vectors_2D().

Here is the call graph for this function:

template<typename E , class A , class B , class L , class MatT >
void cml::matrix_linear_transform ( matrix< E, A, B, L > &  m,
const MatT &  linear 
) [inline]

Build a matrix from the 3x3 linear transform part of another matrix.

Definition at line 614 of file matrix_transform.h.

References cml::detail::CheckMatLinear3D(), and identity_transform().

Referenced by matrix_affine_transform(), and matrix_scale_along_axis().

Here is the call graph for this function:

Here is the caller graph for this function:

template<typename E , class A , class B , class L , class MatT >
void cml::matrix_linear_transform_2D ( matrix< E, A, B, L > &  m,
const MatT &  linear 
) [inline]

Build a matrix from the 2x2 linear transform part of another matrix.

Definition at line 635 of file matrix_transform.h.

References cml::detail::CheckMatLinear2D(), and identity_transform().

Referenced by matrix_affine_transform_2D(), and matrix_scale_along_axis_2D().

Here is the call graph for this function:

Here is the caller graph for this function:

template<typename E , class A , class B , class L >
void cml::matrix_look_at ( matrix< E, A, B, L > &  m,
eye_x,
eye_y,
eye_z,
target_x,
target_y,
target_z,
up_x,
up_y,
up_z,
Handedness  handedness 
) [inline]

Build a matrix representing a 'look at' view transform.

Definition at line 576 of file matrix_transform.h.

References matrix_look_at().

Here is the call graph for this function:

template<typename E , class A , class B , class L , class VecT_1 , class VecT_2 , class VecT_3 >
void cml::matrix_look_at ( matrix< E, A, B, L > &  m,
const VecT_1 &  eye,
const VecT_2 &  target,
const VecT_3 &  up,
Handedness  handedness 
) [inline]

Build a matrix representing a 'look at' view transform.

Definition at line 531 of file matrix_transform.h.

References cml::detail::CheckMatAffine3D(), cross(), dot(), identity_transform(), left_handed, matrix_set_translation(), matrix_set_transposed_basis_vectors(), normalize(), and unit_cross().

Referenced by matrix_look_at(), matrix_look_at_LH(), and matrix_look_at_RH().

Here is the call graph for this function:

Here is the caller graph for this function:

template<typename E , class A , class B , class L >
void cml::matrix_look_at_LH ( matrix< E, A, B, L > &  m,
eye_x,
eye_y,
eye_z,
target_x,
target_y,
target_z,
up_x,
up_y,
up_z 
) [inline]

Build a matrix representing a left-handed'look at' view transform.

Definition at line 592 of file matrix_transform.h.

References left_handed, and matrix_look_at().

Here is the call graph for this function:

template<typename E , class A , class B , class L , class VecT_1 , class VecT_2 , class VecT_3 >
void cml::matrix_look_at_LH ( matrix< E, A, B, L > &  m,
const VecT_1 &  eye,
const VecT_2 &  target,
const VecT_3 &  up 
) [inline]

Build a matrix representing a left-handedness 'look at' view transform.

Definition at line 559 of file matrix_transform.h.

References left_handed, and matrix_look_at().

Here is the call graph for this function:

template<typename E , class A , class B , class L >
void cml::matrix_look_at_RH ( matrix< E, A, B, L > &  m,
eye_x,
eye_y,
eye_z,
target_x,
target_y,
target_z,
up_x,
up_y,
up_z 
) [inline]

Build a matrix representing a right-handed'look at' view transform.

Definition at line 601 of file matrix_transform.h.

References matrix_look_at(), and right_handed.

Here is the call graph for this function:

template<typename E , class A , class B , class L , class VecT_1 , class VecT_2 , class VecT_3 >
void cml::matrix_look_at_RH ( matrix< E, A, B, L > &  m,
const VecT_1 &  eye,
const VecT_2 &  target,
const VecT_3 &  up 
) [inline]

Build a matrix representing a right-handedness 'look at' view transform.

Definition at line 568 of file matrix_transform.h.

References matrix_look_at(), and right_handed.

Here is the call graph for this function:

template<typename E , class A , class B , class L >
void cml::matrix_ortho_project ( matrix< E, A, B, L > &  m,
size_t  axis 
) [inline]

Build a matrix representing an orthographic projection onto a plane.

Definition at line 360 of file matrix_transform.h.

References cml::detail::CheckIndex3(), cml::detail::CheckMatLinear3D(), and identity_transform().

Referenced by matrix_ortho_project_xy(), matrix_ortho_project_yz(), and matrix_ortho_project_zx().

Here is the call graph for this function:

Here is the caller graph for this function:

template<typename E , class A , class B , class L >
void cml::matrix_ortho_project_2D ( matrix< E, A, B, L > &  m,
size_t  axis 
) [inline]

Build a matrix representing a 2D orthographic projection.

Definition at line 398 of file matrix_transform.h.

References cml::detail::CheckIndex2(), cml::detail::CheckMatLinear2D(), and identity_transform().

Referenced by matrix_ortho_project_x_2D(), and matrix_ortho_project_y_2D().

Here is the call graph for this function:

Here is the caller graph for this function:

template<typename E , class A , class B , class L , class VecT >
void cml::matrix_ortho_project_to_hplane ( matrix< E, A, B, L > &  m,
const VecT &  normal 
) [inline]

Build a matrix representing a 3D orthographic projection about the given hyperplane passing through the origin.

Definition at line 432 of file matrix_transform.h.

References matrix_scale_along_axis().

Here is the call graph for this function:

template<typename E , class A , class B , class L , class VecT >
void cml::matrix_ortho_project_to_hplane_2D ( matrix< E, A, B, L > &  m,
const VecT &  normal 
) [inline]

Build a matrix representing a 2D orthographic projection about the given hyperplane passing through the origin.

Definition at line 448 of file matrix_transform.h.

References matrix_scale_along_axis_2D().

Here is the call graph for this function:

template<typename E , class A , class B , class L >
void cml::matrix_ortho_project_x_2D ( matrix< E, A, B, L > &  m  )  [inline]

Build a matrix representing an orthographic projection onto the x axis.

Definition at line 420 of file matrix_transform.h.

References matrix_ortho_project_2D().

Here is the call graph for this function:

template<typename E , class A , class B , class L >
void cml::matrix_ortho_project_xy ( matrix< E, A, B, L > &  m  )  [inline]

Build a matrix representing an orthographic projection onto the zy plane.

Definition at line 388 of file matrix_transform.h.

References matrix_ortho_project().

Here is the call graph for this function:

template<typename E , class A , class B , class L >
void cml::matrix_ortho_project_y_2D ( matrix< E, A, B, L > &  m  )  [inline]

Build a matrix representing an orthographic projection onto the y axis.

Definition at line 414 of file matrix_transform.h.

References matrix_ortho_project_2D().

Here is the call graph for this function:

template<typename E , class A , class B , class L >
void cml::matrix_ortho_project_yz ( matrix< E, A, B, L > &  m  )  [inline]

Build a matrix representing an orthographic projection onto the yz plane.

Definition at line 376 of file matrix_transform.h.

References matrix_ortho_project().

Here is the call graph for this function:

template<typename E , class A , class B , class L >
void cml::matrix_ortho_project_zx ( matrix< E, A, B, L > &  m  )  [inline]

Build a matrix representing an orthographic projection onto the zx plane.

Definition at line 382 of file matrix_transform.h.

References matrix_ortho_project().

Here is the call graph for this function:

template<typename E , class A , class B , class L >
void cml::matrix_orthogonalize_2x2 ( matrix< E, A, B, L > &  m,
size_t  stable_axis = 0,
size_t  num_iter = 0,
s = E(1) 
) [inline]

Orthogonalize the upper-left 2x2 portion of a matrix.

Definition at line 47 of file matrix_ortho.h.

References matrix_get_basis_vectors_2D(), matrix_set_basis_vectors_2D(), and orthonormalize().

Referenced by cml::detail::nlerp_f< MatT_1, MatT_2, 2 >::operator()().

Here is the call graph for this function:

Here is the caller graph for this function:

template<typename E , class A , class B , class L >
void cml::matrix_orthogonalize_3x3 ( matrix< E, A, B, L > &  m,
size_t  stable_axis = 2,
size_t  num_iter = 0,
s = E(1) 
) [inline]

Orthogonalize the upper-left 3x3 portion of a matrix.

Definition at line 34 of file matrix_ortho.h.

References matrix_get_basis_vectors(), matrix_set_basis_vectors(), and orthonormalize().

Referenced by cml::detail::nlerp_f< MatT_1, MatT_2, 3 >::operator()().

Here is the call graph for this function:

Here is the caller graph for this function:

template<typename E , class A , class B , class L >
void cml::matrix_orthographic ( matrix< E, A, B, L > &  m,
width,
height,
n,
f,
Handedness  handedness,
ZClip  z_clip 
) [inline]

Build an orthographic projection matrix.

Definition at line 233 of file matrix_projection.h.

References matrix_orthographic().

Here is the call graph for this function:

template<typename E , class A , class B , class L >
void cml::matrix_orthographic ( matrix< E, A, B, L > &  m,
left,
right,
bottom,
top,
n,
f,
Handedness  handedness,
ZClip  z_clip 
) [inline]

Build a matrix representing an orthographic projection, specified by frustum bounds in l,r,b,t,n,f form, and with the given handedness and z clipping range.

Definition at line 200 of file matrix_projection.h.

References cml::detail::CheckMatHomogeneous3D(), identity_transform(), left_handed, and z_clip_neg_one.

Referenced by matrix_orthographic(), matrix_orthographic_LH(), and matrix_orthographic_RH().

Here is the call graph for this function:

Here is the caller graph for this function:

template<typename E , class A , class B , class L >
void cml::matrix_orthographic_LH ( matrix< E, A, B, L > &  m,
width,
height,
n,
f,
ZClip  z_clip 
) [inline]

Build a left-handedness orthographic projection matrix.

Definition at line 265 of file matrix_projection.h.

References left_handed, and matrix_orthographic().

Here is the call graph for this function:

template<typename E , class A , class B , class L >
void cml::matrix_orthographic_LH ( matrix< E, A, B, L > &  m,
left,
right,
bottom,
top,
n,
f,
ZClip  z_clip 
) [inline]

Build a left-handedness orthographic projection matrix.

Definition at line 247 of file matrix_projection.h.

References left_handed, and matrix_orthographic().

Referenced by matrix_viewport().

Here is the call graph for this function:

Here is the caller graph for this function:

template<typename E , class A , class B , class L >
void cml::matrix_orthographic_RH ( matrix< E, A, B, L > &  m,
width,
height,
n,
f,
ZClip  z_clip 
) [inline]

Build a right-handedness orthographic projection matrix.

Definition at line 274 of file matrix_projection.h.

References matrix_orthographic(), and right_handed.

Here is the call graph for this function:

template<typename E , class A , class B , class L >
void cml::matrix_orthographic_RH ( matrix< E, A, B, L > &  m,
left,
right,
bottom,
top,
n,
f,
ZClip  z_clip 
) [inline]

Build a right-handedness orthographic projection matrix.

Definition at line 256 of file matrix_projection.h.

References matrix_orthographic(), and right_handed.

Here is the call graph for this function:

template<typename E , class A , class B , class L >
void cml::matrix_perspective ( matrix< E, A, B, L > &  m,
width,
height,
n,
f,
Handedness  handedness,
ZClip  z_clip 
) [inline]

Build a matrix representing a perspective projection, specified by frustum bounds in w,h,n,f form, and with the given handedness and z clipping range.

Definition at line 78 of file matrix_projection.h.

References matrix_perspective().

Here is the call graph for this function:

template<typename E , class A , class B , class L >
void cml::matrix_perspective ( matrix< E, A, B, L > &  m,
left,
right,
bottom,
top,
n,
f,
Handedness  handedness,
ZClip  z_clip 
) [inline]

Build a matrix representing a perspective projection, specified by frustum bounds in l,r,b,t,n,f form, and with the given handedness and z clipping range.

Definition at line 39 of file matrix_projection.h.

References cml::detail::CheckMatHomogeneous3D(), identity_transform(), left_handed, and z_clip_neg_one.

Referenced by matrix_perspective(), matrix_perspective_LH(), matrix_perspective_RH(), matrix_perspective_xfov(), and matrix_perspective_yfov().

Here is the call graph for this function:

Here is the caller graph for this function:

template<typename E , class A , class B , class L >
void cml::matrix_perspective_LH ( matrix< E, A, B, L > &  m,
width,
height,
n,
f,
ZClip  z_clip 
) [inline]

Build a left-handedness frustum perspective matrix.

Definition at line 110 of file matrix_projection.h.

References left_handed, and matrix_perspective().

Here is the call graph for this function:

template<typename E , class A , class B , class L >
void cml::matrix_perspective_LH ( matrix< E, A, B, L > &  m,
left,
right,
bottom,
top,
n,
f,
ZClip  z_clip 
) [inline]

Build a left-handedness frustum perspective matrix.

Definition at line 92 of file matrix_projection.h.

References left_handed, and matrix_perspective().

Here is the call graph for this function:

template<typename E , class A , class B , class L >
void cml::matrix_perspective_RH ( matrix< E, A, B, L > &  m,
width,
height,
n,
f,
ZClip  z_clip 
) [inline]

Build a right-handedness frustum perspective matrix.

Definition at line 118 of file matrix_projection.h.

References matrix_perspective(), and right_handed.

Here is the call graph for this function:

template<typename E , class A , class B , class L >
void cml::matrix_perspective_RH ( matrix< E, A, B, L > &  m,
left,
right,
bottom,
top,
n,
f,
ZClip  z_clip 
) [inline]

Build a right-handedness frustum perspective matrix.

Definition at line 101 of file matrix_projection.h.

References matrix_perspective(), and right_handed.

Here is the call graph for this function:

template<typename E , class A , class B , class L >
void cml::matrix_perspective_xfov ( matrix< E, A, B, L > &  m,
xfov,
aspect,
n,
f,
Handedness  handedness,
ZClip  z_clip 
) [inline]

Build a perspective matrix.

Definition at line 130 of file matrix_projection.h.

References matrix_perspective().

Referenced by matrix_perspective_xfov_LH(), and matrix_perspective_xfov_RH().

Here is the call graph for this function:

Here is the caller graph for this function:

template<typename E , class A , class B , class L >
void cml::matrix_perspective_xfov_LH ( matrix< E, A, B, L > &  m,
xfov,
aspect,
n,
f,
ZClip  z_clip 
) [inline]

Build a left-handedness perspective matrix.

Definition at line 143 of file matrix_projection.h.

References left_handed, and matrix_perspective_xfov().

Here is the call graph for this function:

template<typename E , class A , class B , class L >
void cml::matrix_perspective_xfov_RH ( matrix< E, A, B, L > &  m,
xfov,
aspect,
n,
f,
ZClip  z_clip 
) [inline]

Build a right-handedness perspective matrix.

Definition at line 151 of file matrix_projection.h.

References matrix_perspective_xfov(), and right_handed.

Here is the call graph for this function:

template<typename E , class A , class B , class L >
void cml::matrix_perspective_yfov ( matrix< E, A, B, L > &  m,
yfov,
aspect,
n,
f,
Handedness  handedness,
ZClip  z_clip 
) [inline]

Build a perspective matrix.

Definition at line 163 of file matrix_projection.h.

References matrix_perspective().

Referenced by matrix_perspective_yfov_LH(), and matrix_perspective_yfov_RH().

Here is the call graph for this function:

Here is the caller graph for this function:

template<typename E , class A , class B , class L >
void cml::matrix_perspective_yfov_LH ( matrix< E, A, B, L > &  m,
yfov,
aspect,
n,
f,
ZClip  z_clip 
) [inline]

Build a left-handedness perspective matrix.

Definition at line 176 of file matrix_projection.h.

References left_handed, and matrix_perspective_yfov().

Here is the call graph for this function:

template<typename E , class A , class B , class L >
void cml::matrix_perspective_yfov_RH ( matrix< E, A, B, L > &  m,
yfov,
aspect,
n,
f,
ZClip  z_clip 
) [inline]

Build a right-handedness perspective matrix.

Definition at line 184 of file matrix_projection.h.

References matrix_perspective_yfov(), and right_handed.

Here is the call graph for this function:

template<typename E , class A , class B , class L >
void cml::matrix_pick ( matrix< E, A, B, L > &  m,
pick_x,
pick_y,
pick_width,
pick_height,
viewport_x,
viewport_y,
viewport_width,
viewport_height 
) [inline]

Definition at line 321 of file matrix_projection.h.

References cml::detail::CheckMatHomogeneous3D(), and identity_transform().

Referenced by make_pick_volume().

Here is the call graph for this function:

Here is the caller graph for this function:

template<typename E , class A , class B , class L >
void cml::matrix_reflect ( matrix< E, A, B, L > &  m,
size_t  axis 
) [inline]

Build a matrix representing a 3D reflection along the given world axis.

Definition at line 262 of file matrix_transform.h.

References cml::detail::CheckIndex3(), cml::detail::CheckMatLinear3D(), and identity_transform().

Referenced by matrix_reflect_x(), matrix_reflect_y(), and matrix_reflect_z().

Here is the call graph for this function:

Here is the caller graph for this function:

template<typename E , class A , class B , class L >
void cml::matrix_reflect_2D ( matrix< E, A, B, L > &  m,
size_t  axis 
) [inline]

Build a matrix representing a 2D reflection along the given world axis.

Definition at line 300 of file matrix_transform.h.

References cml::detail::CheckIndex2(), cml::detail::CheckMatLinear2D(), and identity_transform().

Referenced by matrix_reflect_x_2D(), and matrix_reflect_y_2D().

Here is the call graph for this function:

Here is the caller graph for this function:

template<typename E , class A , class B , class L , class VecT >
void cml::matrix_reflect_about_hplane ( matrix< E, A, B, L > &  m,
const VecT &  normal 
) [inline]

Build a matrix representing a 3D reflection about the given hyperplane.

Definition at line 332 of file matrix_transform.h.

References matrix_scale_along_axis().

Here is the call graph for this function:

template<typename E , class A , class B , class L , class VecT >
void cml::matrix_reflect_about_hplane_2D ( matrix< E, A, B, L > &  m,
const VecT &  normal 
) [inline]

Build a matrix representing a 2D reflection about the given hyperplane.

Definition at line 346 of file matrix_transform.h.

References matrix_scale_along_axis_2D().

Here is the call graph for this function:

template<typename E , class A , class B , class L >
void cml::matrix_reflect_x ( matrix< E, A, B, L > &  m  )  [inline]

Build a matrix representing a 3D reflection along the world x axis.

Definition at line 278 of file matrix_transform.h.

References matrix_reflect().

Here is the call graph for this function:

template<typename E , class A , class B , class L >
void cml::matrix_reflect_x_2D ( matrix< E, A, B, L > &  m  )  [inline]

Build a matrix representing a 2D reflection along the world x axis.

Definition at line 316 of file matrix_transform.h.

References matrix_reflect_2D().

Here is the call graph for this function:

template<typename E , class A , class B , class L >
void cml::matrix_reflect_y ( matrix< E, A, B, L > &  m  )  [inline]

Build a matrix representing a 3D reflection along the world y axis.

Definition at line 284 of file matrix_transform.h.

References matrix_reflect().

Here is the call graph for this function:

template<typename E , class A , class B , class L >
void cml::matrix_reflect_y_2D ( matrix< E, A, B, L > &  m  )  [inline]

Build a matrix representing a 2D reflection along the world y axis.

Definition at line 322 of file matrix_transform.h.

References matrix_reflect_2D().

Here is the call graph for this function:

template<typename E , class A , class B , class L >
void cml::matrix_reflect_z ( matrix< E, A, B, L > &  m  )  [inline]

Build a matrix representing a 3D reflection along the world z axis.

Definition at line 290 of file matrix_transform.h.

References matrix_reflect().

Here is the call graph for this function:

template<typename E , class A , class B , class L >
void cml::matrix_rotate_2D ( matrix< E, A, B, L > &  m,
angle 
) [inline]

Definition at line 632 of file matrix_rotation.h.

References cml::detail::CheckMatLinear2D().

Here is the call graph for this function:

template<typename E , class A , class B , class L >
void cml::matrix_rotate_about_local_axis ( matrix< E, A, B, L > &  m,
size_t  axis,
angle 
) [inline]

Rotate a rotation matrix about the given local axis.

Definition at line 581 of file matrix_rotation.h.

References cml::detail::CheckIndex3(), cml::detail::CheckMatLinear3D(), and cyclic_permutation().

Referenced by matrix_rotate_about_local_x(), matrix_rotate_about_local_y(), and matrix_rotate_about_local_z().

Here is the call graph for this function:

Here is the caller graph for this function:

template<typename E , class A , class B , class L >
void cml::matrix_rotate_about_local_x ( matrix< E, A, B, L > &  m,
angle 
) [inline]

Rotate a rotation matrix about its local x axis.

Definition at line 611 of file matrix_rotation.h.

References matrix_rotate_about_local_axis().

Here is the call graph for this function:

template<typename E , class A , class B , class L >
void cml::matrix_rotate_about_local_y ( matrix< E, A, B, L > &  m,
angle 
) [inline]

Rotate a rotation matrix about its local y axis.

Definition at line 617 of file matrix_rotation.h.

References matrix_rotate_about_local_axis().

Here is the call graph for this function:

template<typename E , class A , class B , class L >
void cml::matrix_rotate_about_local_z ( matrix< E, A, B, L > &  m,
angle 
) [inline]

Rotate a rotation matrix about its local z axis.

Definition at line 623 of file matrix_rotation.h.

References matrix_rotate_about_local_axis().

Here is the call graph for this function:

template<typename E , class A , class B , class L >
void cml::matrix_rotate_about_world_axis ( matrix< E, A, B, L > &  m,
size_t  axis,
angle 
) [inline]

Rotate a rotation matrix about the given world axis.

Definition at line 529 of file matrix_rotation.h.

References cml::detail::CheckIndex3(), cml::detail::CheckMatLinear3D(), and cyclic_permutation().

Referenced by matrix_rotate_about_world_x(), matrix_rotate_about_world_y(), and matrix_rotate_about_world_z().

Here is the call graph for this function:

Here is the caller graph for this function:

template<typename E , class A , class B , class L >
void cml::matrix_rotate_about_world_x ( matrix< E, A, B, L > &  m,
angle 
) [inline]

Rotate a rotation matrix about the world x axis.

Definition at line 559 of file matrix_rotation.h.

References matrix_rotate_about_world_axis().

Here is the call graph for this function:

template<typename E , class A , class B , class L >
void cml::matrix_rotate_about_world_y ( matrix< E, A, B, L > &  m,
angle 
) [inline]

Rotate a rotation matrix about the world y axis.

Definition at line 565 of file matrix_rotation.h.

References matrix_rotate_about_world_axis().

Here is the call graph for this function:

template<typename E , class A , class B , class L >
void cml::matrix_rotate_about_world_z ( matrix< E, A, B, L > &  m,
angle 
) [inline]

Rotate a rotation matrix about the world z axis.

Definition at line 571 of file matrix_rotation.h.

References matrix_rotate_about_world_axis().

Here is the call graph for this function:

template<typename E , class A , class B , class L >
void cml::matrix_rotation_2D ( matrix< E, A, B, L > &  m,
angle 
) [inline]

Build a matrix representing a 2D rotation.

Definition at line 485 of file matrix_rotation.h.

References cml::detail::CheckMatLinear2D(), and identity_transform().

Referenced by matrix_affine_transform_2D(), and matrix_scale_rotation_angle_2D().

Here is the call graph for this function:

Here is the caller graph for this function:

template<typename E , class A , class B , class L , class VecT_1 , class VecT_2 >
void cml::matrix_rotation_aim_at ( matrix< E, A, B, L > &  m,
const VecT_1 &  pos,
const VecT_2 &  target,
AxisOrder  order = axis_order_zyx 
) [inline]

See vector_ortho.h for details.

Definition at line 457 of file matrix_rotation.h.

References matrix_rotation_align().

Here is the call graph for this function:

template<typename E , class A , class B , class L , class VecT_1 , class VecT_2 , class VecT_3 >
void cml::matrix_rotation_aim_at ( matrix< E, A, B, L > &  m,
const VecT_1 &  pos,
const VecT_2 &  target,
const VecT_3 &  reference,
AxisOrder  order = axis_order_zyx 
) [inline]

See vector_ortho.h for details.

Definition at line 444 of file matrix_rotation.h.

References matrix_rotation_align().

Referenced by matrix_aim_at(), and quaternion_rotation_aim_at().

Here is the call graph for this function:

Here is the caller graph for this function:

template<typename E , class A , class B , class L , class VecT_1 , class VecT_2 , class VecT_3 >
void cml::matrix_rotation_aim_at_axial ( matrix< E, A, B, L > &  m,
const VecT_1 &  pos,
const VecT_2 &  target,
const VecT_3 &  axis,
AxisOrder  order = axis_order_zyx 
) [inline]

See vector_ortho.h for details.

Definition at line 469 of file matrix_rotation.h.

References matrix_rotation_align_axial().

Referenced by matrix_aim_at_axial(), and quaternion_rotation_aim_at_axial().

Here is the call graph for this function:

Here is the caller graph for this function:

template<typename E , class A , class B , class L , class VecT >
void cml::matrix_rotation_align ( matrix< E, A, B, L > &  m,
const VecT &  align,
bool  normalize = true,
AxisOrder  order = axis_order_zyx 
) [inline]

See vector_ortho.h for details.

Definition at line 368 of file matrix_rotation.h.

References identity_transform(), matrix_set_basis_vectors(), normalize(), and orthonormal_basis().

Here is the call graph for this function:

template<typename E , class A , class B , class L , class VecT_1 , class VecT_2 >
void cml::matrix_rotation_align ( matrix< E, A, B, L > &  m,
const VecT_1 &  align,
const VecT_2 &  reference,
bool  normalize = true,
AxisOrder  order = axis_order_zyx 
) [inline]

See vector_ortho.h for details.

Definition at line 349 of file matrix_rotation.h.

References identity_transform(), matrix_set_basis_vectors(), normalize(), and orthonormal_basis().

Referenced by matrix_rotation_aim_at(), and quaternion_rotation_align().

Here is the call graph for this function:

Here is the caller graph for this function:

template<typename E , class A , class B , class L , class VecT >
void cml::matrix_rotation_align_2D ( matrix< E, A, B, L > &  m,
const VecT &  align,
bool  normalize = true,
AxisOrder2D  order = axis_order_xy 
) [inline]

See vector_ortho.h for details.

Definition at line 510 of file matrix_rotation.h.

References identity_transform(), matrix_set_basis_vectors_2D(), normalize(), and orthonormal_basis_2D().

Referenced by matrix_aim_at_2D().

Here is the call graph for this function:

Here is the caller graph for this function:

template<typename E , class A , class B , class L , class VecT_1 , class VecT_2 >
void cml::matrix_rotation_align_axial ( matrix< E, A, B, L > &  m,
const VecT_1 &  align,
const VecT_2 &  axis,
bool  normalize = true,
AxisOrder  order = axis_order_zyx 
) [inline]

See vector_ortho.h for details.

Definition at line 383 of file matrix_rotation.h.

References identity_transform(), matrix_set_basis_vectors(), normalize(), and orthonormal_basis_axial().

Referenced by matrix_rotation_aim_at_axial(), and quaternion_rotation_align_axial().

Here is the call graph for this function:

Here is the caller graph for this function:

template<typename E , class A , class B , class L , class MatT >
void cml::matrix_rotation_align_viewplane ( matrix< E, A, B, L > &  m,
const MatT &  view_matrix,
Handedness  handedness,
AxisOrder  order = axis_order_zyx 
) [inline]

See vector_ortho.h for details.

Definition at line 399 of file matrix_rotation.h.

References identity_transform(), matrix_set_basis_vectors(), and orthonormal_basis_viewplane().

Referenced by matrix_aim_at_viewplane(), matrix_rotation_align_viewplane_LH(), matrix_rotation_align_viewplane_RH(), and quaternion_rotation_align_viewplane().

Here is the call graph for this function:

Here is the caller graph for this function:

template<typename E , class A , class B , class L , class MatT >
void cml::matrix_rotation_align_viewplane_LH ( matrix< E, A, B, L > &  m,
const MatT &  view_matrix,
AxisOrder  order = axis_order_zyx 
) [inline]

See vector_ortho.h for details.

Definition at line 417 of file matrix_rotation.h.

References left_handed, and matrix_rotation_align_viewplane().

Referenced by quaternion_rotation_align_viewplane_LH().

Here is the call graph for this function:

Here is the caller graph for this function:

template<typename E , class A , class B , class L , class MatT >
void cml::matrix_rotation_align_viewplane_RH ( matrix< E, A, B, L > &  m,
const MatT &  view_matrix,
AxisOrder  order = axis_order_zyx 
) [inline]

See vector_ortho.h for details.

Definition at line 428 of file matrix_rotation.h.

References matrix_rotation_align_viewplane(), and right_handed.

Referenced by quaternion_rotation_align_viewplane_RH().

Here is the call graph for this function:

Here is the caller graph for this function:

template<typename E , class A , class B , class L , class VecT >
void cml::matrix_rotation_axis_angle ( matrix< E, A, B, L > &  m,
const VecT &  axis,
angle 
) [inline]

Build a rotation matrix from an axis-angle pair.

Definition at line 76 of file matrix_rotation.h.

References cml::detail::CheckMatLinear3D(), cml::detail::CheckVec3(), and identity_transform().

Referenced by matrix_affine_transform(), and matrix_scale_rotation_angle().

Here is the call graph for this function:

Here is the caller graph for this function:

template<class MatT_1 , class MatT_2 >
MAT_TEMP_3X3 cml::matrix_rotation_difference ( const MatT_1 &  m1,
const MatT_2 &  m2 
) [inline]

Return the rotational 'difference' between two 3D rotation matrices.

Definition at line 791 of file matrix_rotation.h.

References cml::detail::matrix_concat_rotations(), and transpose().

Referenced by matrix_slerp(), and cml::detail::slerp_f< MatT_1, MatT_2, 3 >::operator()().

Here is the call graph for this function:

Here is the caller graph for this function:

template<class MatT_1 , class MatT_2 >
MAT_TEMP_2X2 cml::matrix_rotation_difference_2D ( const MatT_1 &  m1,
const MatT_2 &  m2 
) [inline]

Return the rotational 'difference' between two 2D rotation matrices.

Definition at line 797 of file matrix_rotation.h.

References cml::detail::matrix_concat_rotations_2D(), and transpose().

Referenced by matrix_slerp_2D(), and cml::detail::slerp_f< MatT_1, MatT_2, 2 >::operator()().

Here is the call graph for this function:

Here is the caller graph for this function:

template<typename E , class A , class B , class L >
void cml::matrix_rotation_euler ( matrix< E, A, B, L > &  m,
angle_0,
angle_1,
angle_2,
EulerOrder  order 
) [inline]

Build a rotation matrix from an Euler-angle triple.

The rotations are applied about the cardinal axes in the order specified by the 'order' argument, where 'order' is one of the following enumerants:

euler_order_xyz euler_order_xzy euler_order_xyx euler_order_xzx euler_order_yzx euler_order_yxz euler_order_yzy euler_order_yxy euler_order_zxy euler_order_zyx euler_order_zxz euler_order_zyz

e.g. euler_order_xyz means compute the column-basis rotation matrix equivalent to R_x * R_y * R_z, where R_i is the rotation matrix above axis i (the row-basis matrix would be R_z * R_y * R_x).

Definition at line 195 of file matrix_rotation.h.

References cml::detail::CheckMatLinear3D(), identity_transform(), and cml::detail::unpack_euler_order().

Referenced by matrix_affine_transform().

Here is the call graph for this function:

Here is the caller graph for this function:

template<typename E , class A , class B , class L >
void cml::matrix_rotation_euler_derivatives ( matrix< E, A, B, L > &  m,
int  axis,
angle_0,
angle_1,
angle_2,
EulerOrder  order 
) [inline]

Build a matrix of derivatives of Euler angles about the specified axis.

The rotation derivatives are applied about the cardinal axes in the order specified by the 'order' argument, where 'order' is one of the following enumerants:

euler_order_xyz euler_order_xzy euler_order_yzx euler_order_yxz euler_order_zxy euler_order_zyx

e.g. euler_order_xyz means compute the column-basis rotation matrix equivalent to R_x * R_y * R_z, where R_i is the rotation matrix above axis i (the row-basis matrix would be R_z * R_y * R_x).

The derivative is taken with respect to the specified 'axis', which is the position of the axis in the triple; e.g. if order = euler_order_xyz, then axis = 0 would mean take the derivative with respect to x. Note that repeated axes are not currently supported.

Definition at line 274 of file matrix_rotation.h.

References cml::detail::CheckMatLinear3D(), identity_transform(), and cml::detail::unpack_euler_order().

Here is the call graph for this function:

template<typename E , class A , class B , class L , class QuatT >
void cml::matrix_rotation_quaternion ( matrix< E, A, B, L > &  m,
const QuatT &  q 
) [inline]

Build a rotation matrix from a quaternion.

Definition at line 123 of file matrix_rotation.h.

References cml::detail::CheckMatLinear3D(), cml::detail::CheckQuat(), and identity_transform().

Referenced by matrix_affine_transform(), matrix_rotation_vec_to_vec(), and quaternion_to_euler().

Here is the call graph for this function:

Here is the caller graph for this function:

template<class E , class A , class B , class L , class VecT_1 , class VecT_2 >
void cml::matrix_rotation_vec_to_vec ( matrix< E, A, B, L > &  m,
const VecT_1 &  v1,
const VecT_2 &  v2,
bool  unit_length_vectors = false 
) [inline]

Build a rotation matrix to rotate from one vector to another.

Note: The quaternion algorithm is more stable than the matrix algorithm, so we simply pass off to the quaternion function here.

Definition at line 663 of file matrix_rotation.h.

References matrix_rotation_quaternion(), and quaternion_rotation_vec_to_vec().

Here is the call graph for this function:

template<typename E , class A , class B , class L >
void cml::matrix_rotation_world_axis ( matrix< E, A, B, L > &  m,
size_t  axis,
angle 
) [inline]

Build a matrix representing a 3D rotation about the given world axis.

Definition at line 29 of file matrix_rotation.h.

References cml::detail::CheckIndex3(), cml::detail::CheckMatLinear3D(), cyclic_permutation(), and identity_transform().

Referenced by matrix_rotation_world_x(), matrix_rotation_world_y(), and matrix_rotation_world_z().

Here is the call graph for this function:

Here is the caller graph for this function:

template<typename E , class A , class B , class L >
void cml::matrix_rotation_world_x ( matrix< E, A, B, L > &  m,
angle 
) [inline]

Build a matrix representing a 3D rotation about the world x axis.

Definition at line 54 of file matrix_rotation.h.

References matrix_rotation_world_axis().

Here is the call graph for this function:

template<typename E , class A , class B , class L >
void cml::matrix_rotation_world_y ( matrix< E, A, B, L > &  m,
angle 
) [inline]

Build a matrix representing a 3D rotation about the world y axis.

Definition at line 60 of file matrix_rotation.h.

References matrix_rotation_world_axis().

Here is the call graph for this function:

template<typename E , class A , class B , class L >
void cml::matrix_rotation_world_z ( matrix< E, A, B, L > &  m,
angle 
) [inline]

Build a matrix representing a 3D rotation about the world z axis.

Definition at line 66 of file matrix_rotation.h.

References matrix_rotation_world_axis().

Here is the call graph for this function:

template<typename E , class A , class B , class L , class VecT >
void cml::matrix_scale ( matrix< E, A, B, L > &  m,
const VecT &  scale 
) [inline]

Build a matrix representing a non-uniform 3D scale.

Definition at line 100 of file matrix_transform.h.

References cml::detail::CheckVec3(), and matrix_scale().

Here is the call graph for this function:

template<typename E , class A , class B , class L >
void cml::matrix_scale ( matrix< E, A, B, L > &  m,
scale_x,
scale_y,
scale_z 
) [inline]

Build a matrix representing a non-uniform 3D scale.

Definition at line 86 of file matrix_transform.h.

References cml::detail::CheckMatLinear3D(), and identity_transform().

Referenced by matrix_scale(), and matrix_uniform_scale().

Here is the call graph for this function:

Here is the caller graph for this function:

template<typename E , class A , class B , class L , class VecT >
void cml::matrix_scale_2D ( matrix< E, A, B, L > &  m,
const VecT &  scale 
) [inline]

Build a matrix representing a non-uniform 2D scale.

Definition at line 133 of file matrix_transform.h.

References cml::detail::CheckVec2(), and matrix_scale_2D().

Here is the call graph for this function:

template<typename E , class A , class B , class L >
void cml::matrix_scale_2D ( matrix< E, A, B, L > &  m,
scale_x,
scale_y 
) [inline]

Build a matrix representing a non-uniform 2D scale.

Definition at line 120 of file matrix_transform.h.

References cml::detail::CheckMatLinear2D(), and identity_transform().

Referenced by matrix_scale_2D(), and matrix_uniform_scale_2D().

Here is the call graph for this function:

Here is the caller graph for this function:

template<typename E , class A , class B , class L , class VecT >
void cml::matrix_scale_along_axis ( matrix< E, A, B, L > &  m,
const VecT &  axis,
scale 
) [inline]

Build a matrix representing a 3D scale along an arbitrary axis.

Definition at line 147 of file matrix_transform.h.

References cml::detail::CheckVec3(), matrix_linear_transform(), and outer().

Referenced by matrix_ortho_project_to_hplane(), and matrix_reflect_about_hplane().

Here is the call graph for this function:

Here is the caller graph for this function:

template<typename E , class A , class B , class L , class VecT >
void cml::matrix_scale_along_axis_2D ( matrix< E, A, B, L > &  m,
const VecT &  axis,
scale 
) [inline]

Build a matrix representing a 2D scale along an arbitrary axis.

Definition at line 169 of file matrix_transform.h.

References cml::detail::CheckVec2(), matrix_linear_transform_2D(), and outer().

Referenced by matrix_ortho_project_to_hplane_2D(), and matrix_reflect_about_hplane_2D().

Here is the call graph for this function:

Here is the caller graph for this function:

template<typename E , class A , class B , class L >
void cml::matrix_scale_rotation_angle ( matrix< E, A, B, L > &  m,
t,
tolerance = epsilon<E>::placeholder() 
) [inline]

Scale the angle of a 3D rotation matrix.

Definition at line 683 of file matrix_rotation.h.

References axis(), matrix_rotation_axis_angle(), and matrix_to_axis_angle().

Referenced by matrix_slerp(), and cml::detail::slerp_f< MatT_1, MatT_2, 3 >::operator()().

Here is the call graph for this function:

Here is the caller graph for this function:

template<typename E , class A , class B , class L >
void cml::matrix_scale_rotation_angle_2D ( matrix< E, A, B, L > &  m,
t,
tolerance = epsilon<E>::placeholder() 
) [inline]

Scale the angle of a 2D rotation matrix.

Definition at line 697 of file matrix_rotation.h.

References matrix_rotation_2D(), and matrix_to_rotation_2D().

Referenced by matrix_slerp_2D(), and cml::detail::slerp_f< MatT_1, MatT_2, 2 >::operator()().

Here is the call graph for this function:

Here is the caller graph for this function:

template<typename E , class A , class B , class L , class VecT >
void cml::matrix_set_basis_vector ( matrix< E, A, B, L > &  m,
size_t  i,
const VecT &  v 
) [inline]

Set the i'th basis vector of a 3D transform.

Definition at line 47 of file matrix_basis.h.

References cml::detail::CheckIndex3(), cml::detail::CheckMatLinear3D(), and cml::detail::CheckVec3().

Referenced by matrix_set_x_basis_vector(), matrix_set_y_basis_vector(), and matrix_set_z_basis_vector().

Here is the call graph for this function:

Here is the caller graph for this function:

template<typename E , class A , class B , class L , class VecT >
void cml::matrix_set_basis_vector_2D ( matrix< E, A, B, L > &  m,
size_t  i,
const VecT &  v 
) [inline]

Set the i'th basis vector of a 2D transform.

Definition at line 75 of file matrix_basis.h.

References cml::detail::CheckIndex2(), cml::detail::CheckMatLinear2D(), and cml::detail::CheckVec2().

Referenced by matrix_set_x_basis_vector_2D(), and matrix_set_y_basis_vector_2D().

Here is the call graph for this function:

Here is the caller graph for this function:

template<typename E , class A , class B , class L , class VecT_1 , class VecT_2 , class VecT_3 >
void cml::matrix_set_basis_vectors ( matrix< E, A, B, L > &  m,
const VecT_1 &  x,
const VecT_2 &  y,
const VecT_3 &  z 
) [inline]

Set the basis vectors of a 3D transform.

Definition at line 163 of file matrix_basis.h.

References matrix_set_x_basis_vector(), matrix_set_y_basis_vector(), and matrix_set_z_basis_vector().

Referenced by matrix_3D_affine_from_3D_affine(), matrix_affine_transform(), matrix_decompose_SRT(), matrix_orthogonalize_3x3(), matrix_rotation_align(), matrix_rotation_align_axial(), and matrix_rotation_align_viewplane().

Here is the call graph for this function:

Here is the caller graph for this function:

template<typename E , class A , class B , class L , class VecT_1 , class VecT_2 >
void cml::matrix_set_basis_vectors_2D ( matrix< E, A, B, L > &  m,
const VecT_1 &  x,
const VecT_2 &  y 
) [inline]

Set the basis vectors of a 2D transform.

Definition at line 184 of file matrix_basis.h.

References matrix_set_x_basis_vector_2D(), and matrix_set_y_basis_vector_2D().

Referenced by matrix_3D_affine_from_2D_affine(), matrix_affine_transform_2D(), matrix_decompose_SRT_2D(), matrix_orthogonalize_2x2(), and matrix_rotation_align_2D().

Here is the call graph for this function:

Here is the caller graph for this function:

template<typename E , class A , class B , class L , class VecT >
void cml::matrix_set_translation ( matrix< E, A, B, L > &  m,
const VecT &  translation 
) [inline]

Set the translation of a 3D affine transform from a 3D or 2D vector.

Definition at line 52 of file matrix_translation.h.

References cml::detail::CheckVec2Or3(), and matrix_set_translation().

Here is the call graph for this function:

template<typename E , class A , class B , class L >
void cml::matrix_set_translation ( matrix< E, A, B, L > &  m,
x,
y 
) [inline]

Set the translation of a 3D affine transform with z set to 0.

Definition at line 42 of file matrix_translation.h.

References matrix_set_translation().

Here is the call graph for this function:

template<typename E , class A , class B , class L >
void cml::matrix_set_translation ( matrix< E, A, B, L > &  m,
x,
y,
z 
) [inline]

Set the translation of a 3D affine transform.

Definition at line 30 of file matrix_translation.h.

References cml::detail::CheckMatAffine3D().

Referenced by matrix_3D_affine_from_2D_affine(), matrix_3D_affine_from_3D_affine(), matrix_affine_transform(), matrix_aim_at(), matrix_aim_at_axial(), matrix_aim_at_viewplane(), matrix_invert_RT_only(), matrix_look_at(), matrix_set_translation(), and matrix_translation().

Here is the call graph for this function:

Here is the caller graph for this function:

template<typename E , class A , class B , class L , class VecT >
void cml::matrix_set_translation_2D ( matrix< E, A, B, L > &  m,
const VecT &  translation 
) [inline]

Set the translation of a 2D affine transform from a 2D vector.

Definition at line 78 of file matrix_translation.h.

References cml::detail::CheckVec2(), and matrix_set_translation_2D().

Here is the call graph for this function:

template<typename E , class A , class B , class L >
void cml::matrix_set_translation_2D ( matrix< E, A, B, L > &  m,
x,
y 
) [inline]

Set the translation of a 2D affine transform.

Definition at line 67 of file matrix_translation.h.

References cml::detail::CheckMatAffine2D().

Referenced by matrix_affine_transform_2D(), matrix_aim_at_2D(), matrix_invert_RT_only_2D(), matrix_set_translation_2D(), and matrix_translation_2D().

Here is the call graph for this function:

Here is the caller graph for this function:

template<typename E , class A , class B , class L , class VecT >
void cml::matrix_set_transposed_basis_vector ( matrix< E, A, B, L > &  m,
size_t  i,
const VecT &  v 
) [inline]

Set the i'th transposed basis vector of a 3D transform.

Definition at line 61 of file matrix_basis.h.

References cml::detail::CheckIndex3(), cml::detail::CheckMatLinear3D(), and cml::detail::CheckVec3().

Referenced by matrix_set_transposed_x_basis_vector(), matrix_set_transposed_y_basis_vector(), and matrix_set_transposed_z_basis_vector().

Here is the call graph for this function:

Here is the caller graph for this function:

template<typename E , class A , class B , class L , class VecT >
void cml::matrix_set_transposed_basis_vector_2D ( matrix< E, A, B, L > &  m,
size_t  i,
const VecT &  v 
) [inline]

Set the i'th transposed basis vector of a 2D transform.

Definition at line 88 of file matrix_basis.h.

References cml::detail::CheckIndex2(), cml::detail::CheckMatLinear2D(), and cml::detail::CheckVec2().

Referenced by matrix_set_transposed_x_basis_vector_2D(), and matrix_set_transposed_y_basis_vector_2D().

Here is the call graph for this function:

Here is the caller graph for this function:

template<typename E , class A , class B , class L , class VecT_1 , class VecT_2 , class VecT_3 >
void cml::matrix_set_transposed_basis_vectors ( matrix< E, A, B, L > &  m,
const VecT_1 &  x,
const VecT_2 &  y,
const VecT_3 &  z 
) [inline]

Set the transposed basis vectors of a 3D transform.

Definition at line 174 of file matrix_basis.h.

References matrix_set_transposed_x_basis_vector(), matrix_set_transposed_y_basis_vector(), and matrix_set_transposed_z_basis_vector().

Referenced by matrix_invert_RT_only(), and matrix_look_at().

Here is the call graph for this function:

Here is the caller graph for this function:

template<typename E , class A , class B , class L , class VecT_1 , class VecT_2 >
void cml::matrix_set_transposed_basis_vectors_2D ( matrix< E, A, B, L > &  m,
const VecT_1 &  x,
const VecT_2 &  y 
) [inline]

Set the transposed basis vectors of a 2D transform.

Definition at line 193 of file matrix_basis.h.

References matrix_set_transposed_x_basis_vector_2D(), and matrix_set_transposed_y_basis_vector_2D().

Referenced by matrix_invert_RT_only_2D().

Here is the call graph for this function:

Here is the caller graph for this function:

template<typename E , class A , class B , class L , class VecT >
void cml::matrix_set_transposed_x_basis_vector ( matrix< E, A, B, L > &  m,
const VecT &  x 
) [inline]

Set the transposed x basis vector of a 3D transform.

Definition at line 120 of file matrix_basis.h.

References matrix_set_transposed_basis_vector().

Referenced by matrix_set_transposed_basis_vectors().

Here is the call graph for this function:

Here is the caller graph for this function:

template<typename E , class A , class B , class L , class VecT >
void cml::matrix_set_transposed_x_basis_vector_2D ( matrix< E, A, B, L > &  m,
const VecT &  x 
) [inline]

Set the transposed x basis vector of a 2D transform.

Definition at line 150 of file matrix_basis.h.

References matrix_set_transposed_basis_vector_2D().

Referenced by matrix_set_transposed_basis_vectors_2D().

Here is the call graph for this function:

Here is the caller graph for this function:

template<typename E , class A , class B , class L , class VecT >
void cml::matrix_set_transposed_y_basis_vector ( matrix< E, A, B, L > &  m,
const VecT &  y 
) [inline]

Set the transposed y basis vector of a 3D transform.

Definition at line 126 of file matrix_basis.h.

References matrix_set_transposed_basis_vector().

Referenced by matrix_set_transposed_basis_vectors().

Here is the call graph for this function:

Here is the caller graph for this function:

template<typename E , class A , class B , class L , class VecT >
void cml::matrix_set_transposed_y_basis_vector_2D ( matrix< E, A, B, L > &  m,
const VecT &  y 
) [inline]

Set the transposed y basis vector of a 2D transform.

Definition at line 156 of file matrix_basis.h.

References matrix_set_transposed_basis_vector_2D().

Referenced by matrix_set_transposed_basis_vectors_2D().

Here is the call graph for this function:

Here is the caller graph for this function:

template<typename E , class A , class B , class L , class VecT >
void cml::matrix_set_transposed_z_basis_vector ( matrix< E, A, B, L > &  m,
const VecT &  z 
) [inline]

Set the transposed z basis vector of a 3D transform.

Definition at line 132 of file matrix_basis.h.

References matrix_set_transposed_basis_vector().

Referenced by matrix_set_transposed_basis_vectors().

Here is the call graph for this function:

Here is the caller graph for this function:

template<typename E , class A , class B , class L , class VecT >
void cml::matrix_set_x_basis_vector ( matrix< E, A, B, L > &  m,
const VecT &  x 
) [inline]

Set the x basis vector of a 3D transform.

Definition at line 102 of file matrix_basis.h.

References matrix_set_basis_vector().

Referenced by matrix_set_basis_vectors().

Here is the call graph for this function:

Here is the caller graph for this function:

template<typename E , class A , class B , class L , class VecT >
void cml::matrix_set_x_basis_vector_2D ( matrix< E, A, B, L > &  m,
const VecT &  x 
) [inline]

Set the x basis vector of a 2D transform.

Definition at line 138 of file matrix_basis.h.

References matrix_set_basis_vector_2D().

Referenced by matrix_set_basis_vectors_2D().

Here is the call graph for this function:

Here is the caller graph for this function:

template<typename E , class A , class B , class L , class VecT >
void cml::matrix_set_y_basis_vector ( matrix< E, A, B, L > &  m,
const VecT &  y 
) [inline]

Set the y basis vector of a 3D transform.

Definition at line 108 of file matrix_basis.h.

References matrix_set_basis_vector().

Referenced by matrix_set_basis_vectors().

Here is the call graph for this function:

Here is the caller graph for this function:

template<typename E , class A , class B , class L , class VecT >
void cml::matrix_set_y_basis_vector_2D ( matrix< E, A, B, L > &  m,
const VecT &  y 
) [inline]

Set the y basis vector of a 2D transform.

Definition at line 144 of file matrix_basis.h.

References matrix_set_basis_vector_2D().

Referenced by matrix_set_basis_vectors_2D().

Here is the call graph for this function:

Here is the caller graph for this function:

template<typename E , class A , class B , class L , class VecT >
void cml::matrix_set_z_basis_vector ( matrix< E, A, B, L > &  m,
const VecT &  z 
) [inline]

Set the z basis vector of a 3D transform.

Definition at line 114 of file matrix_basis.h.

References matrix_set_basis_vector().

Referenced by matrix_set_basis_vectors().

Here is the call graph for this function:

Here is the caller graph for this function:

template<typename E , class A , class B , class L >
void cml::matrix_shear ( matrix< E, A, B, L > &  m,
size_t  axis,
shear_s,
shear_t 
) [inline]

Build a matrix representing a 3D shear along the specified world axis.

Definition at line 191 of file matrix_transform.h.

References cml::detail::CheckIndex3(), cml::detail::CheckMatLinear3D(), cyclic_permutation(), and identity_transform().

Referenced by matrix_shear_x(), matrix_shear_y(), and matrix_shear_z().

Here is the call graph for this function:

Here is the caller graph for this function:

template<typename E , class A , class B , class L >
void cml::matrix_shear_2D ( matrix< E, A, B, L > &  m,
size_t  axis,
shear 
) [inline]

Build a matrix representing a 2D shear along the specified world axis.

Definition at line 230 of file matrix_transform.h.

References cml::detail::CheckIndex2(), cml::detail::CheckMatLinear2D(), cyclic_permutation(), and identity_transform().

Referenced by matrix_shear_x_2D(), and matrix_shear_y_2D().

Here is the call graph for this function:

Here is the caller graph for this function:

template<typename E , class A , class B , class L >
void cml::matrix_shear_x ( matrix< E, A, B, L > &  m,
shear_s,
shear_t 
) [inline]

Build a matrix representing a 3D shear along the world x axis.

Definition at line 208 of file matrix_transform.h.

References matrix_shear().

Here is the call graph for this function:

template<typename E , class A , class B , class L >
void cml::matrix_shear_x_2D ( matrix< E, A, B, L > &  m,
shear 
) [inline]

Build a matrix representing a 2D shear along the world x axis.

Definition at line 246 of file matrix_transform.h.

References matrix_shear_2D().

Here is the call graph for this function:

template<typename E , class A , class B , class L >
void cml::matrix_shear_y ( matrix< E, A, B, L > &  m,
shear_s,
shear_t 
) [inline]

Build a matrix representing a 3D shear along the world y axis.

Definition at line 214 of file matrix_transform.h.

References matrix_shear().

Here is the call graph for this function:

template<typename E , class A , class B , class L >
void cml::matrix_shear_y_2D ( matrix< E, A, B, L > &  m,
shear 
) [inline]

Build a matrix representing a 2D shear along the world y axis.

Definition at line 252 of file matrix_transform.h.

References matrix_shear_2D().

Here is the call graph for this function:

template<typename E , class A , class B , class L >
void cml::matrix_shear_z ( matrix< E, A, B, L > &  m,
shear_s,
shear_t 
) [inline]

Build a matrix representing a 3D shear along the world z axis.

Definition at line 220 of file matrix_transform.h.

References matrix_shear().

Here is the call graph for this function:

template<typename E , class A , class B , class L , class VecT >
void cml::matrix_skew_symmetric ( matrix< E, A, B, L > &  m,
const VecT &  v 
) [inline]

3D skew-symmetric matrix

Definition at line 74 of file matrix_misc.h.

References cml::detail::CheckMatMin3x3(), and cml::detail::CheckVec3().

Here is the call graph for this function:

template<typename E , class A , class B , class L >
void cml::matrix_skew_symmetric_2D ( matrix< E, A, B, L > &  m,
s 
) [inline]

2D skew-symmetric matrix

Definition at line 92 of file matrix_misc.h.

References cml::detail::CheckMatMin2x2().

Here is the call graph for this function:

template<class MatT_1 , class MatT_2 , typename E >
MAT_TEMP_3X3 cml::matrix_slerp ( const MatT_1 &  m1,
const MatT_2 &  m2,
t,
tolerance = epsilon<E>::placeholder() 
) [inline]

Spherical linear interpolation of two 3D rotation matrices.

Definition at line 820 of file matrix_rotation.h.

References MAT_TEMP_3X3, cml::detail::matrix_concat_rotations(), matrix_rotation_difference(), and matrix_scale_rotation_angle().

Here is the call graph for this function:

template<class MatT_1 , class MatT_2 , typename E >
MAT_TEMP_2X2 cml::matrix_slerp_2D ( const MatT_1 &  m1,
const MatT_2 &  m2,
t,
tolerance = epsilon<E>::placeholder() 
) [inline]

Spherical linear interpolation of two 2D rotation matrices.

Definition at line 832 of file matrix_rotation.h.

References MAT_TEMP_2X2, cml::detail::matrix_concat_rotations_2D(), matrix_rotation_difference_2D(), and matrix_scale_rotation_angle_2D().

Here is the call graph for this function:

template<class MatT , typename E , class A >
void cml::matrix_to_axis_angle ( const MatT &  m,
vector< E, A > &  axis,
E &  angle,
tolerance = epsilon<E>::placeholder() 
) [inline]

Convert a 3D rotation matrix to an axis-angle pair.

Definition at line 851 of file matrix_rotation.h.

References cml::detail::CheckMatLinear3D(), cyclic_permutation(), index_of_max(), length(), cml::constants< Float >::pi(), and trace_3x3().

Referenced by matrix_decompose_SRT(), and matrix_scale_rotation_angle().

Here is the call graph for this function:

Here is the caller graph for this function:

template<class MatT , typename Real >
void cml::matrix_to_euler ( const MatT &  m,
Real &  angle_0,
Real &  angle_1,
Real &  angle_2,
EulerOrder  order,
Real  tolerance = epsilon<Real>::placeholder() 
) [inline]

Convert a 3D rotation matrix to an Euler-angle triple.

Definition at line 902 of file matrix_rotation.h.

References cml::detail::CheckMatLinear3D(), length(), sign(), and cml::detail::unpack_euler_order().

Referenced by matrix_decompose_SRT(), and quaternion_to_euler().

Here is the call graph for this function:

Here is the caller graph for this function:

template<class MatT >
MatT::value_type cml::matrix_to_rotation_2D ( const MatT &  m  )  [inline]

Convert a 2D rotation matrix to a rotation angle.

Definition at line 957 of file matrix_rotation.h.

References cml::detail::CheckMatLinear2D().

Referenced by matrix_decompose_SRT_2D(), and matrix_scale_rotation_angle_2D().

Here is the call graph for this function:

Here is the caller graph for this function:

template<typename E , class A , class B , class L , class VecT >
void cml::matrix_translation ( matrix< E, A, B, L > &  m,
const VecT &  translation 
) [inline]

Build a matrix representing a 3D translation.

Definition at line 48 of file matrix_transform.h.

References identity_transform(), and matrix_set_translation().

Here is the call graph for this function:

template<typename E , class A , class B , class L >
void cml::matrix_translation ( matrix< E, A, B, L > &  m,
x,
y 
) [inline]

Build a matrix representing a 3D translation with z set to 0.

Definition at line 40 of file matrix_transform.h.

References identity_transform(), and matrix_set_translation().

Here is the call graph for this function:

template<typename E , class A , class B , class L >
void cml::matrix_translation ( matrix< E, A, B, L > &  m,
x,
y,
z 
) [inline]

Build a matrix representing a 3D translation.

Definition at line 32 of file matrix_transform.h.

References identity_transform(), and matrix_set_translation().

Here is the call graph for this function:

template<typename E , class A , class B , class L , class VecT >
void cml::matrix_translation_2D ( matrix< E, A, B, L > &  m,
const VecT &  translation 
) [inline]

Build a matrix representing a 2D translation.

Definition at line 68 of file matrix_transform.h.

References identity_transform(), and matrix_set_translation_2D().

Here is the call graph for this function:

template<typename E , class A , class B , class L >
void cml::matrix_translation_2D ( matrix< E, A, B, L > &  m,
x,
y 
) [inline]

Build a matrix representing a 2D translation.

Definition at line 60 of file matrix_transform.h.

References identity_transform(), and matrix_set_translation_2D().

Here is the call graph for this function:

template<typename E , class A , class B , class L >
void cml::matrix_uniform_scale ( matrix< E, A, B, L > &  m,
scale 
) [inline]

Build a matrix representing a uniform 3D scale.

Definition at line 80 of file matrix_transform.h.

References matrix_scale().

Here is the call graph for this function:

template<typename E , class A , class B , class L >
void cml::matrix_uniform_scale_2D ( matrix< E, A, B, L > &  m,
scale 
) [inline]

Build a matrix representing a uniform 2D scale.

Definition at line 114 of file matrix_transform.h.

References matrix_scale_2D().

Here is the call graph for this function:

template<typename E , class A , class B , class L >
void cml::matrix_viewport ( matrix< E, A, B, L > &  m,
left,
right,
bottom,
top,
ZClip  z_clip,
n = E(0),
f = E(1) 
) [inline]

Definition at line 296 of file matrix_projection.h.

References inverse(), and matrix_orthographic_LH().

Here is the call graph for this function:

size_t cml::next ( size_t  i,
size_t  N 
) [inline]

Return next, with cycling, in a series of N non-negative integers.

Definition at line 101 of file util.h.

Referenced by cyclic_permutation().

Here is the caller graph for this function:

template<class T1 , class T2 , typename Real >
detail::TypePromote< T1,T2,typename et::ExprTraits<T1>::result_tag>::temporary_type cml::nlerp ( const T1 &  t1,
const T2 &  t2,
Real  t 
) [inline]

Definition at line 949 of file interpolation.h.

References cml::detail::InterpResize(), and cml::detail::nlerp().

Here is the call graph for this function:

template<typename XprT >
XprT::value_type cml::norm ( QUATXPR_ARG_TYPE  arg  )  [inline]

Cayley norm of a QuaternionXpr.

Definition at line 70 of file quaternion_functions.h.

template<typename E , class AT , class OT , class CT >
quaternion<E,AT,OT,CT>::value_type cml::norm ( const quaternion< E, AT, OT, CT > &  arg  )  [inline]

Cayley norm of a quaternion.

Definition at line 62 of file quaternion_functions.h.

References cml::quaternion< Element, ArrayType, Order, Cross >::length_squared().

Here is the call graph for this function:

template<typename XprT >
XprT::result_type cml::normalize ( VECXPR_ARG_TYPE  arg  )  [inline]

Normalize a vector expr.

Definition at line 63 of file vector_functions.h.

template<typename E , class AT >
vector<E, AT> cml::normalize ( const vector< E, AT > &  arg  )  [inline]

Normalize a vector.

Definition at line 53 of file vector_functions.h.

template<typename XprT >
XprT::temporary_type cml::normalize ( QUATXPR_ARG_TYPE  arg  )  [inline]

Normalize a quaternion expr.

Definition at line 123 of file quaternion_functions.h.

template<typename E , class AT , class OT , class CT >
quaternion<E,AT,OT,CT> cml::normalize ( const quaternion< E, AT, OT, CT > &  arg  )  [inline]

template<class XprT1 , class XprT2 >
et::QuaternionPromote< typename XprT1::temporary_type, typename XprT2::temporary_type>::temporary_type cml::operator* ( QUATXPR_ARG_TYPE_N(1)  left,
QUATXPR_ARG_TYPE_N(2)  right 
) [inline]

Declare mul taking two et::QuaternionXpr operands.

Definition at line 128 of file quaternion_mul.h.

References cml::detail::QuaternionMult().

Here is the call graph for this function:

template<class XprT , typename E , class AT , class OT , class CT >
et::QuaternionPromote< typename XprT::temporary_type, typename quaternion<E,AT,OT,CT>::temporary_type>::temporary_type cml::operator* ( QUATXPR_ARG_TYPE  left,
const quaternion< E, AT, OT, CT > &  right 
) [inline]

Declare mul taking an et::QuaternionXpr and a quaternion.

Definition at line 117 of file quaternion_mul.h.

References cml::detail::QuaternionMult().

Here is the call graph for this function:

template<typename E , class AT , class OT , class CT , class XprT >
et::QuaternionPromote< typename quaternion<E,AT,OT,CT>::temporary_type, typename XprT::temporary_type>::temporary_type cml::operator* ( const quaternion< E, AT, OT, CT > &  left,
QUATXPR_ARG_TYPE  right 
) [inline]

Declare mul taking a quaternion and a et::QuaternionXpr.

Definition at line 105 of file quaternion_mul.h.

References cml::detail::QuaternionMult().

Here is the call graph for this function:

template<typename E1 , class AT1 , typename E2 , class AT2 , class OT , class CT >
et::QuaternionPromote< typename quaternion<E1,AT1,OT,CT>::temporary_type, typename quaternion<E2,AT2,OT,CT>::temporary_type>::temporary_type cml::operator* ( const quaternion< E1, AT1, OT, CT > &  left,
const quaternion< E2, AT2, OT, CT > &  right 
) [inline]

Declare mul taking two quaternion operands.

Definition at line 93 of file quaternion_mul.h.

References cml::detail::QuaternionMult().

Here is the call graph for this function:

template<typename XprT1 , typename XprT2 >
et::MatVecPromote< typename XprT1::result_type, typename XprT2::result_type>::temporary_type cml::operator* ( const et::VectorXpr< XprT1 > &  left,
const et::MatrixXpr< XprT2 > &  right 
) [inline]

operator*() for a VectorXpr and a MatrixXpr.

Definition at line 264 of file matvec_mul.h.

References cml::et::MatrixXpr< ExprT >::cols(), cml::detail::mul(), cml::et::detail::Resize(), cml::et::MatrixXpr< ExprT >::rows(), and cml::et::VectorXpr< ExprT >::size().

Here is the call graph for this function:

template<typename XprT , typename E , class AT , typename BO , class L >
et::MatVecPromote< typename XprT::result_type, matrix<E,AT,BO,L>>::temporary_type cml::operator* ( const et::VectorXpr< XprT > &  left,
const matrix< E, AT, BO, L > &  right 
) [inline]

operator*() for a VectorXpr and a matrix.

Definition at line 248 of file matvec_mul.h.

References cml::detail::mul(), cml::et::detail::Resize(), and cml::et::VectorXpr< ExprT >::size().

Here is the call graph for this function:

template<typename XprT , typename E , class AT >
et::MatVecPromote< typename XprT::result_type, vector<E,AT>>::temporary_type cml::operator* ( const vector< E, AT > &  left,
const et::MatrixXpr< XprT > &  right 
) [inline]

operator*() for a vector and a MatrixXpr.

Definition at line 232 of file matvec_mul.h.

References cml::et::MatrixXpr< ExprT >::cols(), cml::detail::mul(), cml::et::detail::Resize(), and cml::et::MatrixXpr< ExprT >::rows().

Here is the call graph for this function:

template<typename E1 , class AT1 , typename E2 , class AT2 , typename BO , class L >
et::MatVecPromote< vector<E1,AT1>, matrix<E2,AT2,BO,L>>::temporary_type cml::operator* ( const vector< E1, AT1 > &  left,
const matrix< E2, AT2, BO, L > &  right 
) [inline]

operator*() for a vector and a matrix.

Definition at line 221 of file matvec_mul.h.

References cml::detail::mul().

Here is the call graph for this function:

template<typename XprT1 , typename XprT2 >
et::MatVecPromote< typename XprT1::result_type, typename XprT2::result_type>::temporary_type cml::operator* ( const et::MatrixXpr< XprT1 > &  left,
const et::VectorXpr< XprT2 > &  right 
) [inline]

operator*() for a MatrixXpr and a VectorXpr.

Definition at line 200 of file matvec_mul.h.

References cml::et::MatrixXpr< ExprT >::cols(), cml::detail::mul(), cml::et::detail::Resize(), cml::et::MatrixXpr< ExprT >::rows(), and cml::et::VectorXpr< ExprT >::size().

Here is the call graph for this function:

template<typename XprT , typename E , class AT >
et::MatVecPromote< typename XprT::result_type, vector<E,AT>>::temporary_type cml::operator* ( const et::MatrixXpr< XprT > &  left,
const vector< E, AT > &  right 
) [inline]

operator*() for a MatrixXpr and a vector.

Definition at line 184 of file matvec_mul.h.

References cml::et::MatrixXpr< ExprT >::cols(), cml::detail::mul(), cml::et::detail::Resize(), and cml::et::MatrixXpr< ExprT >::rows().

Here is the call graph for this function:

template<typename E , class AT , class L , typename BO , typename XprT >
et::MatVecPromote< matrix<E,AT,BO,L>, typename XprT::result_type>::temporary_type cml::operator* ( const matrix< E, AT, BO, L > &  left,
const et::VectorXpr< XprT > &  right 
) [inline]

operator*() for a matrix and a VectorXpr.

Definition at line 168 of file matvec_mul.h.

References cml::detail::mul(), cml::et::detail::Resize(), and cml::et::VectorXpr< ExprT >::size().

Here is the call graph for this function:

template<typename E1 , class AT1 , typename BO , class L , typename E2 , class AT2 >
et::MatVecPromote< matrix<E1,AT1,BO,L>, vector<E2,AT2>>::temporary_type cml::operator* ( const matrix< E1, AT1, BO, L > &  left,
const vector< E2, AT2 > &  right 
) [inline]

operator*() for a matrix and a vector.

Definition at line 157 of file matvec_mul.h.

References cml::detail::mul().

Here is the call graph for this function:

template<typename XprT1 , typename XprT2 >
et::MatrixPromote< typename XprT1::result_type, typename XprT2::result_type>::temporary_type cml::operator* ( const et::MatrixXpr< XprT1 > &  left,
const et::MatrixXpr< XprT2 > &  right 
) [inline]

operator*() for two MatrixXpr's.

Definition at line 183 of file matrix_mul.h.

References cml::et::MatrixXpr< ExprT >::cols(), cml::detail::mul(), cml::et::detail::Resize(), and cml::et::MatrixXpr< ExprT >::rows().

Here is the call graph for this function:

template<typename XprT , typename E , class AT , typename BO , typename L >
et::MatrixPromote< typename XprT::result_type , matrix<E,AT,BO,L>>::temporary_type cml::operator* ( const et::MatrixXpr< XprT > &  left,
const matrix< E, AT, BO, L > &  right 
) [inline]

operator*() for a MatrixXpr and a matrix.

Definition at line 166 of file matrix_mul.h.

References cml::et::MatrixXpr< ExprT >::cols(), cml::detail::mul(), cml::et::detail::Resize(), and cml::et::MatrixXpr< ExprT >::rows().

Here is the call graph for this function:

template<typename E , class AT , typename BO , typename L , typename XprT >
et::MatrixPromote< matrix<E,AT,BO,L>, typename XprT::result_type>::temporary_type cml::operator* ( const matrix< E, AT, BO, L > &  left,
const et::MatrixXpr< XprT > &  right 
) [inline]

operator*() for a matrix and a MatrixXpr.

Definition at line 149 of file matrix_mul.h.

References cml::et::MatrixXpr< ExprT >::cols(), cml::detail::mul(), cml::et::detail::Resize(), and cml::et::MatrixXpr< ExprT >::rows().

Here is the call graph for this function:

template<typename E1 , class AT1 , typename L1 , typename E2 , class AT2 , typename L2 , typename BO >
et::MatrixPromote< matrix<E1,AT1,BO,L1>, matrix<E2,AT2,BO,L2>>::temporary_type cml::operator* ( const matrix< E1, AT1, BO, L1 > &  left,
const matrix< E2, AT2, BO, L2 > &  right 
) [inline]

operator*() for two matrices.

Definition at line 138 of file matrix_mul.h.

References cml::detail::mul().

Here is the call graph for this function:

template<class XprT >
std::ostream& cml::operator<< ( std::ostream &  os,
const et::VectorXpr< XprT > &  v 
) [inline]

Output a vector expression to a std::ostream.

Definition at line 32 of file vector_print.h.

template<typename E , class AT >
std::ostream& cml::operator<< ( std::ostream &  os,
const vector< E, AT > &  v 
) [inline]

Output a vector to a std::ostream.

Definition at line 22 of file vector_print.h.

template<class XprT >
std::ostream& cml::operator<< ( std::ostream &  os,
const et::QuaternionXpr< XprT > &  q 
) [inline]

Output a quaternion expression to a std::ostream.

Definition at line 63 of file quaternion_print.h.

template<typename E , class AT , class OT , typename CT >
std::ostream& cml::operator<< ( std::ostream &  os,
const cml::quaternion< E, AT, OT, CT > &  q 
) [inline]

Output a quaternion to a std::ostream.

Definition at line 49 of file quaternion_print.h.

template<class XprT >
std::ostream& cml::operator<< ( std::ostream &  os,
const et::MatrixXpr< XprT > &  m 
) [inline]

Output a matrix expression to a std::ostream.

Definition at line 39 of file matrix_print.h.

template<typename E , class AT , typename BO , class L >
std::ostream& cml::operator<< ( std::ostream &  os,
const matrix< E, AT, BO, L > &  m 
) [inline]

Output a matrix to a std::ostream.

Definition at line 22 of file matrix_print.h.

template<class VecT , typename E , class A >
void cml::orthonormal_basis ( const VecT &  align,
vector< E, A > &  x,
vector< E, A > &  y,
vector< E, A > &  z,
bool  normalize_align = true,
AxisOrder  order = axis_order_zyx 
) [inline]

This version of orthonormal_basis() constructs in arbitrary basis given a vector with which to align the i'th basis vector.

To avoid the failure case, the reference vector is always chosen so as to not be parallel to 'align'. This means the algorithm will always generate a valid basis, which can be useful in some circumstances; however, it should be noted that the basis will likely 'pop' as the alignment vector changes, and so may not be suitable for billboarding or other similar applications.

Definition at line 201 of file vector_ortho.h.

References axis_3D(), cml::detail::CheckVec3(), index_of_min_abs(), and orthonormal_basis().

Here is the call graph for this function:

template<class VecT_1 , class VecT_2 , typename E , class A >
void cml::orthonormal_basis ( const VecT_1 &  align,
const VecT_2 &  reference,
vector< E, A > &  x,
vector< E, A > &  y,
vector< E, A > &  z,
bool  normalize_align = true,
AxisOrder  order = axis_order_zyx 
) [inline]

This version of orthonormal_basis() ultimately does the work for all orthonormal_basis_*() functions.

Given input vectors 'align' and 'reference', and an order 'axis_order_<i><j><k>', it constructs an orthonormal basis such that the i'th basis vector is aligned with (parallel to and pointing in the same direction as) 'align', and the j'th basis vector is maximally aligned with 'reference'. The k'th basis vector is chosen such that the basis has a determinant of +1.

Note:
The algorithm fails when 'align' is nearly parallel to 'reference'; this should be checked for and handled externally if it's a case that may occur.

Definition at line 159 of file vector_ortho.h.

References axis(), cross(), normalize(), unit_cross(), and cml::detail::unpack_axis_order().

Referenced by matrix_rotation_align(), orthonormal_basis(), orthonormal_basis_axial(), and orthonormal_basis_viewplane().

Here is the call graph for this function:

Here is the caller graph for this function:

template<class VecT , typename E , class A >
void cml::orthonormal_basis_2D ( const VecT &  align,
vector< E, A > &  x,
vector< E, A > &  y,
bool  normalize_align = true,
AxisOrder2D  order = axis_order_xy 
) [inline]

Build a 2D orthonormal basis.

Definition at line 308 of file vector_ortho.h.

References axis(), normalize(), perp(), and cml::detail::unpack_axis_order_2D().

Referenced by matrix_rotation_align_2D().

Here is the call graph for this function:

Here is the caller graph for this function:

template<class VecT_1 , class VecT_2 , typename E , class A >
void cml::orthonormal_basis_axial ( const VecT_1 &  align,
const VecT_2 &  axis,
vector< E, A > &  x,
vector< E, A > &  y,
vector< E, A > &  z,
bool  normalize_align = true,
AxisOrder  order = axis_order_zyx 
) [inline]

orthonormal_basis_axial() generates a basis in which the j'th basis vector is aligned with 'axis' and the i'th basis vector is maximally aligned (as 'aligned as possible') with 'align'.

This can be used for e.g. axial billboarding for, say, trees or beam effects.

Note that the implementation simply passes off to the 'reference' version of orthonormal_basis(), with the parameters adjusted so that the alignment is axial.

Note:
With this algorithm the failure case is when 'align' and 'axis' are nearly parallel; if this is likely, it should be checked for and handled externally.

Definition at line 235 of file vector_ortho.h.

References orthonormal_basis(), and cml::detail::swap_axis_order().

Referenced by matrix_rotation_align_axial().

Here is the call graph for this function:

Here is the caller graph for this function:

template<class MatT , typename E , class A >
void cml::orthonormal_basis_viewplane ( const MatT &  view_matrix,
vector< E, A > &  x,
vector< E, A > &  y,
vector< E, A > &  z,
Handedness  handedness,
AxisOrder  order = axis_order_zyx 
) [inline]

orthonormal_basis_viewplane() builds a basis aligned with a viewplane, as extracted from the input view matrix.

The function takes into account the handedness of the input view matrix and orients the basis accordingly.

Note:
The generated basis will always be valid.

Definition at line 261 of file vector_ortho.h.

References left_handed, matrix_get_transposed_y_basis_vector(), matrix_get_transposed_z_basis_vector(), and orthonormal_basis().

Referenced by matrix_rotation_align_viewplane(), orthonormal_basis_viewplane_LH(), and orthonormal_basis_viewplane_RH().

Here is the call graph for this function:

Here is the caller graph for this function:

template<class MatT , typename E , class A >
void cml::orthonormal_basis_viewplane_LH ( const MatT &  view_matrix,
vector< E, A > &  x,
vector< E, A > &  y,
vector< E, A > &  z,
AxisOrder  order = axis_order_zyx 
) [inline]

Build a viewplane-oriented basis from a left-handedness view matrix.

Definition at line 282 of file vector_ortho.h.

References left_handed, and orthonormal_basis_viewplane().

Here is the call graph for this function:

template<class MatT , typename E , class A >
void cml::orthonormal_basis_viewplane_RH ( const MatT &  view_matrix,
vector< E, A > &  x,
vector< E, A > &  y,
vector< E, A > &  z,
AxisOrder  order = axis_order_zyx 
) [inline]

Build a viewplane-oriented basis from a right-handedness view matrix.

Definition at line 295 of file vector_ortho.h.

References orthonormal_basis_viewplane(), and right_handed.

Here is the call graph for this function:

template<typename E , class A >
void cml::orthonormalize ( vector< E, A > &  v0,
vector< E, A > &  v1,
size_t  stable_axis = 0,
size_t  num_iter = 0,
s = E(1) 
) [inline]

Orthonormalize 2 basis vectors in R2.

Definition at line 95 of file vector_ortho.h.

References cml::detail::CheckIndex2(), cml::detail::CheckVec2(), cyclic_permutation(), dot(), normalize(), and project_to_hplane().

Here is the call graph for this function:

template<typename E , class A >
void cml::orthonormalize ( vector< E, A > &  v0,
vector< E, A > &  v1,
vector< E, A > &  v2,
size_t  stable_axis = 2,
size_t  num_iter = 0,
s = E(1) 
) [inline]

Orthonormalize 3 basis vectors in R3.

Called with the default values, this function performs a single Gram- Schmidt step to orthonormalize the input vectors. By default, the direction of the 3rd basis vector is unchanged by this operation, but the unaffected axis can be specified via the 'stable_axis' parameter.

The arguments 'num_iter' and 's' can be specified to an iterative Gram- Schmidt step. 'num_iter' is the number of iterations applied, and 's' is the fraction applied towards orthonormality each step.

In most cases, the default arguments can be ignored, leaving only the three input vectors.

Definition at line 43 of file vector_ortho.h.

References cml::detail::CheckIndex3(), cml::detail::CheckVec3(), cyclic_permutation(), dot(), normalize(), and project_to_hplane().

Referenced by matrix_orthogonalize_2x2(), and matrix_orthogonalize_3x3().

Here is the call graph for this function:

Here is the caller graph for this function:

template<typename LeftT , typename RightT >
detail::OuterPromote<LeftT,RightT>::promoted_matrix cml::outer ( const LeftT &  left,
const RightT &  right 
) [inline]

Definition at line 320 of file vector_products.h.

References CML_STATIC_REQUIRE_M, and cml::et::detail::Resize().

Referenced by matrix_scale_along_axis(), and matrix_scale_along_axis_2D().

Here is the call graph for this function:

Here is the caller graph for this function:

template<class VecT >
vector< typename VecT::value_type, fixed<2> > cml::perp ( const VecT &  v  )  [inline]

Definition at line 44 of file vector_misc.h.

References cml::detail::CheckVec2().

Referenced by orthonormal_basis_2D().

Here is the call graph for this function:

Here is the caller graph for this function:

template<typename LeftT , typename RightT >
detail::DotPromote<LeftT,RightT>::promoted_scalar cml::perp_dot ( const LeftT &  left,
const RightT &  right 
) [inline]

perp_dot()

Definition at line 239 of file vector_products.h.

References CML_STATIC_REQUIRE_M, and cml::detail::Require2D().

Referenced by signed_angle_2D().

Here is the call graph for this function:

Here is the caller graph for this function:

template<typename E , class A >
void cml::polar_to_cartesian ( radius,
theta,
vector< E, A > &  v 
) [inline]

Definition at line 88 of file coord_conversion.h.

Referenced by random_unit().

Here is the caller graph for this function:

size_t cml::prev ( size_t  i,
size_t  N 
) [inline]

Return previous, with cycling, in a series of N non-negative integers.

Definition at line 106 of file util.h.

template<class MatT_1 , class MatT_2 , class MatT_3 , class VecT >
vector< typename VecT::value_type, fixed<3> > cml::project_point ( const MatT_1 &  modelview,
const MatT_2 &  projection,
const MatT_3 &  viewport,
const VecT &  p 
) [inline]

Definition at line 59 of file projection.h.

References cml::detail::CheckVec3(), cml::detail::divide_by_w(), cml::detail::matrix_concat_transforms_4x4(), and transform_vector_4D().

Here is the call graph for this function:

template<class MatT_1 , class MatT_2 , class MatT_3 , class MatT_4 , class VecT >
vector< typename VecT::value_type, fixed<3> > cml::project_point ( const MatT_1 &  model,
const MatT_2 &  view,
const MatT_3 &  projection,
const MatT_4 &  viewport,
const VecT &  p 
) [inline]

Definition at line 38 of file projection.h.

References cml::detail::matrix_concat_transforms_4x4().

Here is the call graph for this function:

template<class VecT_1 , class VecT_2 >
detail::CrossPromote<VecT_1,VecT_2>::promoted_vector cml::project_to_hplane ( const VecT_1 &  v,
const VecT_2 &  n 
) [inline]

Definition at line 30 of file vector_misc.h.

References dot(), and cml::et::detail::Resize().

Referenced by orthonormalize().

Here is the call graph for this function:

Here is the caller graph for this function:

template<class QuatT >
vector< typename QuatT::value_type, fixed<3> > cml::quaternion_get_basis_vector ( const QuatT &  q,
size_t  i 
) [inline]

Get the i'th basis vector of a quaternion rotation.

Definition at line 24 of file quaternion_basis.h.

References cml::detail::CheckIndex3(), cml::detail::CheckQuat(), and cyclic_permutation().

Referenced by quaternion_get_x_basis_vector(), quaternion_get_y_basis_vector(), and quaternion_get_z_basis_vector().

Here is the call graph for this function:

Here is the caller graph for this function:

template<class QuatT , typename E , class A >
void cml::quaternion_get_basis_vectors ( const QuatT &  q,
vector< E, A > &  x,
vector< E, A > &  y,
vector< E, A > &  z 
) [inline]

Get the basis vectors of a quaternion rotation.

Definition at line 76 of file quaternion_basis.h.

References quaternion_get_x_basis_vector(), quaternion_get_y_basis_vector(), and quaternion_get_z_basis_vector().

Here is the call graph for this function:

template<class QuatT >
vector< typename QuatT::value_type, fixed<3> > cml::quaternion_get_x_basis_vector ( const QuatT &  q  )  [inline]

Get the x basis vector of a quaternion rotation.

Definition at line 58 of file quaternion_basis.h.

References quaternion_get_basis_vector().

Referenced by quaternion_get_basis_vectors().

Here is the call graph for this function:

Here is the caller graph for this function:

template<class QuatT >
vector< typename QuatT::value_type, fixed<3> > cml::quaternion_get_y_basis_vector ( const QuatT &  q  )  [inline]

Get the y basis vector of a quaternion rotation.

Definition at line 64 of file quaternion_basis.h.

References quaternion_get_basis_vector().

Referenced by quaternion_get_basis_vectors().

Here is the call graph for this function:

Here is the caller graph for this function:

template<class QuatT >
vector< typename QuatT::value_type, fixed<3> > cml::quaternion_get_z_basis_vector ( const QuatT &  q  )  [inline]

Get the z basis vector of a quaternion rotation.

Definition at line 70 of file quaternion_basis.h.

References quaternion_get_basis_vector().

Referenced by quaternion_get_basis_vectors().

Here is the call graph for this function:

Here is the caller graph for this function:

template<class E , class A , class O , class C >
void cml::quaternion_rotate_about_local_axis ( quaternion< E, A, O, C > &  q,
size_t  axis,
angle 
) [inline]

Definition at line 429 of file quaternion_rotation.h.

References cml::detail::CheckIndex3(), and cyclic_permutation().

Referenced by quaternion_rotate_about_local_x(), quaternion_rotate_about_local_y(), and quaternion_rotate_about_local_z().

Here is the call graph for this function:

Here is the caller graph for this function:

template<class E , class A , class O , class C >
void cml::quaternion_rotate_about_local_x ( quaternion< E, A, O, C > &  q,
angle 
) [inline]

Definition at line 460 of file quaternion_rotation.h.

References quaternion_rotate_about_local_axis().

Here is the call graph for this function:

template<class E , class A , class O , class C >
void cml::quaternion_rotate_about_local_y ( quaternion< E, A, O, C > &  q,
angle 
) [inline]

Definition at line 466 of file quaternion_rotation.h.

References quaternion_rotate_about_local_axis().

Here is the call graph for this function:

template<class E , class A , class O , class C >
void cml::quaternion_rotate_about_local_z ( quaternion< E, A, O, C > &  q,
angle 
) [inline]

Definition at line 472 of file quaternion_rotation.h.

References quaternion_rotate_about_local_axis().

Here is the call graph for this function:

template<class E , class A , class O , class C >
void cml::quaternion_rotate_about_world_axis ( quaternion< E, A, O, C > &  q,
size_t  axis,
angle 
) [inline]

Definition at line 376 of file quaternion_rotation.h.

References cml::detail::CheckIndex3(), and cyclic_permutation().

Referenced by quaternion_rotate_about_world_x(), quaternion_rotate_about_world_y(), and quaternion_rotate_about_world_z().

Here is the call graph for this function:

Here is the caller graph for this function:

template<class E , class A , class O , class C >
void cml::quaternion_rotate_about_world_x ( quaternion< E, A, O, C > &  q,
angle 
) [inline]

Definition at line 407 of file quaternion_rotation.h.

References quaternion_rotate_about_world_axis().

Here is the call graph for this function:

template<class E , class A , class O , class C >
void cml::quaternion_rotate_about_world_y ( quaternion< E, A, O, C > &  q,
angle 
) [inline]

Definition at line 413 of file quaternion_rotation.h.

References quaternion_rotate_about_world_axis().

Here is the call graph for this function:

template<class E , class A , class O , class C >
void cml::quaternion_rotate_about_world_z ( quaternion< E, A, O, C > &  q,
angle 
) [inline]

Definition at line 419 of file quaternion_rotation.h.

References quaternion_rotate_about_world_axis().

Here is the call graph for this function:

template<typename E , class A , class O , class C , class VecT_1 , class VecT_2 >
void cml::quaternion_rotation_aim_at ( quaternion< E, A, O, C > &  q,
const VecT_1 &  pos,
const VecT_2 &  target,
AxisOrder  order = axis_order_zyx 
) [inline]

See vector_ortho.h for details.

Definition at line 340 of file quaternion_rotation.h.

References matrix_rotation_aim_at(), and quaternion_rotation_matrix().

Here is the call graph for this function:

template<typename E , class A , class O , class C , class VecT_1 , class VecT_2 , class VecT_3 >
void cml::quaternion_rotation_aim_at ( quaternion< E, A, O, C > &  q,
const VecT_1 &  pos,
const VecT_2 &  target,
const VecT_3 &  reference,
AxisOrder  order = axis_order_zyx 
) [inline]

See vector_ortho.h for details.

Definition at line 323 of file quaternion_rotation.h.

References matrix_rotation_aim_at(), and quaternion_rotation_matrix().

Here is the call graph for this function:

template<typename E , class A , class O , class C , class VecT_1 , class VecT_2 , class VecT_3 >
void cml::quaternion_rotation_aim_at_axial ( quaternion< E, A, O, C > &  q,
const VecT_1 &  pos,
const VecT_2 &  target,
const VecT_3 &  axis,
AxisOrder  order = axis_order_zyx 
) [inline]

See vector_ortho.h for details.

Definition at line 356 of file quaternion_rotation.h.

References matrix_rotation_aim_at_axial(), and quaternion_rotation_matrix().

Here is the call graph for this function:

template<typename E , class A , class O , class C , class VecT >
void cml::quaternion_rotation_align ( quaternion< E, A, O, C > &  q,
const VecT &  align,
bool  normalize = true,
AxisOrder  order = axis_order_zyx 
) [inline]

See vector_ortho.h for details.

Definition at line 250 of file quaternion_rotation.h.

References matrix_rotation_align(), normalize(), and quaternion_rotation_matrix().

Here is the call graph for this function:

template<typename E , class A , class O , class C , class VecT_1 , class VecT_2 >
void cml::quaternion_rotation_align ( quaternion< E, A, O, C > &  q,
const VecT_1 &  align,
const VecT_2 &  reference,
bool  normalize = true,
AxisOrder  order = axis_order_zyx 
) [inline]

See vector_ortho.h for details.

Definition at line 234 of file quaternion_rotation.h.

References matrix_rotation_align(), normalize(), and quaternion_rotation_matrix().

Here is the call graph for this function:

template<typename E , class A , class O , class C , class VecT_1 , class VecT_2 >
void cml::quaternion_rotation_align_axial ( quaternion< E, A, O, C > &  q,
const VecT_1 &  align,
const VecT_2 &  axis,
bool  normalize = true,
AxisOrder  order = axis_order_zyx 
) [inline]

See vector_ortho.h for details.

Definition at line 262 of file quaternion_rotation.h.

References matrix_rotation_align_axial(), normalize(), and quaternion_rotation_matrix().

Here is the call graph for this function:

template<typename E , class A , class O , class C , class MatT >
void cml::quaternion_rotation_align_viewplane ( quaternion< E, A, O, C > &  q,
const MatT &  view_matrix,
Handedness  handedness,
AxisOrder  order = axis_order_zyx 
) [inline]

See vector_ortho.h for details.

Definition at line 275 of file quaternion_rotation.h.

References matrix_rotation_align_viewplane(), and quaternion_rotation_matrix().

Here is the call graph for this function:

template<typename E , class A , class O , class C , class MatT >
void cml::quaternion_rotation_align_viewplane_LH ( quaternion< E, A, O, C > &  q,
const MatT &  view_matrix,
AxisOrder  order = axis_order_zyx 
) [inline]

See vector_ortho.h for details.

Definition at line 290 of file quaternion_rotation.h.

References matrix_rotation_align_viewplane_LH(), and quaternion_rotation_matrix().

Here is the call graph for this function:

template<typename E , class A , class O , class C , class MatT >
void cml::quaternion_rotation_align_viewplane_RH ( quaternion< E, A, O, C > &  q,
const MatT &  view_matrix,
AxisOrder  order = axis_order_zyx 
) [inline]

See vector_ortho.h for details.

Definition at line 304 of file quaternion_rotation.h.

References matrix_rotation_align_viewplane_RH(), and quaternion_rotation_matrix().

Here is the call graph for this function:

template<class E , class A , class O , class C , class VecT >
void cml::quaternion_rotation_axis_angle ( quaternion< E, A, O, C > &  q,
const VecT &  axis,
angle 
) [inline]

Build a quaternion from an axis-angle pair.

Definition at line 80 of file quaternion_rotation.h.

References cml::detail::CheckVec3().

Referenced by quaternion_scale_angle().

Here is the call graph for this function:

Here is the caller graph for this function:

template<class QuatT_1 , class QuatT_2 >
et::QuaternionPromote2<QuatT_1,QuatT_2>::temporary_type cml::quaternion_rotation_difference ( const QuatT_1 &  q1,
const QuatT_2 &  q2 
) [inline]

Return the rotational 'difference' between two quaternions.

Definition at line 568 of file quaternion_rotation.h.

References cml::detail::quaternion_rotation_difference().

Here is the call graph for this function:

template<class E , class A , class O , class C >
void cml::quaternion_rotation_euler ( quaternion< E, A, O, C > &  q,
angle_0,
angle_1,
angle_2,
EulerOrder  order 
) [inline]

Build a quaternion from an Euler-angle triple.

Definition at line 175 of file quaternion_rotation.h.

References cml::detail::unpack_euler_order().

Here is the call graph for this function:

template<class E , class A , class O , class C , class MatT >
void cml::quaternion_rotation_matrix ( quaternion< E, A, O, C > &  q,
const MatT &  m 
) [inline]

template<class E , class A , class O , class C , class VecT_1 , class VecT_2 >
void cml::quaternion_rotation_vec_to_vec ( quaternion< E, A, O, C > &  q,
const VecT_1 &  v1,
const VecT_2 &  v2,
bool  unit_length_vectors = false 
) [inline]

Build a quaternion to rotate from one vector to another.

Definition at line 484 of file quaternion_rotation.h.

References cross(), dot(), and cml::quaternion< Element, ArrayType, Order, Cross >::normalize().

Referenced by matrix_rotation_vec_to_vec().

Here is the call graph for this function:

Here is the caller graph for this function:

template<class E , class A , class O , class C >
void cml::quaternion_rotation_world_axis ( quaternion< E, A, O, C > &  q,
size_t  axis,
angle 
) [inline]

Build a quaternion representing a rotation about the given world axis.

Definition at line 37 of file quaternion_rotation.h.

References cml::detail::CheckIndex3(), and cml::quaternion< Element, ArrayType, Order, Cross >::identity().

Referenced by quaternion_rotation_world_x(), quaternion_rotation_world_y(), and quaternion_rotation_world_z().

Here is the call graph for this function:

Here is the caller graph for this function:

template<class E , class A , class O , class C >
void cml::quaternion_rotation_world_x ( quaternion< E, A, O, C > &  q,
angle 
) [inline]

Build a quaternion representing a rotation about the world x axis.

Definition at line 58 of file quaternion_rotation.h.

References quaternion_rotation_world_axis().

Here is the call graph for this function:

template<class E , class A , class O , class C >
void cml::quaternion_rotation_world_y ( quaternion< E, A, O, C > &  q,
angle 
) [inline]

Build a quaternion representing a rotation about the world y axis.

Definition at line 64 of file quaternion_rotation.h.

References quaternion_rotation_world_axis().

Here is the call graph for this function:

template<class E , class A , class O , class C >
void cml::quaternion_rotation_world_z ( quaternion< E, A, O, C > &  q,
angle 
) [inline]

Build a quaternion representing a rotation about the world z axis.

Definition at line 70 of file quaternion_rotation.h.

References quaternion_rotation_world_axis().

Here is the call graph for this function:

template<typename E , class A , class O , class C >
void cml::quaternion_scale_angle ( quaternion< E, A, O, C > &  q,
t,
tolerance = epsilon<E>::placeholder() 
) [inline]

Definition at line 523 of file quaternion_rotation.h.

References axis(), quaternion_rotation_axis_angle(), and quaternion_to_axis_angle().

Here is the call graph for this function:

template<class QuatT , typename E , class A >
void cml::quaternion_to_axis_angle ( const QuatT &  q,
vector< E, A > &  axis,
E &  angle,
tolerance = epsilon<E>::placeholder() 
) [inline]

Convert a quaternion to an axis-angle pair.

Definition at line 579 of file quaternion_rotation.h.

References cml::detail::CheckQuat(), and length().

Referenced by quaternion_scale_angle().

Here is the call graph for this function:

Here is the caller graph for this function:

template<class QuatT , typename Real >
void cml::quaternion_to_euler ( const QuatT &  q,
Real &  angle_0,
Real &  angle_1,
Real &  angle_2,
EulerOrder  order,
Real  tolerance = epsilon<Real>::placeholder() 
) [inline]

Convert a quaternion to an Euler-angle triple.

Note: I've implemented direct quaternion-to-Euler conversion, but as far as I can tell it more or less reduces to converting the quaternion to a matrix as you go. The direct method is a little more efficient in that it doesn't require a temporary and only the necessary matrix elements need be computed. However, the implementation is complex and there's considerable opportunity for error, so from a development and debugging standpoint I think it's better to just perform the conversion via matrix_to_euler(), which is already known to be correct.

Definition at line 616 of file quaternion_rotation.h.

References matrix_rotation_quaternion(), and matrix_to_euler().

Here is the call graph for this function:

template<typename T >
T cml::rad ( theta  )  [inline]

Convert degrees to radians.

Definition at line 143 of file util.h.

References cml::constants< Float >::rad_per_deg().

Here is the call graph for this function:

size_t cml::random_binary (  )  [inline]

Random binary (0,1) value.

Definition at line 214 of file util.h.

Referenced by random_polar().

Here is the caller graph for this function:

long cml::random_integer ( long  min,
long  max 
) [inline]

Definition at line 229 of file util.h.

int cml::random_polar (  )  [inline]

Random polar (-1,1) value.

Definition at line 219 of file util.h.

References random_binary().

Here is the call graph for this function:

template<typename T >
T cml::random_real ( min,
max 
) [inline]

double cml::random_unit (  )  [inline]

Random real in [0,1].

Definition at line 224 of file util.h.

template<typename E , class A , class VecT >
void cml::random_unit ( vector< E, A > &  v,
const VecT &  axis,
theta 
) [inline]

Definition at line 229 of file vector_misc.h.

References axis_3D(), cross(), index_of_min_abs(), random_real(), rotate_vector(), and rotate_vector_2D().

Here is the call graph for this function:

template<typename E , class A >
void cml::random_unit ( vector< E, A > &  v  )  [inline]

Random unit 3D or 2D vector.

Todo:
: This is just placeholder code for what will be a more thorough 'random unit' implementation:
- All dimensions will be handled uniformly if practical, perhaps through a normal distrubution PRNG.

  • Failing that (or perhaps even in this case), dimensions 2 and 3 will be dispatched to special-case code, most likely implementing the algorithms below.

  • Like the utility random functions, the option of using one's own PRGN will be made available.

Todo:
: Once N-d random vectors are supported, add a 'random unit quaternion' function that wraps a call to random_unit() with a 4D vector as the argument.

Definition at line 173 of file vector_misc.h.

References acos_safe(), colatitude, polar_to_cartesian(), random_real(), and spherical_to_cartesian().

Referenced by random_real().

Here is the call graph for this function:

Here is the caller graph for this function:

template<typename XprT >
et::QuaternionXpr<XprT>::value_type cml::real ( const et::QuaternionXpr< XprT > &  e  )  [inline]

Returns the real (scalar) part of the QuaternionXpr.

Definition at line 37 of file quaternion_functions.h.

References cml::et::QuaternionXpr< ExprT >::real().

Here is the call graph for this function:

template<typename E , class AT , class OT , class CT >
quaternion<E,AT,OT,CT>::value_type cml::real ( const quaternion< E, AT, OT, CT > &  q  )  [inline]

Returns the real part of the quaternion.

Definition at line 29 of file quaternion_functions.h.

References cml::quaternion< Element, ArrayType, Order, Cross >::real().

Here is the call graph for this function:

template<class VecT_1 , class VecT_2 , typename Real >
vector< typename et::ScalarPromote< typename VecT_1::value_type, typename VecT_2::value_type >::type, fixed<3>> cml::rotate_vector ( const VecT_1 &  v,
const VecT_2 &  n,
Real  angle 
) [inline]

Rotate a 3D vector v about a unit-length vector n.

Definition at line 116 of file vector_misc.h.

References cml::detail::CheckVec3(), cross(), and dot().

Referenced by random_unit().

Here is the call graph for this function:

Here is the caller graph for this function:

template<class VecT , typename Real >
vector< typename VecT::value_type, fixed<2> > cml::rotate_vector_2D ( const VecT &  v,
Real  angle 
) [inline]

Rotate a 2D vector v about a unit-length vector n.

Definition at line 139 of file vector_misc.h.

References cml::detail::CheckVec2().

Referenced by random_unit().

Here is the call graph for this function:

Here is the caller graph for this function:

template<class XprT >
et::VectorXpr< et::MatrixRowOp<XprT> > cml::row ( const et::MatrixXpr< XprT > &  expr,
size_t  i 
) [inline]

Matrix row operator taking an et::MatrixXpr operand.

The parse tree is automatically compressed by hoisting the MatrixXpr's subexpression into the subexpression of the MatrixRowOp.

Definition at line 228 of file matrix_rowcol.h.

References cml::et::MatrixXpr< ExprT >::expression().

Here is the call graph for this function:

template<typename E , class AT , typename BO , typename L >
et::VectorXpr< et::MatrixRowOp< matrix<E,AT,BO,L> > > cml::row ( const matrix< E, AT, BO, L > &  expr,
size_t  i 
) [inline]

Matrix row operator taking a matrix operand.

Definition at line 215 of file matrix_rowcol.h.

Referenced by cml::detail::inverse_f< MatT, _tag >::operator()().

Here is the caller graph for this function:

template<typename T >
double cml::sign ( value  )  [inline]

Sign of input value as double.

Definition at line 31 of file util.h.

References T().

Referenced by matrix_to_euler().

Here is the call graph for this function:

Here is the caller graph for this function:

template<class VecT_1 , class VecT_2 , class VecT_3 >
detail::DotPromote< typename detail::CrossPromote<VecT_1,VecT_2>::promoted_vector, VecT_3>::promoted_scalar cml::signed_angle ( const VecT_1 &  v1,
const VecT_2 &  v2,
const VecT_3 &  reference 
) [inline]

Signed angle between two 3D vectors.

Definition at line 34 of file vector_angle.h.

References cross(), dot(), and length().

Here is the call graph for this function:

template<class VecT_1 , class VecT_2 >
detail::DotPromote< VecT_1, VecT_2 >::promoted_scalar cml::signed_angle_2D ( const VecT_1 &  v1,
const VecT_2 &  v2 
) [inline]

Signed angle between two 2D vectors.

Definition at line 56 of file vector_angle.h.

References dot(), and perp_dot().

Referenced by unsigned_angle_2D().

Here is the call graph for this function:

Here is the caller graph for this function:

template<class T1 , class T2 , typename Real >
detail::TypePromote< T1,T2,typename et::ExprTraits<T1>::result_tag>::temporary_type cml::slerp ( const T1 &  t1,
const T2 &  t2,
Real  t,
Real  tolerance = epsilon<Real>::placeholder() 
) [inline]

NOTE: Computation of intermediate rotation matrices for matrix 'squad' doesn't seem to be working correctly.

I'm not sure what the problem is (it might have to do with q and -q representing the same rotation), but in any case, I don't have time to get it sorted at the moment.

In the meantime, I've just hacked in static assertions that will restrict squad usage to quats. For anyone reading these comments, don't worry: the quaternion verison of squad works just fine. However, you'll just have to live without matrix squad for the time being (which is probably just as well, given that matrix interpolation isn't terribly efficient).

Definition at line 920 of file interpolation.h.

References cml::detail::InterpResize(), and cml::detail::slerp().

Here is the call graph for this function:

template<typename E , class A >
void cml::spherical_to_cartesian ( radius,
theta,
phi,
size_t  axis,
SphericalType  type,
vector< E, A > &  v 
) [inline]

Definition at line 60 of file coord_conversion.h.

References cml::detail::CheckIndex3(), cml::detail::CheckVec3(), cyclic_permutation(), latitude, and cml::constants< Float >::pi_over_2().

Referenced by random_unit().

Here is the call graph for this function:

Here is the caller graph for this function:

template<typename T >
T cml::sqr ( value  )  [inline]

Square a value.

Definition at line 75 of file util.h.

template<typename T >
T cml::sqrt_safe ( value  )  [inline]

Wrap std::sqrt() and clamp argument to [0, inf).

Definition at line 68 of file util.h.

References T().

Here is the call graph for this function:

template<class XprT >
et::MatrixTransposeOp< XprT>::temporary_type cml::T ( MATXPR_ARG_TYPE  expr  )  [inline]

Matrix transpose operator taking an et::MatrixXpr operand.

The parse tree is automatically compressed by hoisting the MatrixXpr's subexpression into the subexpression of the MatrixTransposeOp.

Definition at line 240 of file matrix_transpose.h.

References transpose().

Here is the call graph for this function:

template<typename E , class AT , typename BO , typename L >
et::MatrixTransposeOp< matrix<E,AT,BO,L>>::temporary_type cml::T ( const matrix< E, AT, BO, L > &  expr  )  [inline]

Matrix transpose operator taking a matrix operand.

Definition at line 226 of file matrix_transpose.h.

References transpose().

Referenced by acos_safe(), asin_safe(), fov_to_zoom(), inv_sqrt(), sign(), sqrt_safe(), wrap(), xfov_to_yfov(), yfov_to_xfov(), and zoom_to_fov().

Here is the call graph for this function:

Here is the caller graph for this function:

template<class MatT >
MatT::value_type cml::trace ( const MatT &  m  )  [inline]

Trace of a square matrix.

Definition at line 38 of file matrix_misc.h.

References cml::detail::CheckMatSquare().

Here is the call graph for this function:

template<class MatT >
MatT::value_type cml::trace_2x2 ( const MatT &  m  )  [inline]

Trace of the upper-left 2x2 part of a matrix.

Definition at line 64 of file matrix_misc.h.

References cml::detail::CheckMatMin2x2().

Here is the call graph for this function:

template<class MatT >
MatT::value_type cml::trace_3x3 ( const MatT &  m  )  [inline]

Trace of the upper-left 3x3 part of a matrix.

Definition at line 54 of file matrix_misc.h.

References cml::detail::CheckMatMin3x3().

Referenced by matrix_to_axis_angle(), and quaternion_rotation_matrix().

Here is the call graph for this function:

Here is the caller graph for this function:

template<class MatT , class VecT >
TEMP_VEC3 cml::transform_point ( const MatT &  m,
const VecT &  v 
) [inline]

Apply a 3D affine transform to a 3D point.

Definition at line 78 of file vector_transform.h.

References cml::detail::CheckMatAffine3D(), cml::detail::CheckVec3(), and TEMP_VEC3.

Here is the call graph for this function:

template<class MatT , class VecT >
TEMP_VEC2 cml::transform_point_2D ( const MatT &  m,
const VecT &  v 
) [inline]

Apply a 2D affine transform to a 2D point.

Definition at line 118 of file vector_transform.h.

References cml::detail::CheckMatAffine2D(), cml::detail::CheckVec2(), and TEMP_VEC2.

Here is the call graph for this function:

template<class MatT , class VecT >
TEMP_VEC3 cml::transform_vector ( const MatT &  m,
const VecT &  v 
) [inline]

Apply a 3D affine transform to a 3D vector.

Definition at line 98 of file vector_transform.h.

References cml::detail::CheckMatLinear3D(), cml::detail::CheckVec3(), and TEMP_VEC3.

Here is the call graph for this function:

template<class MatT , class VecT >
TEMP_VEC2 cml::transform_vector_2D ( const MatT &  m,
const VecT &  v 
) [inline]

Apply a 2D affine transform to a 2D vector.

Definition at line 136 of file vector_transform.h.

References cml::detail::CheckMatLinear2D(), cml::detail::CheckVec2(), and TEMP_VEC2.

Here is the call graph for this function:

template<class MatT , class VecT >
TEMP_VEC4 cml::transform_vector_4D ( const MatT &  m,
const VecT &  v 
) [inline]

Apply a 4x4 homogeneous transform matrix to a 4D vector.

Definition at line 72 of file vector_transform.h.

References cml::detail::transform_vector_4D().

Referenced by project_point(), and unproject_point().

Here is the call graph for this function:

Here is the caller graph for this function:

template<class XprT >
et::MatrixTransposeOp< XprT>::temporary_type cml::transpose ( MATXPR_ARG_TYPE  expr  )  [inline]

Matrix transpose operator taking an et::MatrixXpr operand.

The parse tree is automatically compressed by hoisting the MatrixXpr's subexpression into the subexpression of the MatrixTransposeOp.

Definition at line 200 of file matrix_transpose.h.

References cml::et::detail::Resize().

Here is the call graph for this function:

template<typename E , class AT , typename BO , typename L >
et::MatrixTransposeOp< matrix<E,AT,BO,L>>::temporary_type cml::transpose ( const matrix< E, AT, BO, L > &  expr  )  [inline]

template<class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , typename Scalar >
detail::TypePromote< typename detail::TypePromote< typename detail::TypePromote< T1,T2,typename et::ExprTraits<T1>::result_tag >::temporary_type, typename detail::TypePromote< T3,T4,typename et::ExprTraits<T3>::result_tag >::temporary_type, typename et::ExprTraits<T1>::result_tag >::temporary_type, typename detail::TypePromote< typename detail::TypePromote< T5,T6,typename et::ExprTraits<T5>::result_tag >::temporary_type, typename detail::TypePromote< T7,T8,typename et::ExprTraits<T7>::result_tag >::temporary_type, typename et::ExprTraits<T1>::result_tag >::temporary_type, typename et::ExprTraits<T1>::result_tag>::temporary_type cml::trilerp ( const T1 &  val000,
const T2 &  val100,
const T3 &  val010,
const T4 &  val110,
const T5 &  val001,
const T6 &  val101,
const T7 &  val011,
const T8 &  val111,
Scalar  u,
Scalar  v,
Scalar  w 
) [inline]

Trilinear interpolation of 8 values.

Note:
The data values are assumed to be sampled at the corners of a unit cube, so for interpolation, u, v, and w must lie between 0 and 1.

Definition at line 1074 of file interpolation.h.

References cml::detail::InterpResize().

Here is the call graph for this function:

template<class VecT_1 , class VecT_2 , class VecT_3 >
detail::DotPromote< VecT_1, typename detail::CrossPromote< VecT_2, VecT_3 >::promoted_vector>::promoted_scalar cml::triple_product ( const VecT_1 &  v1,
const VecT_2 &  v2,
const VecT_3 &  v3 
) [inline]

Return the triple product of three 3D vectors.

No checking is done here, as dot() and cross() will catch any size or type errors.

Definition at line 314 of file vector_products.h.

References cross(), and dot().

Referenced by cml::detail::intersect_planes().

Here is the call graph for this function:

Here is the caller graph for this function:

template<class LeftT , class RightT >
detail::CrossPromote<LeftT,RightT>::promoted_vector cml::unit_cross ( const LeftT &  left,
const RightT &  right 
) [inline]

Return normalized cross product of two vectors.

Definition at line 62 of file vector_misc.h.

References cross(), and normalize().

Referenced by matrix_look_at(), and orthonormal_basis().

Here is the call graph for this function:

Here is the caller graph for this function:

template<class MatT_1 , class MatT_2 , class MatT_3 , class VecT >
vector< typename VecT::value_type, fixed<3> > cml::unproject_point ( const MatT_1 &  modelview,
const MatT_2 &  projection,
const MatT_3 &  viewport,
const VecT &  p 
) [inline]

Definition at line 112 of file projection.h.

References cml::detail::CheckVec3(), cml::detail::divide_by_w(), inverse(), cml::detail::matrix_concat_transforms_4x4(), and transform_vector_4D().

Here is the call graph for this function:

template<class MatT_1 , class MatT_2 , class MatT_3 , class MatT_4 , class VecT >
vector< typename VecT::value_type, fixed<3> > cml::unproject_point ( const MatT_1 &  model,
const MatT_2 &  view,
const MatT_3 &  projection,
const MatT_4 &  viewport,
const VecT &  p 
) [inline]

Definition at line 91 of file projection.h.

References cml::detail::matrix_concat_transforms_4x4().

Referenced by make_pick_ray().

Here is the call graph for this function:

Here is the caller graph for this function:

template<class VecT_1 , class VecT_2 >
detail::DotPromote< VecT_1, VecT_2 >::promoted_scalar cml::unsigned_angle ( const VecT_1 &  v1,
const VecT_2 &  v2 
) [inline]

Unsigned angle between two 3D vectors.

Definition at line 49 of file vector_angle.h.

References cross(), dot(), and length().

Here is the call graph for this function:

template<class VecT_1 , class VecT_2 >
detail::DotPromote< VecT_1, VecT_2 >::promoted_scalar cml::unsigned_angle_2D ( const VecT_1 &  v1,
const VecT_2 &  v2 
) [inline]

Unsigned angle between two 2D vectors.

Definition at line 63 of file vector_angle.h.

References signed_angle_2D().

Here is the call graph for this function:

template<typename T >
T cml::wrap ( value,
min,
max 
) [inline]

Wrap input value to the range [min,max].

Definition at line 313 of file util.h.

References T().

Here is the call graph for this function:

vector< double, fixed<2> > cml::x_axis_2D (  )  [inline]

Return a the 2D x cardinal axis.

Definition at line 122 of file misc.h.

References axis_2D().

Here is the call graph for this function:

vector< double, fixed<3> > cml::x_axis_3D (  )  [inline]

Return a the 3D x cardinal axis.

Definition at line 132 of file misc.h.

References axis_3D().

Here is the call graph for this function:

template<typename T >
T cml::xfov_to_yfov ( xfov,
aspect 
) [inline]

Convert horizontal field of view to vertical field of view.

Definition at line 324 of file util.h.

References T().

Here is the call graph for this function:

template<typename T >
T cml::xzoom_to_yzoom ( xzoom,
aspect 
) [inline]

Convert horizontal zoom to vertical zoom.

Definition at line 336 of file util.h.

vector< double, fixed<2> > cml::y_axis_2D (  )  [inline]

Return a the 2D y cardinal axis.

Definition at line 127 of file misc.h.

References axis_2D().

Here is the call graph for this function:

vector< double, fixed<3> > cml::y_axis_3D (  )  [inline]

Return a the 3D y cardinal axis.

Definition at line 137 of file misc.h.

References axis_3D().

Here is the call graph for this function:

template<typename T >
T cml::yfov_to_xfov ( yfov,
aspect 
) [inline]

Convert vertical field of view to horizontal field of view.

Definition at line 330 of file util.h.

References T().

Here is the call graph for this function:

template<typename T >
T cml::yzoom_to_xzoom ( yzoom,
aspect 
) [inline]

Convert vertical zoom to horizontal zoom.

Definition at line 342 of file util.h.

vector< double, fixed<3> > cml::z_axis_3D (  )  [inline]

Return a the 3D z cardinal axis.

Definition at line 142 of file misc.h.

References axis_3D().

Here is the call graph for this function:

template<size_t N>
matrix< double, fixed< N, M >, row_basis, row_major > cml::zero (  )  [inline]

Return an N-d zero vector.

Return an NxM zero matrix.

Definition at line 33 of file misc.h.

Referenced by cml::vector< Element, fixed< Size > >::cardinal(), cml::vector< Element, external<> >::cardinal(), cml::vector< Element, external< Size > >::cardinal(), and cml::vector< Element, dynamic< Alloc > >::cardinal().

Here is the caller graph for this function:

vector< double, fixed<2> > cml::zero_2D (  )  [inline]

Return the 2D zero vector.

Definition at line 93 of file misc.h.

matrix< double, fixed<2,2>, row_basis, row_major > cml::zero_2x2 (  )  [inline]

Return the 2x2 zero matrix.

Definition at line 151 of file misc.h.

vector< double, fixed<3> > cml::zero_3D (  )  [inline]

Return the 3D zero vector.

Definition at line 98 of file misc.h.

matrix< double, fixed<3,3>, row_basis, row_major > cml::zero_3x3 (  )  [inline]

Return the 3x3 zero matrix.

Definition at line 156 of file misc.h.

vector< double, fixed<4> > cml::zero_4D (  )  [inline]

Return the 4D zero vector.

Definition at line 103 of file misc.h.

matrix< double, fixed<4,4>, row_basis, row_major > cml::zero_4x4 (  )  [inline]

Return the 4x4 zero matrix.

Definition at line 161 of file misc.h.

template<typename T >
T cml::zoom_to_fov ( zoom  )  [inline]

Convert zoom factor to field of view.

Definition at line 348 of file util.h.

References T().

Here is the call graph for this function:


Generated on Sat Jul 18 19:35:38 2009 for CML 1.0 by  doxygen 1.5.9