25 requires std::is_floating_point_v<T>
40 requires std::is_floating_point_v<T>
194 Quat<T>(-Value_.X(), -Value_.Y(), -Value_.Z(), Value_.W()),
214 constexpr explicit Rotation3(
const Quat<T>& value,
215 UncheckedTag) noexcept :
226 template <
typename T>
238 template <
typename T>
253 template <
typename T>
261 template <
typename T>
275 if (
cosine >
static_cast<T>(0.9995))
290 template <
typename T>
298 template <
typename T>
299 requires std::is_floating_point_v<T>
310 template <
typename T>
311 requires std::is_floating_point_v<T>
322static_assert(std::is_trivially_copyable_v<mv::math::Rotation3f>);
323static_assert(std::is_standard_layout_v<mv::math::Rotation3f>);
326static_assert(std::is_trivially_copyable_v<mv::math::Rotation3d>);
327static_assert(std::is_standard_layout_v<mv::math::Rotation3d>);
static std::optional< Direction3 > TryFrom(const Vec3< T > &value) noexcept
constexpr T Value() const noexcept
constexpr Rotation3() noexcept=default
constexpr Rotation3 Inverse() const noexcept
constexpr const Quat< T > & Quaternion() const noexcept
static std::optional< Rotation3 > TryFrom(const Quat< T > &value) noexcept
static std::optional< Rotation3 > TryFromOrthonormalAxes(const Direction3< T > &axisX, const Direction3< T > &axisY, const Direction3< T > &axisZ, T orthogonalityTolerance=static_cast< T >(1.0e-5)) noexcept
static Rotation3 FromAxisAngle(const Direction3< T > &axis, Radians< T > angle) noexcept
static std::optional< Rotation3 > TryLookTowards(const Direction3< T > &forward, const Direction3< T > &approximateUp) noexcept
static constexpr Rotation3 Identity() noexcept
friend constexpr bool operator==(const Rotation3 &left, const Rotation3 &right) noexcept
Rotation3 operator*(const Rotation3 &right) const noexcept
static Rotation3 FromEuler(const EulerAngles3< T > &angles) noexcept
constexpr T Dot(const Quat< T > &left, const Quat< T > &right) noexcept
Rotation3< float > Rotation3f
bool IsNearlyEquivalent(const Rotation3< T > &left, const Rotation3< T > &right, Tolerance< T > tolerance=Tolerance< T >::Default()) noexcept
Rotation3< T > Nlerp(const Rotation3< T > &start, const Rotation3< T > &end, T amount) noexcept
Rotation3< T > Slerp(const Rotation3< T > &start, const Rotation3< T > &end, T amount) noexcept
Vec3< T > Cross(const Vec3< T > &left, const Vec3< T > &right) noexcept
Rotation3< T > NlerpUnclamped(const Rotation3< T > &start, const Rotation3< T > &end, T amount) noexcept
bool IsNearlyEqual(const Quat< T > &left, const Quat< T > &right, Tolerance< T > tolerance=Tolerance< T >::Default()) noexcept
std::optional< Quat< T > > TryNormalize(const Quat< T > &value) noexcept
Vec3< T > Rotate(const Rotation3< T > &rotation, const Vec3< T > &vector) noexcept
Rotation3< T > SlerpUnclamped(const Rotation3< T > &start, const Rotation3< T > &end, T amount) noexcept
Rotation3< double > Rotation3d