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_t > | matrix_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 > | |
T | acos_safe (T theta) |
Wrap std::acos() and clamp argument to [-1, 1]. | |
template<typename T > | |
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 > | |
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 > | |
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 > | |
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 > | |
E | 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 > | |
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 > | |
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 > | |
T | length (T x, T y, T z) |
Length in R3. | |
template<typename T > | |
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 > | |
T | length_squared (T x, T y, T z) |
Squared length in R3. | |
template<typename T > | |
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 > | |
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 > | |
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 > | |
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 > | |
T | sqr (T value) |
Square a value. | |
template<typename T > | |
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 > | |
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 > | |
T | xfov_to_yfov (T xfov, T aspect) |
Convert horizontal field of view to vertical field of view. | |
template<typename T > | |
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 > | |
T | yfov_to_xfov (T yfov, T aspect) |
Convert vertical field of view to horizontal field of view. | |
template<typename T > | |
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 > | |
T | zoom_to_fov (T zoom) |
Convert zoom factor to field of view. |
typedef constants<double> cml::constantsd |
typedef constants<float> cml::constantsf |
typedef epsilon<double> cml::epsilond |
typedef epsilon<float> cml::epsilonf |
typedef matrix< double, fixed<2,2> > cml::matrix22d |
typedef matrix< double, fixed<2,2>, col_basis, col_major > cml::matrix22d_c |
typedef matrix< double, fixed<2,2>, row_basis, row_major > cml::matrix22d_r |
typedef matrix< float, fixed<2,2> > cml::matrix22f |
typedef matrix< float, fixed<2,2>, col_basis, col_major > cml::matrix22f_c |
typedef matrix< float, fixed<2,2>, row_basis, row_major > cml::matrix22f_r |
typedef matrix< int, fixed<2,2> > cml::matrix22i |
typedef matrix< int, fixed<2,2>, col_basis, col_major > cml::matrix22i_c |
typedef matrix< int, fixed<2,2>, row_basis, row_major > cml::matrix22i_r |
typedef matrix< double, fixed<2,3>, col_basis, col_major > cml::matrix23d_c |
typedef matrix< float, fixed<2,3>, col_basis, col_major > cml::matrix23f_c |
typedef matrix< int, fixed<2,3>, col_basis, col_major > cml::matrix23i_c |
typedef matrix< double, fixed<3,2>, row_basis, row_major > cml::matrix32d_r |
typedef matrix< float, fixed<3,2>, row_basis, row_major > cml::matrix32f_r |
typedef matrix< int, fixed<3,2>, row_basis, row_major > cml::matrix32i_r |
typedef matrix< double, fixed<3,3> > cml::matrix33d |
typedef matrix< double, fixed<3,3>, col_basis, col_major > cml::matrix33d_c |
typedef matrix< double, fixed<3,3>, row_basis, row_major > cml::matrix33d_r |
typedef matrix< float, fixed<3,3> > cml::matrix33f |
typedef matrix< float, fixed<3,3>, col_basis, col_major > cml::matrix33f_c |
typedef matrix< float, fixed<3,3>, row_basis, row_major > cml::matrix33f_r |
typedef matrix< int, fixed<3,3> > cml::matrix33i |
typedef matrix< int, fixed<3,3>, col_basis, col_major > cml::matrix33i_c |
typedef matrix< int, fixed<3,3>, row_basis, row_major > cml::matrix33i_r |
typedef matrix< double, fixed<3,4>, col_basis, col_major > cml::matrix34d_c |
typedef matrix< float, fixed<3,4>, col_basis, col_major > cml::matrix34f_c |
typedef matrix< int, fixed<3,4>, col_basis, col_major > cml::matrix34i_c |
typedef matrix< double, fixed<4,3>, row_basis, row_major > cml::matrix43d_r |
typedef matrix< float, fixed<4,3>, row_basis, row_major > cml::matrix43f_r |
typedef matrix< int, fixed<4,3>, row_basis, row_major > cml::matrix43i_r |
typedef matrix< double, fixed<4,4> > cml::matrix44d |
typedef matrix< double, fixed<4,4>, col_basis, col_major > cml::matrix44d_c |
typedef matrix< double, fixed<4,4>, row_basis, row_major > cml::matrix44d_r |
typedef matrix< float, fixed<4,4> > cml::matrix44f |
typedef matrix< float, fixed<4,4>, col_basis, col_major > cml::matrix44f_c |
typedef matrix< float, fixed<4,4>, row_basis, row_major > cml::matrix44f_r |
typedef matrix< int, fixed<4,4> > cml::matrix44i |
typedef matrix< int, fixed<4,4>, col_basis, col_major > cml::matrix44i_c |
typedef matrix< int, fixed<4,4>, row_basis, row_major > cml::matrix44i_r |
typedef std::pair<size_t,size_t> cml::matrix_size |
typedef matrix< double, dynamic<> > cml::matrixd |
typedef matrix< double, dynamic<>, col_basis, col_major > cml::matrixd_c |
typedef matrix< double, dynamic<>, row_basis, row_major > cml::matrixd_r |
typedef matrix< float, dynamic<> > cml::matrixf |
typedef matrix< float, dynamic<>, col_basis, col_major > cml::matrixf_c |
typedef matrix< float, dynamic<>, row_basis, row_major > cml::matrixf_r |
typedef matrix< int, dynamic<> > cml::matrixi |
typedef matrix< int, dynamic<>, col_basis, col_major > cml::matrixi_c |
typedef matrix< int, dynamic<>, row_basis, row_major > cml::matrixi_r |
typedef quaternion<double> cml::quaterniond |
typedef quaternion<double,fixed<>,vector_first,negative_cross> cml::quaterniond_n |
typedef quaternion<double,fixed<>,vector_first,positive_cross> cml::quaterniond_p |
typedef quaternion<float> cml::quaternionf |
typedef quaternion<float, fixed<>,vector_first,negative_cross> cml::quaternionf_n |
typedef quaternion<float, fixed<>,vector_first,positive_cross> cml::quaternionf_p |
typedef vector< double, fixed<2> > cml::vector2d |
typedef vector< float, fixed<2> > cml::vector2f |
typedef vector< int, fixed<2> > cml::vector2i |
typedef vector< double, fixed<3> > cml::vector3d |
typedef vector< float, fixed<3> > cml::vector3f |
typedef vector< int, fixed<3> > cml::vector3i |
typedef vector< double, fixed<4> > cml::vector4d |
typedef vector< float, fixed<4> > cml::vector4f |
typedef vector< int, fixed<4> > cml::vector4i |
typedef vector< double, dynamic<> > cml::vectord |
typedef vector< float, dynamic<> > cml::vectorf |
typedef vector< int, dynamic<> > cml::vectori |
enum cml::AxisOrder |
enum cml::AxisOrder2D |
enum cml::EulerOrder |
enum cml::Handedness |
enum cml::SphericalType |
enum cml::ZClip |
T cml::acos_safe | ( | T | theta | ) | [inline] |
Wrap std::acos() and clamp argument to [-1, 1].
Definition at line 56 of file util.h.
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().
T cml::asin_safe | ( | T | theta | ) | [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().
Return a 2D cardinal axis by index.
Definition at line 112 of file misc.h.
Referenced by x_axis_2D(), and y_axis_2D().
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().
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().
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().
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().
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().
T cml::clamp | ( | T | value, | |
T | min, | |||
T | 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().
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().
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()().
et::QuaternionXpr< et::ConjugateOp<XprT> > cml::conjugate | ( | QUATXPR_ARG_TYPE | arg | ) | [inline] |
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().
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().
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().
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().
T cml::cub | ( | T | value | ) | [inline] |
Cyclic permutation of the set { 0, 1 }, starting with 'first'.
Definition at line 111 of file util.h.
References next().
Referenced by cartesian_to_cylindrical(), cartesian_to_spherical(), cross_cardinal(), cylindrical_to_cartesian(), matrix_rotate_about_local_axis(), matrix_rotate_about_world_axis(), matrix_rotation_world_axis(), matrix_shear(), matrix_shear_2D(), matrix_to_axis_angle(), orthonormalize(), quaternion_get_basis_vector(), quaternion_rotate_about_local_axis(), quaternion_rotate_about_world_axis(), quaternion_rotation_matrix(), and spherical_to_cartesian().
void cml::cylindrical_to_cartesian | ( | E | radius, | |
E | theta, | |||
E | 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().
T cml::deg | ( | T | theta | ) | [inline] |
Convert radians to degrees.
Definition at line 137 of file util.h.
References cml::constants< Float >::deg_per_rad().
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().
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().
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().
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().
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().
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().
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] |
Definition at line 35 of file quaternion_dot.h.
References cml::detail::quaternion_dot().
Referenced by cml::et::BinaryVectorOp< LeftT, RightT, OpT >::length_squared(), cml::et::UnaryVectorOp< ExprT, OpT >::length_squared(), cml::et::BinaryQuaternionOp< LeftT, RightT, OpT >::length_squared(), cml::et::UnaryQuaternionOp< ExprT, OpT >::length_squared(), cml::quaternion< Element, ArrayType, Order, Cross >::length_squared(), cml::et::ConjugateOp< ExprT >::length_squared(), cml::et::QuaternionInverseOp< ExprT >::length_squared(), cml::vector< Element, fixed< Size > >::length_squared(), cml::vector< Element, external<> >::length_squared(), cml::vector< Element, external< Size > >::length_squared(), cml::vector< Element, dynamic< Alloc > >::length_squared(), matrix_get_view_translation(), matrix_invert_RT_only(), matrix_invert_RT_only_2D(), matrix_look_at(), cml::detail::nlerp(), orthonormalize(), project_to_hplane(), quaternion_rotation_vec_to_vec(), rotate_vector(), signed_angle(), signed_angle_2D(), cml::detail::slerp(), triple_product(), and unsigned_angle().
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().
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().
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().
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.
Definition at line 138 of file frustum.h.
References z_clip_neg_one.
Referenced by extract_frustum_planes().
T cml::fov_to_zoom | ( | T | fov | ) | [inline] |
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().
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().
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.
Definition at line 28 of file matrix_functions.h.
References cml::et::detail::Resize().
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().
void cml::identity_transform | ( | matrix< E, A, B, L > & | m | ) | [inline] |
Set a (possibly non-square) matrix to represent an identity transform.
Definition at line 24 of file matrix_misc.h.
Referenced by identity_transform(), matrix_3D_affine_from_2D_affine(), matrix_3D_affine_from_3D_affine(), matrix_affine_transform(), matrix_affine_transform_2D(), matrix_linear_transform(), matrix_linear_transform_2D(), matrix_look_at(), matrix_ortho_project(), matrix_ortho_project_2D(), matrix_orthographic(), matrix_perspective(), matrix_pick(), matrix_reflect(), matrix_reflect_2D(), matrix_rotation_2D(), matrix_rotation_align(), matrix_rotation_align_2D(), matrix_rotation_align_axial(), matrix_rotation_align_viewplane(), matrix_rotation_axis_angle(), matrix_rotation_euler(), matrix_rotation_euler_derivatives(), matrix_rotation_quaternion(), matrix_rotation_world_axis(), matrix_scale(), matrix_scale_2D(), matrix_shear(), matrix_shear_2D(), matrix_translation(), and matrix_translation_2D().
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().
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().
bool cml::in_range | ( | T | value, | |
T | min, | |||
T | max | |||
) | [inline] |
size_t cml::index_of_max | ( | T | a, | |
T | b, | |||
T | c | |||
) | [inline] |
size_t cml::index_of_max | ( | T | a, | |
T | 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().
size_t cml::index_of_max_abs | ( | T | a, | |
T | b, | |||
T | c | |||
) | [inline] |
Index of maximum of 3 values by magnitude.
Definition at line 295 of file util.h.
References index_of_max().
size_t cml::index_of_max_abs | ( | T | a, | |
T | b | |||
) | [inline] |
Index of maximum of 2 values by magnitude.
Definition at line 271 of file util.h.
References index_of_max().
size_t cml::index_of_min | ( | T | a, | |
T | b, | |||
T | c | |||
) | [inline] |
size_t cml::index_of_min | ( | T | a, | |
T | b | |||
) | [inline] |
Index of minimum of 2 values.
Definition at line 277 of file util.h.
Referenced by index_of_min_abs().
size_t cml::index_of_min_abs | ( | T | a, | |
T | b, | |||
T | c | |||
) | [inline] |
Index of minimum of 3 values by magnitude.
Definition at line 307 of file util.h.
References index_of_min().
size_t cml::index_of_min_abs | ( | T | a, | |
T | 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().
T cml::inv_sqrt | ( | T | value | ) | [inline] |
Inverse square root.
Definition at line 87 of file util.h.
References T().
Referenced by extract_frustum_planes().
et::QuaternionXpr< et::QuaternionInverseOp<XprT> > cml::inverse | ( | QUATXPR_ARG_TYPE | arg | ) | [inline] |
et::QuaternionXpr< et::QuaternionInverseOp< quaternion<E,AT,OrderT,CrossT> > > cml::inverse | ( | const quaternion< E, AT, OrderT, CrossT > & | arg | ) | [inline] |
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().
matrix<E,AT,BO,L>::temporary_type cml::inverse | ( | const matrix< E, AT, BO, L > & | M | ) | [inline] |
Inverse of a matrix.
Definition at line 423 of file inverse.h.
References cml::detail::inverse().
Referenced by cml::matrix< Element, fixed< Rows, Cols >, BasisOrient, Layout >::inverse(), cml::matrix< Element, external<-1,-1 >, BasisOrient, Layout >::inverse(), cml::matrix< Element, external< Rows, Cols >, BasisOrient, Layout >::inverse(), cml::matrix< Element, dynamic< Alloc >, BasisOrient, Layout >::inverse(), matrix_viewport(), and unproject_point().
XprT::value_type cml::length | ( | VECXPR_ARG_TYPE | arg | ) | [inline] |
vector<E,AT>::value_type cml::length | ( | const vector< E, AT > & | arg | ) | [inline] |
T cml::length | ( | T | x, | |
T | y, | |||
T | z | |||
) | [inline] |
Length in R3.
Definition at line 259 of file util.h.
References length_squared().
T cml::length | ( | T | x, | |
T | y | |||
) | [inline] |
Length in R2.
Definition at line 253 of file util.h.
References length_squared().
XprT::value_type cml::length | ( | QUATXPR_ARG_TYPE | arg | ) | [inline] |
quaternion<E,AT,OT,CT>::value_type cml::length | ( | const quaternion< E, AT, OT, CT > & | arg | ) | [inline] |
Length of a quaternion.
Definition at line 94 of file quaternion_functions.h.
References cml::quaternion< Element, ArrayType, Order, Cross >::length().
Referenced by cartesian_to_cylindrical(), cartesian_to_spherical(), matrix_to_axis_angle(), matrix_to_euler(), cml::vector< Element, fixed< Size > >::normalize(), cml::vector< Element, external<> >::normalize(), cml::vector< Element, external< Size > >::normalize(), cml::vector< Element, dynamic< Alloc > >::normalize(), quaternion_to_axis_angle(), signed_angle(), and unsigned_angle().
XprT::value_type cml::length_squared | ( | VECXPR_ARG_TYPE | arg | ) | [inline] |
vector<E,AT>::value_type cml::length_squared | ( | const vector< E, AT > & | arg | ) | [inline] |
T cml::length_squared | ( | T | x, | |
T | y, | |||
T | z | |||
) | [inline] |
T cml::length_squared | ( | T | x, | |
T | y | |||
) | [inline] |
XprT::value_type cml::length_squared | ( | QUATXPR_ARG_TYPE | arg | ) | [inline] |
quaternion<E,AT,OT,CT>::value_type cml::length_squared | ( | const quaternion< E, AT, OT, CT > & | arg | ) | [inline] |
Squared length of a quaternion.
Definition at line 78 of file quaternion_functions.h.
References cml::quaternion< Element, ArrayType, Order, Cross >::length_squared().
Referenced by length(), cml::vector< Element, fixed< Size > >::length(), cml::vector< Element, external<> >::length(), cml::vector< Element, external< Size > >::length(), and cml::vector< Element, dynamic< Alloc > >::length().
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.
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().
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().
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().
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()().
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().
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().
void cml::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 | |||
) | [inline] |
Definition at line 59 of file picking.h.
References cml::detail::depth_range_from_viewport_matrix(), normalize(), and unproject_point().
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().
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.
T cml::map_range | ( | T | value, | |
T | min1, | |||
T | max1, | |||
T | min2, | |||
T | max2 | |||
) | [inline] |
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().
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().
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().
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().
void cml::matrix_affine_transform | ( | matrix< E, A, B, L > & | m, | |
E | angle_0, | |||
E | angle_1, | |||
E | 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().
void cml::matrix_affine_transform | ( | matrix< E, A, B, L > & | m, | |
const VecT_1 & | axis, | |||
E | 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().
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().
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().
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().
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().
void cml::matrix_affine_transform_2D | ( | matrix< E, A, B, L > & | m, | |
E | 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().
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().
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().
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().
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().
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().
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().
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().
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().
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().
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().
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().
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().
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().
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().
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().
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().
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().
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().
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().
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().
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().
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().
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().
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().
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().
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().
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().
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().
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().
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().
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().
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().
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().
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().
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().
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().
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().
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().
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().
void cml::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 | |||
) | [inline] |
Build a matrix representing a 'look at' view transform.
Definition at line 576 of file matrix_transform.h.
References matrix_look_at().
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().
void cml::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 | |||
) | [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().
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().
void cml::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 | |||
) | [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.
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.
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().
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().
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().
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().
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().
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().
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().
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().
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().
void cml::matrix_orthogonalize_2x2 | ( | matrix< E, A, B, L > & | m, | |
size_t | stable_axis = 0 , |
|||
size_t | num_iter = 0 , |
|||
E | 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()().
void cml::matrix_orthogonalize_3x3 | ( | matrix< E, A, B, L > & | m, | |
size_t | stable_axis = 2 , |
|||
size_t | num_iter = 0 , |
|||
E | 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()().
void cml::matrix_orthographic | ( | matrix< E, A, B, L > & | m, | |
E | width, | |||
E | height, | |||
E | n, | |||
E | f, | |||
Handedness | handedness, | |||
ZClip | z_clip | |||
) | [inline] |
Build an orthographic projection matrix.
Definition at line 233 of file matrix_projection.h.
References matrix_orthographic().
void cml::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 | |||
) | [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().
void cml::matrix_orthographic_LH | ( | matrix< E, A, B, L > & | m, | |
E | width, | |||
E | height, | |||
E | n, | |||
E | 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().
void cml::matrix_orthographic_LH | ( | matrix< E, A, B, L > & | m, | |
E | left, | |||
E | right, | |||
E | bottom, | |||
E | top, | |||
E | n, | |||
E | 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().
void cml::matrix_orthographic_RH | ( | matrix< E, A, B, L > & | m, | |
E | width, | |||
E | height, | |||
E | n, | |||
E | 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.
void cml::matrix_orthographic_RH | ( | matrix< E, A, B, L > & | m, | |
E | left, | |||
E | right, | |||
E | bottom, | |||
E | top, | |||
E | n, | |||
E | 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.
void cml::matrix_perspective | ( | matrix< E, A, B, L > & | m, | |
E | width, | |||
E | height, | |||
E | n, | |||
E | 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().
void cml::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 | |||
) | [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().
void cml::matrix_perspective_LH | ( | matrix< E, A, B, L > & | m, | |
E | width, | |||
E | height, | |||
E | n, | |||
E | 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().
void cml::matrix_perspective_LH | ( | matrix< E, A, B, L > & | m, | |
E | left, | |||
E | right, | |||
E | bottom, | |||
E | top, | |||
E | n, | |||
E | 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().
void cml::matrix_perspective_RH | ( | matrix< E, A, B, L > & | m, | |
E | width, | |||
E | height, | |||
E | n, | |||
E | 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.
void cml::matrix_perspective_RH | ( | matrix< E, A, B, L > & | m, | |
E | left, | |||
E | right, | |||
E | bottom, | |||
E | top, | |||
E | n, | |||
E | 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.
void cml::matrix_perspective_xfov | ( | matrix< E, A, B, L > & | m, | |
E | xfov, | |||
E | aspect, | |||
E | n, | |||
E | 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().
void cml::matrix_perspective_xfov_LH | ( | matrix< E, A, B, L > & | m, | |
E | xfov, | |||
E | aspect, | |||
E | n, | |||
E | 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().
void cml::matrix_perspective_xfov_RH | ( | matrix< E, A, B, L > & | m, | |
E | xfov, | |||
E | aspect, | |||
E | n, | |||
E | 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.
void cml::matrix_perspective_yfov | ( | matrix< E, A, B, L > & | m, | |
E | yfov, | |||
E | aspect, | |||
E | n, | |||
E | 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().
void cml::matrix_perspective_yfov_LH | ( | matrix< E, A, B, L > & | m, | |
E | yfov, | |||
E | aspect, | |||
E | n, | |||
E | 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().
void cml::matrix_perspective_yfov_RH | ( | matrix< E, A, B, L > & | m, | |
E | yfov, | |||
E | aspect, | |||
E | n, | |||
E | 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.
void cml::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 | |||
) | [inline] |
Definition at line 321 of file matrix_projection.h.
References cml::detail::CheckMatHomogeneous3D(), and identity_transform().
Referenced by make_pick_volume().
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().
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().
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().
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().
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().
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().
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().
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().
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().
void cml::matrix_rotate_2D | ( | matrix< E, A, B, L > & | m, | |
E | angle | |||
) | [inline] |
Definition at line 632 of file matrix_rotation.h.
References cml::detail::CheckMatLinear2D().
void cml::matrix_rotate_about_local_axis | ( | matrix< E, A, B, L > & | m, | |
size_t | axis, | |||
E | 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().
void cml::matrix_rotate_about_local_x | ( | matrix< E, A, B, L > & | m, | |
E | 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().
void cml::matrix_rotate_about_local_y | ( | matrix< E, A, B, L > & | m, | |
E | 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().
void cml::matrix_rotate_about_local_z | ( | matrix< E, A, B, L > & | m, | |
E | 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().
void cml::matrix_rotate_about_world_axis | ( | matrix< E, A, B, L > & | m, | |
size_t | axis, | |||
E | 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().
void cml::matrix_rotate_about_world_x | ( | matrix< E, A, B, L > & | m, | |
E | 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().
void cml::matrix_rotate_about_world_y | ( | matrix< E, A, B, L > & | m, | |
E | 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().
void cml::matrix_rotate_about_world_z | ( | matrix< E, A, B, L > & | m, | |
E | 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().
void cml::matrix_rotation_2D | ( | matrix< E, A, B, L > & | m, | |
E | 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().
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().
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().
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().
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().
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().
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().
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().
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().
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().
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().
void cml::matrix_rotation_axis_angle | ( | matrix< E, A, B, L > & | m, | |
const VecT & | axis, | |||
E | 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().
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()().
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()().
void cml::matrix_rotation_euler | ( | matrix< E, A, B, L > & | m, | |
E | angle_0, | |||
E | angle_1, | |||
E | 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().
void cml::matrix_rotation_euler_derivatives | ( | matrix< E, A, B, L > & | m, | |
int | axis, | |||
E | angle_0, | |||
E | angle_1, | |||
E | 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().
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().
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().
void cml::matrix_rotation_world_axis | ( | matrix< E, A, B, L > & | m, | |
size_t | axis, | |||
E | 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().
void cml::matrix_rotation_world_x | ( | matrix< E, A, B, L > & | m, | |
E | 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().
void cml::matrix_rotation_world_y | ( | matrix< E, A, B, L > & | m, | |
E | 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().
void cml::matrix_rotation_world_z | ( | matrix< E, A, B, L > & | m, | |
E | 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().
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().
void cml::matrix_scale | ( | matrix< E, A, B, L > & | m, | |
E | scale_x, | |||
E | scale_y, | |||
E | 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().
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().
void cml::matrix_scale_2D | ( | matrix< E, A, B, L > & | m, | |
E | scale_x, | |||
E | 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().
void cml::matrix_scale_along_axis | ( | matrix< E, A, B, L > & | m, | |
const VecT & | axis, | |||
E | 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().
void cml::matrix_scale_along_axis_2D | ( | matrix< E, A, B, L > & | m, | |
const VecT & | axis, | |||
E | 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().
void cml::matrix_scale_rotation_angle | ( | matrix< E, A, B, L > & | m, | |
E | t, | |||
E | 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()().
void cml::matrix_scale_rotation_angle_2D | ( | matrix< E, A, B, L > & | m, | |
E | t, | |||
E | 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()().
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().
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().
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().
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().
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().
void cml::matrix_set_translation | ( | matrix< E, A, B, L > & | m, | |
E | x, | |||
E | 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().
void cml::matrix_set_translation | ( | matrix< E, A, B, L > & | m, | |
E | x, | |||
E | y, | |||
E | 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().
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().
void cml::matrix_set_translation_2D | ( | matrix< E, A, B, L > & | m, | |
E | x, | |||
E | 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().
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().
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().
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().
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().
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().
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().
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().
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().
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().
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().
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().
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().
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().
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().
void cml::matrix_shear | ( | matrix< E, A, B, L > & | m, | |
size_t | axis, | |||
E | shear_s, | |||
E | 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().
void cml::matrix_shear_2D | ( | matrix< E, A, B, L > & | m, | |
size_t | axis, | |||
E | 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().
void cml::matrix_shear_x | ( | matrix< E, A, B, L > & | m, | |
E | shear_s, | |||
E | 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().
void cml::matrix_shear_x_2D | ( | matrix< E, A, B, L > & | m, | |
E | 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().
void cml::matrix_shear_y | ( | matrix< E, A, B, L > & | m, | |
E | shear_s, | |||
E | 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().
void cml::matrix_shear_y_2D | ( | matrix< E, A, B, L > & | m, | |
E | 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().
void cml::matrix_shear_z | ( | matrix< E, A, B, L > & | m, | |
E | shear_s, | |||
E | 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().
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().
void cml::matrix_skew_symmetric_2D | ( | matrix< E, A, B, L > & | m, | |
E | s | |||
) | [inline] |
2D skew-symmetric matrix
Definition at line 92 of file matrix_misc.h.
References cml::detail::CheckMatMin2x2().
MAT_TEMP_3X3 cml::matrix_slerp | ( | const MatT_1 & | m1, | |
const MatT_2 & | m2, | |||
E | t, | |||
E | 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().
MAT_TEMP_2X2 cml::matrix_slerp_2D | ( | const MatT_1 & | m1, | |
const MatT_2 & | m2, | |||
E | t, | |||
E | 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().
void cml::matrix_to_axis_angle | ( | const MatT & | m, | |
vector< E, A > & | axis, | |||
E & | angle, | |||
E | 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().
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().
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().
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().
void cml::matrix_translation | ( | matrix< E, A, B, L > & | m, | |
E | x, | |||
E | 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().
void cml::matrix_translation | ( | matrix< E, A, B, L > & | m, | |
E | x, | |||
E | y, | |||
E | 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().
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().
void cml::matrix_translation_2D | ( | matrix< E, A, B, L > & | m, | |
E | x, | |||
E | 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().
void cml::matrix_uniform_scale | ( | matrix< E, A, B, L > & | m, | |
E | scale | |||
) | [inline] |
Build a matrix representing a uniform 3D scale.
Definition at line 80 of file matrix_transform.h.
References matrix_scale().
void cml::matrix_uniform_scale_2D | ( | matrix< E, A, B, L > & | m, | |
E | scale | |||
) | [inline] |
Build a matrix representing a uniform 2D scale.
Definition at line 114 of file matrix_transform.h.
References matrix_scale_2D().
void cml::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) | |||
) | [inline] |
Definition at line 296 of file matrix_projection.h.
References inverse(), and matrix_orthographic_LH().
Return next, with cycling, in a series of N non-negative integers.
Definition at line 101 of file util.h.
Referenced by cyclic_permutation().
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().
XprT::value_type cml::norm | ( | QUATXPR_ARG_TYPE | arg | ) | [inline] |
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().
XprT::result_type cml::normalize | ( | VECXPR_ARG_TYPE | arg | ) | [inline] |
vector<E, AT> cml::normalize | ( | const vector< E, AT > & | arg | ) | [inline] |
XprT::temporary_type cml::normalize | ( | QUATXPR_ARG_TYPE | arg | ) | [inline] |
quaternion<E,AT,OT,CT> cml::normalize | ( | const quaternion< E, AT, OT, CT > & | arg | ) | [inline] |
Normalize a quaternion.
The input quaternion is not changed.
Definition at line 113 of file quaternion_functions.h.
References cml::quaternion< Element, ArrayType, Order, Cross >::normalize().
Referenced by extract_frustum_planes(), make_pick_drag_volume(), make_pick_ray(), make_pick_volume(), matrix_look_at(), matrix_rotation_align(), matrix_rotation_align_2D(), matrix_rotation_align_axial(), cml::detail::nlerp(), orthonormal_basis(), orthonormal_basis_2D(), orthonormalize(), quaternion_rotation_align(), quaternion_rotation_align_axial(), cml::detail::slerp(), and unit_cross().
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().
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().
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().
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().
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().
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().
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().
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().
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().
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().
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().
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().
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().
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().
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().
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().
std::ostream& cml::operator<< | ( | std::ostream & | os, | |
const et::VectorXpr< XprT > & | v | |||
) | [inline] |
std::ostream& cml::operator<< | ( | std::ostream & | os, | |
const vector< E, AT > & | v | |||
) | [inline] |
std::ostream& cml::operator<< | ( | std::ostream & | os, | |
const et::QuaternionXpr< XprT > & | q | |||
) | [inline] |
std::ostream& cml::operator<< | ( | std::ostream & | os, | |
const cml::quaternion< E, AT, OT, CT > & | q | |||
) | [inline] |
std::ostream& cml::operator<< | ( | std::ostream & | os, | |
const et::MatrixXpr< XprT > & | m | |||
) | [inline] |
std::ostream& cml::operator<< | ( | std::ostream & | os, | |
const matrix< E, AT, BO, L > & | m | |||
) | [inline] |
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().
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.
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().
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().
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.
Definition at line 235 of file vector_ortho.h.
References orthonormal_basis(), and cml::detail::swap_axis_order().
Referenced by matrix_rotation_align_axial().
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.
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().
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().
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.
void cml::orthonormalize | ( | vector< E, A > & | v0, | |
vector< E, A > & | v1, | |||
size_t | stable_axis = 0 , |
|||
size_t | num_iter = 0 , |
|||
E | 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().
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 , |
|||
E | 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().
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().
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().
detail::DotPromote<LeftT,RightT>::promoted_scalar cml::perp_dot | ( | const LeftT & | left, | |
const RightT & | right | |||
) | [inline] |
Definition at line 239 of file vector_products.h.
References CML_STATIC_REQUIRE_M, and cml::detail::Require2D().
Referenced by signed_angle_2D().
void cml::polar_to_cartesian | ( | E | radius, | |
E | theta, | |||
vector< E, A > & | v | |||
) | [inline] |
Definition at line 88 of file coord_conversion.h.
Referenced by random_unit().
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().
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().
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().
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().
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().
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().
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().
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().
void cml::quaternion_rotate_about_local_axis | ( | quaternion< E, A, O, C > & | q, | |
size_t | axis, | |||
E | 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().
void cml::quaternion_rotate_about_local_x | ( | quaternion< E, A, O, C > & | q, | |
E | angle | |||
) | [inline] |
Definition at line 460 of file quaternion_rotation.h.
References quaternion_rotate_about_local_axis().
void cml::quaternion_rotate_about_local_y | ( | quaternion< E, A, O, C > & | q, | |
E | angle | |||
) | [inline] |
Definition at line 466 of file quaternion_rotation.h.
References quaternion_rotate_about_local_axis().
void cml::quaternion_rotate_about_local_z | ( | quaternion< E, A, O, C > & | q, | |
E | angle | |||
) | [inline] |
Definition at line 472 of file quaternion_rotation.h.
References quaternion_rotate_about_local_axis().
void cml::quaternion_rotate_about_world_axis | ( | quaternion< E, A, O, C > & | q, | |
size_t | axis, | |||
E | 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().
void cml::quaternion_rotate_about_world_x | ( | quaternion< E, A, O, C > & | q, | |
E | angle | |||
) | [inline] |
Definition at line 407 of file quaternion_rotation.h.
References quaternion_rotate_about_world_axis().
void cml::quaternion_rotate_about_world_y | ( | quaternion< E, A, O, C > & | q, | |
E | angle | |||
) | [inline] |
Definition at line 413 of file quaternion_rotation.h.
References quaternion_rotate_about_world_axis().
void cml::quaternion_rotate_about_world_z | ( | quaternion< E, A, O, C > & | q, | |
E | angle | |||
) | [inline] |
Definition at line 419 of file quaternion_rotation.h.
References quaternion_rotate_about_world_axis().
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().
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().
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().
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().
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().
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().
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().
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().
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().
void cml::quaternion_rotation_axis_angle | ( | quaternion< E, A, O, C > & | q, | |
const VecT & | axis, | |||
E | 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().
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().
void cml::quaternion_rotation_euler | ( | quaternion< E, A, O, C > & | q, | |
E | angle_0, | |||
E | angle_1, | |||
E | 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().
void cml::quaternion_rotation_matrix | ( | quaternion< E, A, O, C > & | q, | |
const MatT & | m | |||
) | [inline] |
Build a quaternion from a rotation matrix.
Definition at line 120 of file quaternion_rotation.h.
References cml::detail::CheckMatLinear3D(), cyclic_permutation(), index_of_max(), and trace_3x3().
Referenced by matrix_decompose_SRT(), quaternion_rotation_aim_at(), quaternion_rotation_aim_at_axial(), quaternion_rotation_align(), quaternion_rotation_align_axial(), quaternion_rotation_align_viewplane(), quaternion_rotation_align_viewplane_LH(), and quaternion_rotation_align_viewplane_RH().
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().
void cml::quaternion_rotation_world_axis | ( | quaternion< E, A, O, C > & | q, | |
size_t | axis, | |||
E | 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().
void cml::quaternion_rotation_world_x | ( | quaternion< E, A, O, C > & | q, | |
E | 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().
void cml::quaternion_rotation_world_y | ( | quaternion< E, A, O, C > & | q, | |
E | 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().
void cml::quaternion_rotation_world_z | ( | quaternion< E, A, O, C > & | q, | |
E | 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().
void cml::quaternion_scale_angle | ( | quaternion< E, A, O, C > & | q, | |
E | t, | |||
E | 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().
void cml::quaternion_to_axis_angle | ( | const QuatT & | q, | |
vector< E, A > & | axis, | |||
E & | angle, | |||
E | 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().
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().
T cml::rad | ( | T | theta | ) | [inline] |
Convert degrees to radians.
Definition at line 143 of file util.h.
References cml::constants< Float >::rad_per_deg().
size_t cml::random_binary | ( | ) | [inline] |
Random binary (0,1) value.
Definition at line 214 of file util.h.
Referenced by random_polar().
int cml::random_polar | ( | ) | [inline] |
Random polar (-1,1) value.
Definition at line 219 of file util.h.
References random_binary().
T cml::random_real | ( | T | min, | |
T | max | |||
) | [inline] |
Definition at line 235 of file util.h.
References random_unit().
Referenced by cml::quaternion< Element, ArrayType, Order, Cross >::random(), cml::vector< Element, fixed< Size > >::random(), cml::matrix< Element, fixed< Rows, Cols >, BasisOrient, Layout >::random(), cml::vector< Element, external<> >::random(), cml::vector< Element, external< Size > >::random(), cml::matrix< Element, external<-1,-1 >, BasisOrient, Layout >::random(), cml::matrix< Element, external< Rows, Cols >, BasisOrient, Layout >::random(), cml::vector< Element, dynamic< Alloc > >::random(), cml::matrix< Element, dynamic< Alloc >, BasisOrient, Layout >::random(), and random_unit().
void cml::random_unit | ( | vector< E, A > & | v, | |
const VecT & | axis, | |||
E | 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().
void cml::random_unit | ( | vector< E, A > & | v | ) | [inline] |
Random unit 3D or 2D vector.
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().
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().
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().
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().
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().
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().
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()().
double cml::sign | ( | T | value | ) | [inline] |
Sign of input value as double.
Definition at line 31 of file util.h.
References T().
Referenced by matrix_to_euler().
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().
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().
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().
void cml::spherical_to_cartesian | ( | E | radius, | |
E | theta, | |||
E | 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().
T cml::sqr | ( | T | value | ) | [inline] |
T cml::sqrt_safe | ( | T | value | ) | [inline] |
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().
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().
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().
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().
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().
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.
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.
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.
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.
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().
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().
et::MatrixTransposeOp< matrix<E,AT,BO,L>>::temporary_type cml::transpose | ( | const matrix< E, AT, BO, L > & | expr | ) | [inline] |
Matrix transpose operator taking a matrix operand.
Definition at line 168 of file matrix_transpose.h.
References cml::et::detail::Resize().
Referenced by matrix_rotation_difference(), matrix_rotation_difference_2D(), T(), cml::matrix< Element, fixed< Rows, Cols >, BasisOrient, Layout >::transpose(), cml::matrix< Element, external<-1,-1 >, BasisOrient, Layout >::transpose(), cml::matrix< Element, external< Rows, Cols >, BasisOrient, Layout >::transpose(), and cml::matrix< Element, dynamic< Alloc >, BasisOrient, Layout >::transpose().
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.
Definition at line 1074 of file interpolation.h.
References cml::detail::InterpResize().
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().
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().
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().
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().
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().
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().
T cml::wrap | ( | T | value, | |
T | min, | |||
T | max | |||
) | [inline] |
vector< double, fixed<2> > cml::x_axis_2D | ( | ) | [inline] |
vector< double, fixed<3> > cml::x_axis_3D | ( | ) | [inline] |
T cml::xfov_to_yfov | ( | T | xfov, | |
T | aspect | |||
) | [inline] |
T cml::xzoom_to_yzoom | ( | T | xzoom, | |
T | aspect | |||
) | [inline] |
vector< double, fixed<2> > cml::y_axis_2D | ( | ) | [inline] |
vector< double, fixed<3> > cml::y_axis_3D | ( | ) | [inline] |
T cml::yfov_to_xfov | ( | T | yfov, | |
T | aspect | |||
) | [inline] |
T cml::yzoom_to_xzoom | ( | T | yzoom, | |
T | aspect | |||
) | [inline] |
vector< double, fixed<3> > cml::z_axis_3D | ( | ) | [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().
vector< double, fixed<2> > cml::zero_2D | ( | ) | [inline] |
vector< double, fixed<3> > cml::zero_3D | ( | ) | [inline] |
vector< double, fixed<4> > cml::zero_4D | ( | ) | [inline] |
T cml::zoom_to_fov | ( | T | zoom | ) | [inline] |