33 angles =
math::clamp(angles, m_min_angles, m_max_angles);
39 q.w() = std::copysign(q.w(), old_w);
void solve(math::fquat &q) override
Solves the constraint.
vec3< T > euler_from_quat(const quat< T > &q, T tolerance=T{1e-6})
Derives Euler angles from a unit quaternion.
quat< T > euler_to_quat(const vec3< T > &angles)
Constructs a quaternion from Euler angles.
constexpr vector< T, N > clamp(const vector< T, N > &x, const vector< T, N > &min, const vector< T, N > &max)
Clamps the values of a vector's elements.
Quaternion composed of a real scalar part and imaginary vector part.