matrix_rotation.h File Reference

#include <cml/mathlib/matrix_misc.h>
#include <cml/mathlib/vector_ortho.h>

Include dependency graph for matrix_rotation.h:

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

namespace  cml
namespace  cml::detail

Defines

#define MAT_TEMP_2X2
 A fixed-size temporary 2x2 matrix.
#define MAT_TEMP_3X3
 A fixed-size temporary 3x3 matrix.

Functions

template<class MatT_1 , class MatT_2 >
MAT_TEMP_3X3 cml::detail::matrix_concat_rotations (const MatT_1 &m1, const MatT_2 &m2)
 Concatenate two 3D rotation matrices in the order m1->m2.
template<class MatT_1 , class MatT_2 >
MAT_TEMP_3X3 cml::detail::matrix_concat_rotations (const MatT_1 &m1, const MatT_2 &m2, col_basis)
 Concatenate two 3D col-basis rotation matrices in the order m1->m2.
template<class MatT_1 , class MatT_2 >
MAT_TEMP_3X3 cml::detail::matrix_concat_rotations (const MatT_1 &m1, const MatT_2 &m2, row_basis)
 Concatenate two 3D row-basis rotation matrices in the order m1->m2.
template<class MatT_1 , class MatT_2 >
MAT_TEMP_2X2 cml::detail::matrix_concat_rotations_2D (const MatT_1 &m1, const MatT_2 &m2)
 Concatenate two 2D rotation matrices in the order m1->m2.
template<class MatT_1 , class MatT_2 >
MAT_TEMP_2X2 cml::detail::matrix_concat_rotations_2D (const MatT_1 &m1, const MatT_2 &m2, col_basis)
 Concatenate two 2D col-basis rotation matrices in the order m1->m2.
template<class MatT_1 , class MatT_2 >
MAT_TEMP_2X2 cml::detail::matrix_concat_rotations_2D (const MatT_1 &m1, const MatT_2 &m2, row_basis)
 Concatenate two 2D row-basis rotation matrices in the order m1->m2.
template<typename E , class A , class B , class L >
void cml::matrix_rotate_2D (matrix< E, A, B, L > &m, E angle)
template<typename E , class A , class B , class L >
void cml::matrix_rotate_about_local_axis (matrix< E, A, B, L > &m, size_t axis, E angle)
 Rotate a rotation matrix about the given local axis.
template<typename E , class A , class B , class L >
void cml::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 cml::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 cml::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 cml::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 cml::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 cml::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 cml::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 cml::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 cml::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 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)
 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 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)
 See vector_ortho.h for details.
template<typename E , class A , class B , class L , class VecT >
void cml::matrix_rotation_align (matrix< E, A, B, L > &m, const VecT &align, bool normalize=true, AxisOrder order=axis_order_zyx)
 See vector_ortho.h for details.
template<typename E , class A , class B , class L , class VecT_1 , class VecT_2 >
void cml::matrix_rotation_align (matrix< E, A, B, L > &m, const VecT_1 &align, const VecT_2 &reference, bool normalize=true, AxisOrder order=axis_order_zyx)
 See vector_ortho.h for details.
template<typename E , class A , class B , class L , class VecT >
void cml::matrix_rotation_align_2D (matrix< E, A, B, L > &m, const VecT &align, bool normalize=true, AxisOrder2D order=axis_order_xy)
 See vector_ortho.h for details.
template<typename E , class A , class B , class L , class VecT_1 , class VecT_2 >
void cml::matrix_rotation_align_axial (matrix< E, A, B, L > &m, const VecT_1 &align, const VecT_2 &axis, bool normalize=true, AxisOrder order=axis_order_zyx)
 See vector_ortho.h for details.
template<typename E , class A , class B , class L , class MatT >
void cml::matrix_rotation_align_viewplane (matrix< E, A, B, L > &m, const MatT &view_matrix, Handedness handedness, AxisOrder order=axis_order_zyx)
 See vector_ortho.h for details.
template<typename E , class A , class B , class L , class MatT >
void cml::matrix_rotation_align_viewplane_LH (matrix< E, A, B, L > &m, const MatT &view_matrix, AxisOrder order=axis_order_zyx)
 See vector_ortho.h for details.
template<typename E , class A , class B , class L , class MatT >
void cml::matrix_rotation_align_viewplane_RH (matrix< E, A, B, L > &m, const MatT &view_matrix, AxisOrder order=axis_order_zyx)
 See vector_ortho.h for details.
template<typename E , class A , class B , class L , class VecT >
void cml::matrix_rotation_axis_angle (matrix< E, A, B, L > &m, const VecT &axis, E angle)
 Build a rotation matrix from an axis-angle pair.
template<class MatT_1 , class MatT_2 >
MAT_TEMP_3X3 cml::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 cml::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 cml::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 cml::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 cml::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 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)
 Build a rotation matrix to rotate from one vector to another.
template<typename E , class A , class B , class L >
void cml::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 cml::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 cml::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 cml::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 >
void cml::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 cml::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<class MatT_1 , class MatT_2 , typename E >
MAT_TEMP_3X3 cml::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 cml::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 cml::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 cml::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 cml::matrix_to_rotation_2D (const MatT &m)
 Convert a 2D rotation matrix to a rotation angle.


Detailed Description

Definition in file matrix_rotation.h.


Define Documentation

#define MAT_TEMP_2X2

Value:

matrix<         \
    typename et::ScalarPromote<      \
        typename MatT_1::value_type, \
        typename MatT_2::value_type  \
    >::type,                         \
    fixed<2,2>,                      \
    typename MatT_1::basis_orient,   \
    row_major                        \
>
A fixed-size temporary 2x2 matrix.

Definition at line 735 of file matrix_rotation.h.

Referenced by cml::matrix_slerp_2D().

#define MAT_TEMP_3X3

Value:

matrix<         \
    typename et::ScalarPromote<      \
        typename MatT_1::value_type, \
        typename MatT_2::value_type  \
    >::type,                         \
    fixed<3,3>,                      \
    typename MatT_1::basis_orient,   \
    row_major                        \
>
A fixed-size temporary 3x3 matrix.

Definition at line 724 of file matrix_rotation.h.

Referenced by cml::matrix_slerp().


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