forked from 0ad/0ad
42 lines
2.0 KiB
C
42 lines
2.0 KiB
C
|
/** \file sr_euler.h
|
||
|
* euler angles tools */
|
||
|
|
||
|
# ifndef SR_EULER_H
|
||
|
# define SR_EULER_H
|
||
|
|
||
|
//================================ Angles from Mat ================================
|
||
|
|
||
|
class SrMat;
|
||
|
|
||
|
/*! Extract from the rotation matrix m the x,y,z Euler angles,
|
||
|
assuming they were encoded in m in the given order.
|
||
|
Parameter order should be: 123 for XYZ, 132 for XZY, etc.
|
||
|
The other sr_euler_angles* functions are similar, but specific to the desired order. */
|
||
|
void sr_euler_angles ( int order, const SrMat& m, float& rx, float& ry, float& rz );
|
||
|
|
||
|
void sr_euler_angles_xyz ( const SrMat& m, float& rx, float& ry, float& rz );
|
||
|
void sr_euler_angles_xzy ( const SrMat& m, float& rx, float& ry, float& rz );
|
||
|
void sr_euler_angles_yxz ( const SrMat& m, float& rx, float& ry, float& rz );
|
||
|
void sr_euler_angles_yzx ( const SrMat& m, float& rx, float& ry, float& rz );
|
||
|
void sr_euler_angles_zxy ( const SrMat& m, float& rx, float& ry, float& rz );
|
||
|
void sr_euler_angles_zyx ( const SrMat& m, float& rx, float& ry, float& rz );
|
||
|
|
||
|
//================================ Mat from Angles ================================
|
||
|
|
||
|
/*! Set the rotation matrix m according to the given x,y,z Euler angles.
|
||
|
Parameter order should be: 123 for XYZ, 132 for XZY, etc.
|
||
|
Note: the 4th line and column of m are not changed.
|
||
|
The other sr_euler_mat* functions are similar, but specific to the desired order. */
|
||
|
void sr_euler_mat ( int order, SrMat& m, float rx, float ry, float rz );
|
||
|
|
||
|
void sr_euler_mat_xyz ( SrMat& m, float rx, float ry, float rz );
|
||
|
void sr_euler_mat_xzy ( SrMat& m, float rx, float ry, float rz );
|
||
|
void sr_euler_mat_yxz ( SrMat& m, float rx, float ry, float rz );
|
||
|
void sr_euler_mat_yzx ( SrMat& m, float rx, float ry, float rz );
|
||
|
void sr_euler_mat_zxy ( SrMat& m, float rx, float ry, float rz );
|
||
|
void sr_euler_mat_zyx ( SrMat& m, float rx, float ry, float rz );
|
||
|
|
||
|
//============================== end of file ===============================
|
||
|
|
||
|
# endif // SR_EULER_H
|