first commit
This commit is contained in:
152
include/cglm/struct/euler.h
Normal file
152
include/cglm/struct/euler.h
Normal file
@ -0,0 +1,152 @@
|
||||
/*
|
||||
* Copyright (c), Recep Aslantas.
|
||||
*
|
||||
* MIT License (MIT), http://opensource.org/licenses/MIT
|
||||
* Full license can be found in the LICENSE file
|
||||
*/
|
||||
|
||||
/*
|
||||
NOTE:
|
||||
angles must be passed as [X-Angle, Y-Angle, Z-angle] order
|
||||
For instance you don't pass angles as [Z-Angle, X-Angle, Y-angle] to
|
||||
glm_euler_zxy funciton, All RELATED functions accept angles same order
|
||||
which is [X, Y, Z].
|
||||
*/
|
||||
|
||||
/*
|
||||
Types:
|
||||
enum glm_euler_seq
|
||||
|
||||
Functions:
|
||||
CGLM_INLINE vec3s glms_euler_angles(mat4s m)
|
||||
CGLM_INLINE mat4s glms_euler_xyz(vec3s angles)
|
||||
CGLM_INLINE mat4s glms_euler_xzy(vec3s angles)
|
||||
CGLM_INLINE mat4s glms_euler_yxz(vec3s angles)
|
||||
CGLM_INLINE mat4s glms_euler_yzx(vec3s angles)
|
||||
CGLM_INLINE mat4s glms_euler_zxy(vec3s angles)
|
||||
CGLM_INLINE mat4s glms_euler_zyx(vec3s angles)
|
||||
CGLM_INLINE mat4s glms_euler_by_order(vec3s angles, glm_euler_seq ord)
|
||||
*/
|
||||
|
||||
#ifndef cglms_euler_h
|
||||
#define cglms_euler_h
|
||||
|
||||
#include "../common.h"
|
||||
#include "../types-struct.h"
|
||||
#include "../euler.h"
|
||||
|
||||
/*!
|
||||
* @brief extract euler angles (in radians) using xyz order
|
||||
*
|
||||
* @param[in] m affine transform
|
||||
* @returns angles vector [x, y, z]
|
||||
*/
|
||||
CGLM_INLINE
|
||||
vec3s
|
||||
glms_euler_angles(mat4s m) {
|
||||
vec3s dest;
|
||||
glm_euler_angles(m.raw, dest.raw);
|
||||
return dest;
|
||||
}
|
||||
|
||||
/*!
|
||||
* @brief build rotation matrix from euler angles
|
||||
*
|
||||
* @param[in] angles angles as vector [Xangle, Yangle, Zangle]
|
||||
* @returns rotation matrix
|
||||
*/
|
||||
CGLM_INLINE
|
||||
mat4s
|
||||
glms_euler_xyz(vec3s angles) {
|
||||
mat4s dest;
|
||||
glm_euler_xyz(angles.raw, dest.raw);
|
||||
return dest;
|
||||
}
|
||||
|
||||
/*!
|
||||
* @brief build rotation matrix from euler angles
|
||||
*
|
||||
* @param[in] angles angles as vector [Xangle, Yangle, Zangle]
|
||||
* @returns rotation matrix
|
||||
*/
|
||||
CGLM_INLINE
|
||||
mat4s
|
||||
glms_euler_xzy(vec3s angles) {
|
||||
mat4s dest;
|
||||
glm_euler_xzy(angles.raw, dest.raw);
|
||||
return dest;
|
||||
}
|
||||
|
||||
|
||||
/*!
|
||||
* @brief build rotation matrix from euler angles
|
||||
*
|
||||
* @param[in] angles angles as vector [Xangle, Yangle, Zangle]
|
||||
* @returns rotation matrix
|
||||
*/
|
||||
CGLM_INLINE
|
||||
mat4s
|
||||
glms_euler_yxz(vec3s angles) {
|
||||
mat4s dest;
|
||||
glm_euler_yxz(angles.raw, dest.raw);
|
||||
return dest;
|
||||
}
|
||||
|
||||
/*!
|
||||
* @brief build rotation matrix from euler angles
|
||||
*
|
||||
* @param[in] angles angles as vector [Xangle, Yangle, Zangle]
|
||||
* @returns rotation matrix
|
||||
*/
|
||||
CGLM_INLINE
|
||||
mat4s
|
||||
glms_euler_yzx(vec3s angles) {
|
||||
mat4s dest;
|
||||
glm_euler_yzx(angles.raw, dest.raw);
|
||||
return dest;
|
||||
}
|
||||
|
||||
/*!
|
||||
* @brief build rotation matrix from euler angles
|
||||
*
|
||||
* @param[in] angles angles as vector [Xangle, Yangle, Zangle]
|
||||
* @returns rotation matrix
|
||||
*/
|
||||
CGLM_INLINE
|
||||
mat4s
|
||||
glms_euler_zxy(vec3s angles) {
|
||||
mat4s dest;
|
||||
glm_euler_zxy(angles.raw, dest.raw);
|
||||
return dest;
|
||||
}
|
||||
|
||||
/*!
|
||||
* @brief build rotation matrix from euler angles
|
||||
*
|
||||
* @param[in] angles angles as vector [Xangle, Yangle, Zangle]
|
||||
* @returns rotation matrix
|
||||
*/
|
||||
CGLM_INLINE
|
||||
mat4s
|
||||
glms_euler_zyx(vec3s angles) {
|
||||
mat4s dest;
|
||||
glm_euler_zyx(angles.raw, dest.raw);
|
||||
return dest;
|
||||
}
|
||||
|
||||
/*!
|
||||
* @brief build rotation matrix from euler angles
|
||||
*
|
||||
* @param[in] angles angles as vector [Xangle, Yangle, Zangle]
|
||||
* @param[in] ord euler order
|
||||
* @returns rotation matrix
|
||||
*/
|
||||
CGLM_INLINE
|
||||
mat4s
|
||||
glms_euler_by_order(vec3s angles, glm_euler_seq ord) {
|
||||
mat4s dest;
|
||||
glm_euler_by_order(angles.raw, ord, dest.raw);
|
||||
return dest;
|
||||
}
|
||||
|
||||
#endif /* cglms_euler_h */
|
Reference in New Issue
Block a user