15 requires std::is_floating_point_v<T>
55 return Start_ == End_;
72 return IsFinitePoint(Start_) && IsFinitePoint(End_);
84 return std::isfinite(
point.X()) && std::isfinite(
point.Y()) &&
85 std::isfinite(
point.Z());
98static_assert(std::is_trivially_copyable_v<mv::math::Segment3f>);
99static_assert(std::is_standard_layout_v<mv::math::Segment3f>);
102static_assert(std::is_trivially_copyable_v<mv::math::Segment3d>);
103static_assert(std::is_standard_layout_v<mv::math::Segment3d>);
static std::optional< Direction3 > TryFrom(const Vec3< T > &value) noexcept
Vec3< T > Displacement() const noexcept
const Point3< T > & End() const noexcept
friend bool operator==(const Segment3 &left, const Segment3 &right) noexcept
Segment3() noexcept=default
const Point3< T > & Start() const noexcept
bool IsFinite() const noexcept
T LengthSquared() const noexcept
T Length() const noexcept
std::optional< Direction3< T > > TryDirection() const noexcept
bool IsDegenerate() const noexcept
Point3< T > PointAtFraction(T fraction) const noexcept
Segment3< double > Segment3d
constexpr T LengthSquared(const Quat< T > &value) noexcept
Segment3< float > Segment3f