#include <cml/mathlib/matrix_misc.h>
#include <cml/mathlib/vector_ortho.h>
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. |
Definition in file matrix_rotation.h.
#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 \ >
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 \ >
Definition at line 724 of file matrix_rotation.h.
Referenced by cml::matrix_slerp().