15 requires std::is_floating_point_v<T>
59 rotation.Row(2U) * Scale_.Z(), Translation_);
65 return left.Translation_ ==
right.Translation_ &&
72 Rotation3<T> Rotation_{};
73 Vec3<T> Scale_{T(1), T(1), T(1)};
88 requires std::is_floating_point_v<T>
104 template <
typename T>
173 template <
typename T>
182static_assert(std::is_trivially_copyable_v<mv::math::TrsTransform3f>);
183static_assert(std::is_standard_layout_v<mv::math::TrsTransform3f>);
184static_assert(std::is_trivially_copyable_v<mv::math::TrsTransform3d>);
185static_assert(std::is_standard_layout_v<mv::math::TrsTransform3d>);
static std::optional< Direction3 > TryFrom(const Vec3< T > &value) noexcept
static Mat3 FromRotation(const Rotation3< T > &rotation) 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 Vec3 Zero() 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
TrsDecomposition3< T > DecomposeTrs(const AffineTransform3< T > &transform, T orthogonalityTolerance=static_cast< T >(1.0e-5)) noexcept
std::optional< TrsTransform3< T > > TryToTrs(const AffineTransform3< T > &transform, T orthogonalityTolerance=static_cast< T >(1.0e-5)) noexcept
T Length(const Quat< T > &value) noexcept
TrsDecompositionStatus Status
std::optional< TrsTransform3< T > > Transform