20 template<std::
floating_po
int T>
27 requires std::is_arithmetic_v<T>
34 requires std::is_arithmetic_v<T>
37 return (a.
w*b.
w + a.
x*b.
x) + (a.
y*b.
y + a.
z*b.
z);
41 requires std::is_arithmetic_v<T>
54 template<std::
floating_po
int T>
59 if (
len <=
static_cast<T>(0)) {
166 std::floating_point
T,
167 AngularUnitTraits
Units,
168 std::convertible_to<const Vector<T, 3>&>
VectorLike
177 std::floating_point
T,
178 AngularUnitTraits
Units
215 const T invs =
static_cast<T>(1) / s;
218 s *
static_cast<T>(0.5f),
228 const T y =
static_cast<T>(2) * (q.
y * q.
z + q.
w * q.
x);
229 const T x = q.
w * q.
w - q.
x * q.
x - q.
y * q.
y + q.
z * q.
z;
233 return static_cast<T>(2) *
atan2(q.
x, q.
w);
242 return asin(
clamp(
static_cast<T>(-2) * (q.
x * q.
z - q.
w * q.
y),
static_cast<T>(-1),
static_cast<T>(1)));
248 const T y =
static_cast<T>(2) * (q.
x * q.
y + q.
w * q.
z);
249 const T x = q.
w * q.
w + q.
x * q.
x - q.
y * q.
y - q.
z * q.
z;
Definition coordinate_direction.h:16
constexpr Vector< T, 3 > direction_vector() const
Definition coordinate_direction.h:90
Definition custom_decoration_generator.h:5
bool equal_within_epsilon(T x, T y)
Definition common_functions.h:265
RadiansT< T > pitch(const Qua< T > &q)
Definition quaternion_functions.h:226
constexpr Angle< Rep, Units > clamp(const Angle< Rep, Units > &v, const AngleMin &min, const AngleMax &max)
Definition angle.h:303
GenType cos(GenType v)
Definition trigonometric_functions.h:34
RadiansT< T > roll(const Qua< T > &q)
Definition quaternion_functions.h:246
constexpr Matrix< T, 4, 4 > matrix4x4_cast(const Qua< T > &q)
Definition quaternion_functions.h:149
T length(const Vector< T, N > &v)
Definition geometric_functions.h:60
Qua< T > quaternion_cast(const Matrix< T, 3, 3 > &m)
Definition quaternion_functions.h:73
Vector< RadiansT< T >, 3 > to_euler_angles(const Qua< T > &x)
Definition quaternion_functions.h:260
constexpr T dot(T x, T y)
Definition geometric_functions.h:29
constexpr Matrix< T, 3, 3 > matrix3x3_cast(const Qua< T > &q)
Definition quaternion_functions.h:119
constexpr T length2(const Vector< T, N > &v)
Definition geometric_functions.h:67
Qua< T > rotation(const Vector< T, 3 > &origin, const Vector< T, 3 > &destination)
Definition quaternion_functions.h:187
RadiansT< T > yaw(const Qua< T > &q)
Definition quaternion_functions.h:240
constexpr U to(T &&value)
Definition conversion.h:56
GenType sin(GenType v)
Definition trigonometric_functions.h:13
constexpr Qua< T > quaternion_identity()
Definition quaternion_functions.h:155
T inverse(const Matrix< T, 3, 3 > &m)
Definition matrix_functions.h:158
constexpr Qua< T > conjugate(const Qua< T > &q)
Definition quaternion_functions.h:28
constexpr bool all_of(const Vector< bool, N > &v)
Definition functors.h:49
Vector< T, N > normalize(const Vector< T, N > &v)
Definition geometric_functions.h:74
bool isnan(T num)
Definition common_functions.h:319
Qua< T > angle_axis(Angle< T, Units > angle, VectorLike &&axis)
Definition quaternion_functions.h:170
RadiansT< Rep > atan2(Rep x, Rep y)
Definition trigonometric_functions.h:100
T sqrt(T num)
Definition geometric_functions.h:14
RadiansT< Rep > asin(Rep num)
Definition trigonometric_functions.h:94
constexpr CoordinateDirection cross(CoordinateDirection x, CoordinateDirection y)
Definition coordinate_direction.h:117
static constexpr Qua< T > wxyz(T w, T x, T y, T z)
Definition qua.h:34