10#include <mv/math/detail/Normalization.hpp>
15 requires std::is_floating_point_v<T>
27 requires std::is_floating_point_v<T>
31 requires std::is_floating_point_v<T>
32 [[nodiscard]] Normal3<T>
Rotate(
const Rotation3<T>&,
33 const Normal3<T>&)
noexcept;
36 requires std::is_floating_point_v<T>
98 return Normal3(Value_ *
T(-1), UncheckedTag{});
112 explicit Normal3(
const Vec3<T>& value, UncheckedTag) noexcept :
127 template <
typename T>
128 requires std::is_floating_point_v<T>
143 template <
typename T>
144 requires std::is_floating_point_v<T>
152 template <
typename T>
153 requires std::is_floating_point_v<T>
162 template <
typename T>
163 requires std::is_floating_point_v<T>
173 template <
typename T>
174 requires std::is_floating_point_v<T>
215static_assert(std::is_trivially_copyable_v<mv::math::Normal3f>);
216static_assert(std::is_standard_layout_v<mv::math::Normal3f>);
219static_assert(std::is_trivially_copyable_v<mv::math::Normal3d>);
220static_assert(std::is_standard_layout_v<mv::math::Normal3d>);
static std::optional< Direction3 > TryFrom(const Vec3< T > &value) noexcept
static Normal3 FromDirection(const Direction3< T > &direction) noexcept
static Normal3 AxisX() noexcept
static Normal3 AxisY() noexcept
Direction3< T > ToDirection() const noexcept
static Normal3 AxisZ() noexcept
Normal3 operator-() const noexcept
const Vec3< T > & Vector() const noexcept
friend bool operator==(const Normal3 &left, const Normal3 &right) noexcept
static std::optional< Normal3 > TryFrom(const Vec3< T > &value) noexcept
static Normal3 FromOr(const Vec3< T > &value, Normal3 fallback) noexcept
constexpr T Dot(const Quat< T > &left, const Quat< T > &right) noexcept
Vec3< T > ProjectOntoPlane(const Vec3< T > &value, const Normal3< T > &planeNormal) noexcept
Normal3< float > Normal3f
@ TotalInternalReflection
Normal3< double > Normal3d
Vec3< T > Reflect(const Vec3< T > &incident, const Normal3< T > &normal) noexcept
Vec3< T > Rotate(const Rotation3< T > &rotation, const Vec3< T > &vector) noexcept
RefractionResult3< T > Refract(const Direction3< T > &incident, const Normal3< T > &surfaceNormal, T incidentOverTransmittedIndex) noexcept
std::optional< Direction3< T > > Direction