22 requires std::is_floating_point_v<T>
33 if (!std::isfinite(
offset))
64 Vec3<T>(Coefficients_[0], Coefficients_[1], Coefficients_[2]),
70 return Coefficients_[3];
108 return left.Coefficients_[0] ==
right.Coefficients_[0] &&
109 left.Coefficients_[1] ==
right.Coefficients_[1] &&
110 left.Coefficients_[2] ==
right.Coefficients_[2] &&
111 left.Coefficients_[3] ==
right.Coefficients_[3];
119 Plane3(
const Normal3<T>& normal, T offset, UncheckedTag) noexcept :
120 Coefficients_{normal.Vector().X(), normal.Vector().Y(),
121 normal.Vector().Z(), offset}
125 T Coefficients_[4]{T(1), T(0), T(0), T(0)};
134static_assert(std::is_trivially_copyable_v<mv::math::Plane3f>);
135static_assert(std::is_standard_layout_v<mv::math::Plane3f>);
138static_assert(std::is_trivially_copyable_v<mv::math::Plane3d>);
139static_assert(std::is_standard_layout_v<mv::math::Plane3d>);
static std::optional< Normal3 > TryFrom(const Vec3< T > &value) noexcept
Plane3() noexcept=default
static std::optional< Plane3 > TryFromPoints(const Point3< T > &first, const Point3< T > &second, const Point3< T > &third) noexcept
T Offset() const noexcept
static std::optional< Plane3 > TryFromNormalAndOffset(const Normal3< T > &normal, T offset) noexcept
Plane3 Flipped() const noexcept
static std::optional< Plane3 > TryFromPointNormal(const Point3< T > &point, const Normal3< T > &normal) noexcept
friend bool operator==(const Plane3 &left, const Plane3 &right) noexcept
T SignedDistance(const Point3< T > &point) const noexcept
Normal3< T > Normal() const noexcept
Point3< T > ClosestPoint(const Point3< T > &point) const noexcept
PlaneSide Classify(const Point3< T > &point, T boundaryTolerance=T(0)) const 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