Clutter Engine 0.0.1
Loading...
Searching...
No Matches
quaternion_transform.inl
1namespace glm
2{
3 template<typename T, qualifier Q>
4 GLM_FUNC_QUALIFIER qua<T, Q> rotate(qua<T, Q> const& q, T const& angle, vec<3, T, Q> const& v)
5 {
6 vec<3, T, Q> Tmp = v;
7
8 // Axis of rotation must be normalised
9 T len = glm::length(Tmp);
10 if(abs(len - static_cast<T>(1)) > static_cast<T>(0.001))
11 {
12 T oneOverLen = static_cast<T>(1) / len;
13 Tmp.x *= oneOverLen;
14 Tmp.y *= oneOverLen;
15 Tmp.z *= oneOverLen;
16 }
17
18 T const AngleRad(angle);
19 T const Sin = sin(AngleRad * static_cast<T>(0.5));
20
21 return q * qua<T, Q>(cos(AngleRad * static_cast<T>(0.5)), Tmp.x * Sin, Tmp.y * Sin, Tmp.z * Sin);
22 }
23}//namespace glm
24
GLM_FUNC_DECL GLM_CONSTEXPR genType abs(genType x)
GLM_FUNC_QUALIFIER vec< L, T, Q > sin(vec< L, T, Q > const &v)
Definition func_trigonometric.inl:41
GLM_FUNC_QUALIFIER vec< L, T, Q > cos(vec< L, T, Q > const &v)
Definition func_trigonometric.inl:50
GLM_FUNC_DECL mat< 4, 4, T, Q > rotate(mat< 4, 4, T, Q > const &m, T angle, vec< 3, T, Q > const &axis)
Definition matrix_transform.inl:18
GLM_FUNC_DECL T angle(qua< T, Q > const &x)
Definition quaternion_trigonometric.inl:6
Core features
Definition common.hpp:21
Definition type_quat.hpp:20
Definition qualifier.hpp:35