5 template<
typename T, qualifier Q>
9 T
const Angle = glm::length(u);
17 template<
typename T, qualifier Q>
21 T Vec3Len = length(u);
25 if(q.w >
static_cast<T
>(0))
26 return qua<T, Q>(
log(q.w),
static_cast<T
>(0),
static_cast<T
>(0),
static_cast<T
>(0));
27 else if(q.w <
static_cast<T
>(0))
30 return qua<T, Q>(std::numeric_limits<T>::infinity(), std::numeric_limits<T>::infinity(), std::numeric_limits<T>::infinity(), std::numeric_limits<T>::infinity());
34 T t = atan(Vec3Len, T(q.w)) / Vec3Len;
35 T QuatLen2 = Vec3Len * Vec3Len + q.w * q.w;
36 return qua<T, Q>(
static_cast<T
>(0.5) *
log(QuatLen2), t * q.x, t * q.y, t * q.z);
40 template<
typename T, qualifier Q>
49 T magnitude =
sqrt(x.x * x.x + x.y * x.y + x.z * x.z + x.w *x.w);
58 T VectorMagnitude = x.x * x.x + x.y * x.y + x.z * x.z;
64 Angle =
asin(
sqrt(VectorMagnitude) / magnitude);
69 Angle =
acos(x.w / magnitude);
72 T NewAngle = Angle * y;
73 T Div =
sin(NewAngle) /
sin(Angle);
74 T Mag =
pow(magnitude, y -
static_cast<T
>(1));
75 return qua<T, Q>(
cos(NewAngle) * magnitude * Mag, x.x * Div * Mag, x.y * Div * Mag, x.z * Div * Mag);
78 template<
typename T, qualifier Q>
81 return pow(x,
static_cast<T
>(0.5));
GLM_FUNC_DECL GLM_CONSTEXPR genType abs(genType x)
GLM_FUNC_QUALIFIER vec< L, T, Q > sqrt(vec< L, T, Q > const &x)
Definition func_exponential.inl:128
GLM_FUNC_QUALIFIER vec< L, T, Q > pow(vec< L, T, Q > const &base, vec< L, T, Q > const &exponent)
Definition func_exponential.inl:72
GLM_FUNC_QUALIFIER vec< L, T, Q > log(vec< L, T, Q > const &x)
Definition func_exponential.inl:88
GLM_FUNC_QUALIFIER vec< L, T, Q > exp(vec< L, T, Q > const &x)
Definition func_exponential.inl:80
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_QUALIFIER vec< L, T, Q > asin(vec< L, T, Q > const &v)
Definition func_trigonometric.inl:68
GLM_FUNC_QUALIFIER vec< L, T, Q > acos(vec< L, T, Q > const &v)
Definition func_trigonometric.inl:77
GLM_FUNC_DECL GLM_CONSTEXPR genType epsilon()
Return the epsilon constant for floating point types.
Definition scalar_constants.inl:6
GLM_FUNC_DECL GLM_CONSTEXPR genType pi()
Return the pi constant for floating point types.
Definition scalar_constants.inl:13
GLM_FUNC_DECL GLM_CONSTEXPR genType cos_one_over_two()
Return the value of cos(1 / 2) for floating point types.
Definition scalar_constants.inl:20
Core features
Definition common.hpp:21
Definition type_quat.hpp:20
Definition qualifier.hpp:35