8#include <mv/math/detail/Normalization.hpp>
13 requires std::is_floating_point_v<T>
17 requires std::is_floating_point_v<T>
21 requires std::is_floating_point_v<T>
25 requires std::is_floating_point_v<T>
26 [[nodiscard]] Direction3<T>
Rotate(
const Rotation3<T>&,
27 const Direction3<T>&)
noexcept;
30 requires std::is_floating_point_v<T>
99 explicit Direction3(
const Vec3<T>& value, UncheckedTag) noexcept :
115 template <
typename T>
116 requires std::is_floating_point_v<T>
123 template <
typename T>
124 requires std::is_floating_point_v<T>
133 template <
typename T>
134 requires std::is_floating_point_v<T>
144 template <
typename T>
145 requires std::is_floating_point_v<T>
165static_assert(std::is_trivially_copyable_v<mv::math::Direction3f>);
166static_assert(std::is_standard_layout_v<mv::math::Direction3f>);
169static_assert(std::is_trivially_copyable_v<mv::math::Direction3d>);
170static_assert(std::is_standard_layout_v<mv::math::Direction3d>);
static Direction3 AxisY() noexcept
static std::optional< Direction3 > TryFrom(const Vec3< T > &value) noexcept
friend bool operator==(const Direction3 &left, const Direction3 &right) noexcept
static Direction3 Forward() noexcept
const Vec3< T > & Vector() const noexcept
static Direction3 FromOr(const Vec3< T > &value, Direction3 fallback) noexcept
static Direction3 AxisZ() noexcept
Direction3 operator-() const noexcept
static Direction3 AxisX() noexcept
constexpr T Dot(const Quat< T > &left, const Quat< T > &right) noexcept
Vec3< T > Cross(const Vec3< T > &left, const Vec3< T > &right) noexcept
Radians< T > AngleBetween(const Direction3< T > &from, const Direction3< T > &to) noexcept
Direction3< double > Direction3d
Vec3< T > ProjectOntoDirection(const Vec3< T > &value, const Direction3< T > &direction) noexcept
Direction3< float > Direction3f
T Length(const Quat< T > &value) noexcept
std::optional< Quat< T > > TryNormalize(const Quat< T > &value) noexcept
Radians< T > SignedAngle(const Direction3< T > &from, const Direction3< T > &to, const Direction3< T > &positiveAxis) noexcept
Vec3< T > Rotate(const Rotation3< T > &rotation, const Vec3< T > &vector) noexcept