Move Vectormath main
C++20 game and graphics mathematics
Loading...
Searching...
No Matches
mv::math Namespace Reference

Namespaces

namespace  detail
 
namespace  gpu
 
namespace  literals
 

Classes

class  Aabb3
 
class  AffineTransform3
 
class  Capsule3
 
struct  CullingResult
 
class  Degrees
 
class  Direction3
 
struct  EulerAngles3
 
class  Frustum3
 
class  Line3
 
class  Mat3
 
class  Mat4
 
class  Normal3
 
class  Obb3
 
struct  PackedVec2f
 
struct  PackedVec3f
 
struct  PackedVec4f
 
class  Plane3
 
class  Point3
 
struct  PointAabbClosest3
 
struct  PointCapsuleClosest3
 
struct  PointLineClosest3
 
struct  PointPlaneClosest3
 
struct  PointRayClosest3
 
struct  PointSegmentClosest3
 
struct  PointSphereClosest3
 
struct  PointTriangleClosest3
 
class  PreparedFrustum3
 
class  PreparedRay3
 
class  Quat
 
class  Radians
 
class  Ray3
 
struct  RayAabbHit3
 
struct  RayObbHit3
 
struct  RayPlaneHit3
 
struct  RaySphereHit3
 
struct  RayTriangleHit3
 
struct  RayTriangleOptions
 
struct  RefractionResult3
 
class  RigidTransform3
 
class  Rotation3
 
class  Segment3
 
struct  SegmentSegmentClosest3
 
class  Sphere3
 
class  StridedSpan
 
struct  Tolerance
 
class  Triangle3
 
struct  TrsDecomposition3
 
class  TrsTransform3
 
class  Vec2
 
class  Vec3
 
class  Vec4
 
class  Viewport
 

Concepts

concept  Arithmetic
 

Typedefs

using Radiansf = Radians< float >
 
using Radiansd = Radians< double >
 
using Degreesf = Degrees< float >
 
using Degreesd = Degrees< double >
 
using Frustum3f = Frustum3< float >
 
using Frustum3d = Frustum3< double >
 
using PreparedFrustum3f = PreparedFrustum3< float >
 
using PreparedFrustum3d = PreparedFrustum3< double >
 
using Aabb3f = Aabb3< float >
 
using Aabb3d = Aabb3< double >
 
using Aabb3i8 = Aabb3< std::int8_t >
 
using Aabb3u8 = Aabb3< std::uint8_t >
 
using Aabb3i16 = Aabb3< std::int16_t >
 
using Aabb3u16 = Aabb3< std::uint16_t >
 
using Aabb3i32 = Aabb3< std::int32_t >
 
using Aabb3u32 = Aabb3< std::uint32_t >
 
using Aabb3i64 = Aabb3< std::int64_t >
 
using Aabb3u64 = Aabb3< std::uint64_t >
 
using Aabb3i = Aabb3i32
 
using Aabb3u = Aabb3u32
 
using Capsule3f = Capsule3< float >
 
using Capsule3d = Capsule3< double >
 
using Line3f = Line3< float >
 
using Line3d = Line3< double >
 
using Obb3f = Obb3< float >
 
using Obb3d = Obb3< double >
 
using Plane3f = Plane3< float >
 
using Plane3d = Plane3< double >
 
using Ray3f = Ray3< float >
 
using Ray3d = Ray3< double >
 
using Segment3f = Segment3< float >
 
using Segment3d = Segment3< double >
 
using Sphere3f = Sphere3< float >
 
using Sphere3d = Sphere3< double >
 
using Triangle3f = Triangle3< float >
 
using Triangle3d = Triangle3< double >
 
using Viewportf = Viewport< float >
 
using Viewportd = Viewport< double >
 
using Mat3f = Mat3< float >
 
using Mat3d = Mat3< double >
 
using Mat4f = Mat4< float >
 
using Mat4d = Mat4< double >
 
using Quatf = Quat< float >
 
using Quatd = Quat< double >
 
using RayTriangleOptionsf = RayTriangleOptions< float >
 
using RayTriangleOptionsd = RayTriangleOptions< double >
 
using PreparedRay3f = PreparedRay3< float >
 
using PreparedRay3d = PreparedRay3< double >
 
using PointLineClosest3f = PointLineClosest3< float >
 
using PointLineClosest3d = PointLineClosest3< double >
 
using PointRayClosest3f = PointRayClosest3< float >
 
using PointRayClosest3d = PointRayClosest3< double >
 
using PointSegmentClosest3f = PointSegmentClosest3< float >
 
using PointSegmentClosest3d = PointSegmentClosest3< double >
 
using PointPlaneClosest3f = PointPlaneClosest3< float >
 
using PointPlaneClosest3d = PointPlaneClosest3< double >
 
using PointTriangleClosest3f = PointTriangleClosest3< float >
 
using PointTriangleClosest3d = PointTriangleClosest3< double >
 
using PointAabbClosest3f = PointAabbClosest3< float >
 
using PointAabbClosest3d = PointAabbClosest3< double >
 
using PointSphereClosest3f = PointSphereClosest3< float >
 
using PointSphereClosest3d = PointSphereClosest3< double >
 
using PointCapsuleClosest3f = PointCapsuleClosest3< float >
 
using PointCapsuleClosest3d = PointCapsuleClosest3< double >
 
using SegmentSegmentClosest3f = SegmentSegmentClosest3< float >
 
using SegmentSegmentClosest3d = SegmentSegmentClosest3< double >
 
using RayPlaneHit3f = RayPlaneHit3< float >
 
using RayPlaneHit3d = RayPlaneHit3< double >
 
using RayTriangleHit3f = RayTriangleHit3< float >
 
using RayTriangleHit3d = RayTriangleHit3< double >
 
using RaySphereHit3f = RaySphereHit3< float >
 
using RaySphereHit3d = RaySphereHit3< double >
 
using RayAabbHit3f = RayAabbHit3< float >
 
using RayAabbHit3d = RayAabbHit3< double >
 
using RayObbHit3f = RayObbHit3< float >
 
using RayObbHit3d = RayObbHit3< double >
 
using EulerAngles3f = EulerAngles3< float >
 
using EulerAngles3d = EulerAngles3< double >
 
using Rotation3f = Rotation3< float >
 
using Rotation3d = Rotation3< double >
 
using Direction3f = Direction3< float >
 
using Direction3d = Direction3< double >
 
using Normal3f = Normal3< float >
 
using Normal3d = Normal3< double >
 
using RefractionResult3f = RefractionResult3< float >
 
using RefractionResult3d = RefractionResult3< double >
 
using Point3f = Point3< float >
 
using Point3d = Point3< double >
 
using Point3i8 = Point3< std::int8_t >
 
using Point3u8 = Point3< std::uint8_t >
 
using Point3i16 = Point3< std::int16_t >
 
using Point3u16 = Point3< std::uint16_t >
 
using Point3i32 = Point3< std::int32_t >
 
using Point3u32 = Point3< std::uint32_t >
 
using Point3i64 = Point3< std::int64_t >
 
using Point3u64 = Point3< std::uint64_t >
 
using Point3i = Point3i32
 
using Point3u = Point3u32
 
using AffineTransform3f = AffineTransform3< float >
 
using AffineTransform3d = AffineTransform3< double >
 
using RigidTransform3f = RigidTransform3< float >
 
using RigidTransform3d = RigidTransform3< double >
 
using TrsTransform3f = TrsTransform3< float >
 
using TrsTransform3d = TrsTransform3< double >
 
using TrsDecomposition3f = TrsDecomposition3< float >
 
using TrsDecomposition3d = TrsDecomposition3< double >
 
using Vec2f = Vec2< float >
 
using Vec2d = Vec2< double >
 
using Vec2i8 = Vec2< std::int8_t >
 
using Vec2u8 = Vec2< std::uint8_t >
 
using Vec2i16 = Vec2< std::int16_t >
 
using Vec2u16 = Vec2< std::uint16_t >
 
using Vec2i32 = Vec2< std::int32_t >
 
using Vec2u32 = Vec2< std::uint32_t >
 
using Vec2i64 = Vec2< std::int64_t >
 
using Vec2u64 = Vec2< std::uint64_t >
 
using Vec2i = Vec2i32
 
using Vec2u = Vec2u32
 
using Vec3f = Vec3< float >
 
using Vec3d = Vec3< double >
 
using Vec3i8 = Vec3< std::int8_t >
 
using Vec3u8 = Vec3< std::uint8_t >
 
using Vec3i16 = Vec3< std::int16_t >
 
using Vec3u16 = Vec3< std::uint16_t >
 
using Vec3i32 = Vec3< std::int32_t >
 
using Vec3u32 = Vec3< std::uint32_t >
 
using Vec3i64 = Vec3< std::int64_t >
 
using Vec3u64 = Vec3< std::uint64_t >
 
using Vec3i = Vec3i32
 
using Vec3u = Vec3u32
 
using Vec4f = Vec4< float >
 
using Vec4d = Vec4< double >
 
using Vec4i8 = Vec4< std::int8_t >
 
using Vec4u8 = Vec4< std::uint8_t >
 
using Vec4i16 = Vec4< std::int16_t >
 
using Vec4u16 = Vec4< std::uint16_t >
 
using Vec4i32 = Vec4< std::int32_t >
 
using Vec4u32 = Vec4< std::uint32_t >
 
using Vec4i64 = Vec4< std::int64_t >
 
using Vec4u64 = Vec4< std::uint64_t >
 
using Vec4i = Vec4i32
 
using Vec4u = Vec4u32
 

Enumerations

enum class  BackendKind : std::uint8_t { Scalar , Rtm }
 
enum class  FrustumPlane : std::uint8_t {
  Left , Right , Bottom , Top ,
  Near , Far
}
 
enum class  FrustumPlaneMask : std::uint8_t {
  None = 0U , Left = 1U << 0U , Right = 1U << 1U , Bottom = 1U << 2U ,
  Top = 1U << 3U , Near = 1U << 4U , Far = 1U << 5U , All = (1U << 6U) - 1U
}
 
enum class  Containment : std::uint8_t { Outside , Intersecting , Inside }
 
enum class  PlaneSide { Back , Intersecting , Front }
 
enum class  GpuLayout { Float3Packed12 , Float3Array16 }
 
enum class  ViewportYAxis { Up , Down }
 
enum class  BackFaceMode { Include , Cull }
 
enum class  FaceOrientation { Front , Back }
 
enum class  EulerOrder {
  XYZ , XZY , YXZ , YZX ,
  ZXY , ZYX
}
 
enum class  RefractionStatus : std::uint8_t { Success , TotalInternalReflection , InvalidIndexRatio , NumericalFailure }
 
enum class  Handedness { Left , Right }
 
enum class  ClipDepth { ZeroToOne , NegativeOneToOne }
 
enum class  DepthDirection { Forward , Reverse }
 
enum class  TrsDecompositionStatus : std::uint8_t { Success , Singular , Sheared , NumericalFailure }
 

Functions

template<typename T >
constexpr Radians< T > ToRadians (Degrees< T > value) noexcept
 
template<typename T >
constexpr Degrees< T > ToDegrees (Radians< T > value) noexcept
 
template<typename Record , typename Field >
StridedSpan< Field > MakeFieldView (std::span< Record > records, Field Record::*member) noexcept
 
template<typename Record , typename Field >
StridedSpan< const Field > MakeFieldView (std::span< const Record > records, Field Record::*member) noexcept
 
void TransformPoints (std::span< const PackedVec3f > input, const AffineTransform3f &transform, std::span< gpu::Float3Slot16 > output) noexcept
 
void TransformPoints (StridedSpan< const PackedVec3f > input, const AffineTransform3f &transform, StridedSpan< PackedVec3f > output) noexcept
 
constexpr FrustumPlaneMask operator| (FrustumPlaneMask left, FrustumPlaneMask right) noexcept
 
constexpr FrustumPlaneMask operator& (FrustumPlaneMask left, FrustumPlaneMask right) noexcept
 
constexpr FrustumPlaneMask operator~ (FrustumPlaneMask value) noexcept
 
constexpr FrustumPlaneMask & operator|= (FrustumPlaneMask &left, FrustumPlaneMask right) noexcept
 
constexpr FrustumPlaneMask & operator&= (FrustumPlaneMask &left, FrustumPlaneMask right) noexcept
 
constexpr FrustumPlaneMask PlaneMask (FrustumPlane plane) noexcept
 
constexpr bool HasPlane (FrustumPlaneMask mask, FrustumPlane plane) noexcept
 
template<typename T >
CullingResult Classify (const PreparedFrustum3< T > &prepared, const Point3< T > &point, FrustumPlaneMask active=FrustumPlaneMask::All, T tolerance=T(0)) noexcept
 
template<typename T >
CullingResult Classify (const PreparedFrustum3< T > &prepared, const Sphere3< T > &sphere, FrustumPlaneMask active=FrustumPlaneMask::All, T tolerance=T(0)) noexcept
 
template<typename T >
CullingResult Classify (const PreparedFrustum3< T > &prepared, const Aabb3< T > &box, FrustumPlaneMask active=FrustumPlaneMask::All, T tolerance=T(0)) noexcept
 
template<typename T >
CullingResult Classify (const PreparedFrustum3< T > &prepared, const Obb3< T > &box, FrustumPlaneMask active=FrustumPlaneMask::All, T tolerance=T(0)) noexcept
 
template<typename T , typename Bounds >
Containment Classify (const Frustum3< T > &frustum, const Bounds &bounds, T tolerance=T(0)) noexcept
 
template<typename T >
Obb3< T > TransformObb (const RigidTransform3< T > &transform, const Obb3< T > &box) noexcept
 
template<typename T >
std::optional< Aabb3< T > > TryTransformConservativeAabb (const AffineTransform3< T > &transform, const Obb3< T > &box) noexcept
 
template<GpuLayout Layout, typename T >
requires IsGpuLayoutCompatible<T, Layout>
std::span< const std::byte > AsGpuBytes (std::span< const T > values) noexcept
 
template<typename T >
std::optional< Point3< T > > TryProjectPoint (const Mat4< T > &worldToClip, const Point3< T > &worldPoint) noexcept
 
template<typename T >
std::optional< Point3< T > > TryUnprojectPointWithInverse (const Mat4< T > &clipToWorld, const Point3< T > &normalizedDevicePoint) noexcept
 
template<typename T >
std::optional< Point3< T > > TryUnprojectPoint (const Mat4< T > &worldToClip, const Point3< T > &normalizedDevicePoint) noexcept
 
template<typename T >
std::optional< Point3< T > > TryProjectToViewport (const Mat4< T > &worldToClip, const Point3< T > &worldPoint, const Viewport< T > &viewport, ClipDepth clipDepth, ViewportYAxis yAxis=ViewportYAxis::Down) noexcept
 
template<typename T >
std::optional< Point3< T > > TryUnprojectFromViewportWithInverse (const Mat4< T > &clipToWorld, const Point3< T > &viewportPoint, const Viewport< T > &viewport, ClipDepth clipDepth, ViewportYAxis yAxis=ViewportYAxis::Down) noexcept
 
template<typename T >
std::optional< Ray3< T > > TryMakeViewportRay (const Mat4< T > &clipToWorld, const Vec2< T > &viewportPosition, const Viewport< T > &viewport, ClipDepth clipDepth, DepthDirection depthDirection, ViewportYAxis yAxis=ViewportYAxis::Down) noexcept
 
template<typename T >
std::optional< Ray3< T > > TryMakePerspectiveViewportRay (const Mat4< T > &clipToWorld, const Point3< T > &cameraOrigin, const Vec2< T > &viewportPosition, const Viewport< T > &viewport, ClipDepth clipDepth, DepthDirection depthDirection, ViewportYAxis yAxis=ViewportYAxis::Down) noexcept
 
template<typename T >
requires std::is_floating_point_v<T>
Vec3< T > operator* (const Vec3< T > &vector, const Mat3< T > &matrix) noexcept
 
template<typename T >
requires std::is_floating_point_v<T>
Vec4< T > operator* (const Vec4< T > &vector, const Mat4< T > &matrix) noexcept
 
Vec2f Load (const PackedVec2f &value) noexcept
 
Vec3f Load (const PackedVec3f &value) noexcept
 
Vec4f Load (const PackedVec4f &value) noexcept
 
void Store (PackedVec2f &destination, Vec2f value) noexcept
 
void Store (PackedVec3f &destination, Vec3f value) noexcept
 
void Store (PackedVec4f &destination, Vec4f value) noexcept
 
PackedVec2f Store (Vec2f value) noexcept
 
PackedVec3f Store (Vec3f value) noexcept
 
PackedVec4f Store (Vec4f value) noexcept
 
template<typename T >
constexpr T Dot (const Quat< T > &left, const Quat< T > &right) noexcept
 
template<typename T >
constexpr T LengthSquared (const Quat< T > &value) noexcept
 
template<typename T >
T Length (const Quat< T > &value) noexcept
 
template<typename T >
std::optional< Quat< T > > TryNormalize (const Quat< T > &value) noexcept
 
template<typename T >
std::optional< Quat< T > > TryInverse (const Quat< T > &value) noexcept
 
template<typename T >
bool IsNearlyEqual (const Quat< T > &left, const Quat< T > &right, Tolerance< T > tolerance=Tolerance< T >::Default()) noexcept
 
template<typename T >
std::optional< RaySphereHit3< T > > Intersect (const Ray3< T > &ray, const Sphere3< T > &sphere) noexcept
 
template<typename T >
bool Intersects (const Ray3< T > &ray, const Sphere3< T > &sphere) noexcept
 
template<typename T >
std::optional< RayAabbHit3< T > > Intersect (const PreparedRay3< T > &ray, const Aabb3< T > &box) noexcept
 
template<typename T >
std::optional< RayAabbHit3< T > > Intersect (const Ray3< T > &ray, const Aabb3< T > &box) noexcept
 
template<typename T >
bool Intersects (const PreparedRay3< T > &ray, const Aabb3< T > &box) noexcept
 
template<typename T >
bool Intersects (const Ray3< T > &ray, const Aabb3< T > &box) noexcept
 
template<typename T >
bool Intersects (const Sphere3< T > &left, const Sphere3< T > &right) noexcept
 
template<typename T >
bool Intersects (const Aabb3< T > &left, const Aabb3< T > &right) noexcept
 
template<typename T >
bool Intersects (const Sphere3< T > &sphere, const Aabb3< T > &box) noexcept
 
template<typename T >
bool Intersects (const Aabb3< T > &box, const Sphere3< T > &sphere) noexcept
 
template<typename T >
bool Intersects (const Capsule3< T > &capsule, const Sphere3< T > &sphere) noexcept
 
template<typename T >
bool Intersects (const Sphere3< T > &sphere, const Capsule3< T > &capsule) noexcept
 
template<typename T >
bool Intersects (const Capsule3< T > &first, const Capsule3< T > &second) noexcept
 
template<typename T >
PointLineClosest3< T > ClosestPoints (const Point3< T > &point, const Line3< T > &line) noexcept
 
template<typename T >
PointRayClosest3< T > ClosestPoints (const Point3< T > &point, const Ray3< T > &ray) noexcept
 
template<typename T >
PointSegmentClosest3< T > ClosestPoints (const Point3< T > &point, const Segment3< T > &segment) noexcept
 
template<typename T >
PointPlaneClosest3< T > ClosestPoints (const Point3< T > &point, const Plane3< T > &plane) noexcept
 
template<typename T >
PointTriangleClosest3< T > ClosestPoints (const Point3< T > &point, const Triangle3< T > &triangle) noexcept
 
template<typename T >
std::optional< PointAabbClosest3< T > > TryClosestPoints (const Point3< T > &point, const Aabb3< T > &box) noexcept
 
template<typename T >
PointSphereClosest3< T > ClosestPoints (const Point3< T > &point, const Sphere3< T > &sphere) noexcept
 
template<typename T >
PointCapsuleClosest3< T > ClosestPoints (const Point3< T > &point, const Capsule3< T > &capsule) noexcept
 
template<typename T >
SegmentSegmentClosest3< T > ClosestPoints (const Segment3< T > &first, const Segment3< T > &second) noexcept
 
template<typename T >
Point3< T > ClosestPoint (const Point3< T > &point, const Line3< T > &line) noexcept
 
template<typename T >
Point3< T > ClosestPoint (const Point3< T > &point, const Ray3< T > &ray) noexcept
 
template<typename T >
Point3< T > ClosestPoint (const Point3< T > &point, const Segment3< T > &segment) noexcept
 
template<typename T >
Point3< T > ClosestPoint (const Point3< T > &point, const Plane3< T > &plane) noexcept
 
template<typename T >
Point3< T > ClosestPoint (const Point3< T > &point, const Triangle3< T > &triangle) noexcept
 
template<typename T >
std::optional< Point3< T > > TryClosestPoint (const Point3< T > &point, const Aabb3< T > &box) noexcept
 
template<typename T >
Point3< T > ClosestPoint (const Point3< T > &point, const Sphere3< T > &sphere) noexcept
 
template<typename T >
Point3< T > ClosestPoint (const Point3< T > &point, const Capsule3< T > &capsule) noexcept
 
template<typename T >
T DistanceSquared (const Point3< T > &point, const Line3< T > &line) noexcept
 
template<typename T >
T DistanceSquared (const Point3< T > &point, const Ray3< T > &ray) noexcept
 
template<typename T >
T DistanceSquared (const Point3< T > &point, const Segment3< T > &segment) noexcept
 
template<typename T >
T DistanceSquared (const Point3< T > &point, const Plane3< T > &plane) noexcept
 
template<typename T >
T DistanceSquared (const Point3< T > &point, const Triangle3< T > &triangle) noexcept
 
template<typename T >
std::optional< T > TryDistanceSquared (const Point3< T > &point, const Aabb3< T > &box) noexcept
 
template<typename T >
T DistanceSquared (const Point3< T > &point, const Sphere3< T > &sphere) noexcept
 
template<typename T >
T DistanceSquared (const Point3< T > &point, const Capsule3< T > &capsule) noexcept
 
template<typename T >
T DistanceSquared (const Segment3< T > &first, const Segment3< T > &second) noexcept
 
template<typename T >
T Distance (const Point3< T > &point, const Line3< T > &line) noexcept
 
template<typename T >
T Distance (const Point3< T > &point, const Ray3< T > &ray) noexcept
 
template<typename T >
T Distance (const Point3< T > &point, const Segment3< T > &segment) noexcept
 
template<typename T >
T Distance (const Point3< T > &point, const Plane3< T > &plane) noexcept
 
template<typename T >
T Distance (const Point3< T > &point, const Triangle3< T > &triangle) noexcept
 
template<typename T >
std::optional< T > TryDistance (const Point3< T > &point, const Aabb3< T > &box) noexcept
 
template<typename T >
T Distance (const Point3< T > &point, const Sphere3< T > &sphere) noexcept
 
template<typename T >
T Distance (const Point3< T > &point, const Capsule3< T > &capsule) noexcept
 
template<typename T >
bool Contains (const Capsule3< T > &capsule, const Point3< T > &point) noexcept
 
template<typename T >
T Distance (const Segment3< T > &first, const Segment3< T > &second) noexcept
 
template<typename T >
std::optional< RayPlaneHit3< T > > Intersect (const Ray3< T > &ray, const Plane3< T > &plane, T parallelTolerance=std::numeric_limits< T >::epsilon() *T(8)) noexcept
 
template<typename T >
bool Intersects (const Ray3< T > &ray, const Plane3< T > &plane, T parallelTolerance=std::numeric_limits< T >::epsilon() *T(8)) noexcept
 
template<typename T >
std::optional< RayTriangleHit3< T > > Intersect (const Ray3< T > &ray, const Triangle3< T > &triangle, RayTriangleOptions< T > options={}) noexcept
 
template<typename T >
bool Intersects (const Ray3< T > &ray, const Triangle3< T > &triangle, RayTriangleOptions< T > options={}) noexcept
 
template<typename T >
std::optional< RayObbHit3< T > > Intersect (const Ray3< T > &ray, const Obb3< T > &box) noexcept
 
template<typename T >
bool Intersects (const Ray3< T > &ray, const Obb3< T > &box) noexcept
 
template<typename T >
bool Intersects (const Sphere3< T > &sphere, const Obb3< T > &box) noexcept
 
template<typename T >
bool Intersects (const Obb3< T > &box, const Sphere3< T > &sphere) noexcept
 
template<typename T >
bool Intersects (const Obb3< T > &first, const Obb3< T > &second) noexcept
 
template<typename T >
bool Intersects (const Aabb3< T > &first, const Obb3< T > &second) noexcept
 
template<typename T >
bool Intersects (const Obb3< T > &first, const Aabb3< T > &second) noexcept
 
template<typename T >
bool IsNearlyEquivalent (const Rotation3< T > &left, const Rotation3< T > &right, Tolerance< T > tolerance=Tolerance< T >::Default()) noexcept
 
template<typename T >
Rotation3< T > NlerpUnclamped (const Rotation3< T > &start, const Rotation3< T > &end, T amount) noexcept
 
template<typename T >
Rotation3< T > Nlerp (const Rotation3< T > &start, const Rotation3< T > &end, T amount) noexcept
 
template<typename T >
Rotation3< T > SlerpUnclamped (const Rotation3< T > &start, const Rotation3< T > &end, T amount) noexcept
 
template<typename T >
Rotation3< T > Slerp (const Rotation3< T > &start, const Rotation3< T > &end, T amount) noexcept
 
template<typename T >
requires std::is_floating_point_v<T>
Vec3< T > Rotate (const Rotation3< T > &rotation, const Vec3< T > &vector) noexcept
 
template<typename T >
requires std::is_floating_point_v<T>
Direction3< T > Rotate (const Rotation3< T > &rotation, const Direction3< T > &direction) noexcept
 
template<Arithmetic T>
constexpr T Saturate (T value) noexcept
 
template<std::floating_point T>
std::optional< T > TryInverseLerp (T from, T to, T value) noexcept
 
template<std::floating_point T>
std::optional< T > TryInverseLerpClamped (T from, T to, T value) noexcept
 
template<std::floating_point T>
constexpr T SmoothStep (T amount) noexcept
 
template<std::floating_point T>
constexpr T SmootherStep (T amount) noexcept
 
template<typename T >
requires std::is_floating_point_v<T>
std::optional< Direction3< T > > TryNormalize (const Vec3< T > &value) noexcept
 
template<typename T >
requires std::is_floating_point_v<T>
Vec3< T > ProjectOntoDirection (const Vec3< T > &value, const Direction3< T > &direction) noexcept
 
template<typename T >
requires std::is_floating_point_v<T>
Radians< T > AngleBetween (const Direction3< T > &from, const Direction3< T > &to) noexcept
 
template<typename T >
requires std::is_floating_point_v<T>
Radians< T > SignedAngle (const Direction3< T > &from, const Direction3< T > &to, const Direction3< T > &positiveAxis) noexcept
 
template<typename T >
requires std::is_floating_point_v<T>
Normal3< T > Rotate (const Rotation3< T > &, const Normal3< T > &) noexcept
 
template<typename T >
requires std::is_floating_point_v<T>
Vec3< T > ProjectOntoPlane (const Vec3< T > &value, const Normal3< T > &planeNormal) noexcept
 
template<typename T >
requires std::is_floating_point_v<T>
Vec3< T > Reflect (const Vec3< T > &incident, const Normal3< T > &normal) noexcept
 
template<typename T >
requires std::is_floating_point_v<T>
RefractionResult3< T > Refract (const Direction3< T > &incident, const Normal3< T > &surfaceNormal, T incidentOverTransmittedIndex) noexcept
 
template<typename T >
requires std::is_floating_point_v<T>
constexpr bool IsNearlyEqual (T left, T right, Tolerance< T > tolerance=Tolerance< T >::Default()) noexcept
 
template<typename T >
requires std::is_floating_point_v<T>
constexpr bool IsNearlyZero (T value, T absoluteTolerance=Tolerance< T >::Default().Absolute) noexcept
 
template<typename T >
requires std::is_floating_point_v<T>
Vec3< T > TransformVector (const AffineTransform3< T > &transform, const Vec3< T > &vector) noexcept
 
template<typename T >
requires std::is_floating_point_v<T>
Vec3< T > TransformPoint (const AffineTransform3< T > &transform, const Vec3< T > &point) noexcept
 
template<typename T >
requires std::is_floating_point_v<T>
AffineTransform3< T > Compose (const AffineTransform3< T > &first, const AffineTransform3< T > &second) noexcept
 
template<typename T >
requires std::is_floating_point_v<T>
Point3< T > TransformPoint (const AffineTransform3< T > &transform, const Point3< T > &point) noexcept
 
template<typename T >
requires std::is_floating_point_v<T>
std::optional< Direction3< T > > TryTransformDirection (const AffineTransform3< T > &transform, const Direction3< T > &direction) noexcept
 
template<typename T >
requires std::is_floating_point_v<T>
std::optional< Normal3< T > > TryTransformNormal (const AffineTransform3< T > &transform, const Normal3< T > &normal) noexcept
 
template<typename T >
requires std::is_floating_point_v<T>
std::optional< Normal3< T > > TryTransformOrientedSurfaceNormal (const AffineTransform3< T > &transform, const Normal3< T > &normal) noexcept
 
template<typename T >
requires std::is_floating_point_v<T>
AffineTransform3< T > ToAffine (const RigidTransform3< T > &transform) noexcept
 
template<typename T >
requires std::is_floating_point_v<T>
std::optional< Mat4< T > > TryPerspectiveFov (Radians< T > verticalFieldOfView, T aspectRatio, T nearPlane, T farPlane, Handedness handedness, ClipDepth clipDepth, DepthDirection depthDirection) noexcept
 
template<typename T >
requires std::is_floating_point_v<T>
std::optional< Mat4< T > > TryPerspectiveFovInfinite (Radians< T > verticalFieldOfView, T aspectRatio, T nearPlane, Handedness handedness, ClipDepth clipDepth, DepthDirection depthDirection) noexcept
 
template<typename T >
requires std::is_floating_point_v<T>
std::optional< Mat4< T > > TryOrthographicOffCenter (T left, T right, T bottom, T top, T nearPlane, T farPlane, Handedness handedness, ClipDepth clipDepth, DepthDirection depthDirection) noexcept
 
template<typename T >
requires std::is_floating_point_v<T>
Vec3< T > TransformVector (const RigidTransform3< T > &transform, const Vec3< T > &vector) noexcept
 
template<typename T >
requires std::is_floating_point_v<T>
Point3< T > TransformPoint (const RigidTransform3< T > &transform, const Point3< T > &point) noexcept
 
template<typename T >
requires std::is_floating_point_v<T>
Direction3< T > TransformDirection (const RigidTransform3< T > &transform, const Direction3< T > &direction) noexcept
 
template<typename T >
requires std::is_floating_point_v<T>
Normal3< T > TransformNormal (const RigidTransform3< T > &transform, const Normal3< T > &normal) noexcept
 
template<typename T >
requires std::is_floating_point_v<T>
RigidTransform3< T > Compose (const RigidTransform3< T > &first, const RigidTransform3< T > &second) noexcept
 
template<typename T >
Mat4< T > ToMat4 (const AffineTransform3< T > &transform) noexcept
 
template<typename T >
Mat4< T > ToMat4 (const RigidTransform3< T > &transform) noexcept
 
template<typename T >
Mat4< T > ToMat4 (const TrsTransform3< T > &transform) noexcept
 
template<typename T >
std::optional< AffineTransform3< T > > TryToAffine (const Mat4< T > &matrix, Tolerance< T > tolerance=Tolerance< T >::Default()) noexcept
 
template<typename T >
std::optional< RigidTransform3< T > > TryToRigid (const AffineTransform3< T > &transform, Tolerance< T > tolerance=Tolerance< T >::Default()) noexcept
 
template<typename T >
std::optional< RigidTransform3< T > > TryToRigid (const Mat4< T > &matrix, Tolerance< T > tolerance=Tolerance< T >::Default()) noexcept
 
template<typename T >
TrsDecomposition3< T > DecomposeTrs (const AffineTransform3< T > &transform, T orthogonalityTolerance=static_cast< T >(1.0e-5)) noexcept
 
template<typename T >
std::optional< TrsTransform3< T > > TryToTrs (const AffineTransform3< T > &transform, T orthogonalityTolerance=static_cast< T >(1.0e-5)) noexcept
 
template<typename T >
requires std::is_floating_point_v<T>
std::optional< Mat4< T > > TryLookAt (const Point3< T > &eye, const Point3< T > &target, const Direction3< T > &up, Handedness handedness) noexcept
 
template<typename T >
requires std::is_floating_point_v<T>
std::optional< Mat4< T > > TryLookAtLH (const Point3< T > &eye, const Point3< T > &target, const Direction3< T > &up) noexcept
 
template<typename T >
requires std::is_floating_point_v<T>
std::optional< Mat4< T > > TryLookAtRH (const Point3< T > &eye, const Point3< T > &target, const Direction3< T > &up) noexcept
 
template<typename T >
T Dot (const Vec2< T > &left, const Vec2< T > &right) noexcept
 
template<typename T >
T LengthSquared (const Vec2< T > &value) noexcept
 
template<typename T >
requires std::is_floating_point_v<T>
bool IsNearlyEqual (const Vec2< T > &left, const Vec2< T > &right, Tolerance< T > tolerance=Tolerance< T >::Default()) noexcept
 
template<typename T >
requires std::is_floating_point_v<T>
bool IsNearlyZero (const Vec2< T > &value, T absoluteTolerance=Tolerance< T >::Default().Absolute) noexcept
 
template<typename T >
requires std::is_floating_point_v<T>
T Length (const Vec2< T > &value) noexcept
 
template<typename T >
T DistanceSquared (const Vec2< T > &left, const Vec2< T > &right) noexcept
 
template<typename T >
requires std::is_floating_point_v<T>
T Distance (const Vec2< T > &left, const Vec2< T > &right) noexcept
 
template<typename T >
Vec2< T > Min (const Vec2< T > &left, const Vec2< T > &right) noexcept
 
template<typename T >
Vec2< T > Max (const Vec2< T > &left, const Vec2< T > &right) noexcept
 
template<typename T >
Vec2< T > Clamp (const Vec2< T > &value, const Vec2< T > &minimum, const Vec2< T > &maximum) noexcept
 
template<typename T >
Vec2< T > Clamp (const Vec2< T > &value, T minimum, T maximum) noexcept
 
template<typename T >
requires (std::is_signed_v<T> || std::is_floating_point_v<T>)
Vec2< T > Abs (const Vec2< T > &value) noexcept
 
template<typename T >
requires (std::is_signed_v<T> || std::is_floating_point_v<T>)
Vec2< T > Sign (const Vec2< T > &value) noexcept
 
template<typename T >
requires std::is_floating_point_v<T>
Vec2< T > LerpUnclamped (const Vec2< T > &from, const Vec2< T > &to, T amount) noexcept
 
template<typename T >
requires std::is_floating_point_v<T>
Vec2< T > Lerp (const Vec2< T > &from, const Vec2< T > &to, T amount) noexcept
 
template<typename T >
requires std::is_arithmetic_v<T>
T Dot (const Vec3< T > &left, const Vec3< T > &right) noexcept
 
template<typename T >
requires std::is_arithmetic_v<T>
Vec3< T > Cross (const Vec3< T > &left, const Vec3< T > &right) noexcept
 
template<typename T >
requires std::is_arithmetic_v<T>
Vec3< T > Min (const Vec3< T > &left, const Vec3< T > &right) noexcept
 
template<typename T >
requires std::is_arithmetic_v<T>
Vec3< T > Max (const Vec3< T > &left, const Vec3< T > &right) noexcept
 
template<typename T >
T LengthSquared (const Vec3< T > &value) noexcept
 
template<typename T >
requires std::is_floating_point_v<T>
bool IsNearlyEqual (const Vec3< T > &left, const Vec3< T > &right, Tolerance< T > tolerance=Tolerance< T >::Default()) noexcept
 
template<typename T >
requires std::is_floating_point_v<T>
bool IsNearlyZero (const Vec3< T > &value, T absoluteTolerance=Tolerance< T >::Default().Absolute) noexcept
 
template<typename T >
requires std::is_floating_point_v<T>
T Length (const Vec3< T > &value) noexcept
 
template<typename T >
T DistanceSquared (const Vec3< T > &left, const Vec3< T > &right) noexcept
 
template<typename T >
requires std::is_floating_point_v<T>
T Distance (const Vec3< T > &left, const Vec3< T > &right) noexcept
 
template<typename T >
Vec3< T > Clamp (const Vec3< T > &value, const Vec3< T > &minimum, const Vec3< T > &maximum) noexcept
 
template<typename T >
Vec3< T > Clamp (const Vec3< T > &value, T minimum, T maximum) noexcept
 
template<typename T >
requires (std::is_signed_v<T> || std::is_floating_point_v<T>)
Vec3< T > Abs (const Vec3< T > &value) noexcept
 
template<typename T >
requires (std::is_signed_v<T> || std::is_floating_point_v<T>)
Vec3< T > Sign (const Vec3< T > &value) noexcept
 
template<typename T >
requires std::is_floating_point_v<T>
Vec3< T > LerpUnclamped (const Vec3< T > &from, const Vec3< T > &to, T amount) noexcept
 
template<typename T >
requires std::is_floating_point_v<T>
Vec3< T > Lerp (const Vec3< T > &from, const Vec3< T > &to, T amount) noexcept
 
template<typename T >
T Dot (const Vec4< T > &left, const Vec4< T > &right) noexcept
 
template<typename T >
T LengthSquared (const Vec4< T > &value) noexcept
 
template<typename T >
requires std::is_floating_point_v<T>
bool IsNearlyEqual (const Vec4< T > &left, const Vec4< T > &right, Tolerance< T > tolerance=Tolerance< T >::Default()) noexcept
 
template<typename T >
requires std::is_floating_point_v<T>
bool IsNearlyZero (const Vec4< T > &value, T absoluteTolerance=Tolerance< T >::Default().Absolute) noexcept
 
template<typename T >
requires std::is_floating_point_v<T>
T Length (const Vec4< T > &value) noexcept
 
template<typename T >
T DistanceSquared (const Vec4< T > &left, const Vec4< T > &right) noexcept
 
template<typename T >
requires std::is_floating_point_v<T>
T Distance (const Vec4< T > &left, const Vec4< T > &right) noexcept
 
template<typename T >
Vec4< T > Min (const Vec4< T > &left, const Vec4< T > &right) noexcept
 
template<typename T >
Vec4< T > Max (const Vec4< T > &left, const Vec4< T > &right) noexcept
 
template<typename T >
Vec4< T > Clamp (const Vec4< T > &value, const Vec4< T > &minimum, const Vec4< T > &maximum) noexcept
 
template<typename T >
Vec4< T > Clamp (const Vec4< T > &value, T minimum, T maximum) noexcept
 
template<typename T >
requires (std::is_signed_v<T> || std::is_floating_point_v<T>)
Vec4< T > Abs (const Vec4< T > &value) noexcept
 
template<typename T >
requires (std::is_signed_v<T> || std::is_floating_point_v<T>)
Vec4< T > Sign (const Vec4< T > &value) noexcept
 
template<typename T >
requires std::is_floating_point_v<T>
Vec4< T > LerpUnclamped (const Vec4< T > &from, const Vec4< T > &to, T amount) noexcept
 
template<typename T >
requires std::is_floating_point_v<T>
Vec4< T > Lerp (const Vec4< T > &from, const Vec4< T > &to, T amount) noexcept
 

Variables

constexpr BackendKind SelectedBackend = BackendKind::Rtm
 
template<std::floating_point T>
constexpr T Pi = std::numbers::pi_v<T>
 
template<std::floating_point T>
constexpr T HalfPi = Pi<T> / T(2)
 
template<std::floating_point T>
constexpr T QuarterPi = Pi<T> / T(4)
 
template<std::floating_point T>
constexpr T Tau = Pi<T> * T(2)
 
template<typename T , GpuLayout Layout>
constexpr bool IsGpuLayoutCompatible = false
 

Typedef Documentation

◆ Aabb3d

Definition at line 374 of file Aabb3.hpp.

◆ Aabb3f

Definition at line 373 of file Aabb3.hpp.

◆ Aabb3i

Definition at line 383 of file Aabb3.hpp.

◆ Aabb3i16

Definition at line 377 of file Aabb3.hpp.

◆ Aabb3i32

Definition at line 379 of file Aabb3.hpp.

◆ Aabb3i64

Definition at line 381 of file Aabb3.hpp.

◆ Aabb3i8

Definition at line 375 of file Aabb3.hpp.

◆ Aabb3u

Definition at line 384 of file Aabb3.hpp.

◆ Aabb3u16

Definition at line 378 of file Aabb3.hpp.

◆ Aabb3u32

Definition at line 380 of file Aabb3.hpp.

◆ Aabb3u64

Definition at line 382 of file Aabb3.hpp.

◆ Aabb3u8

Definition at line 376 of file Aabb3.hpp.

◆ AffineTransform3d

◆ AffineTransform3f

◆ Capsule3d

◆ Capsule3f

Definition at line 99 of file Capsule3.hpp.

◆ Degreesd

Definition at line 54 of file Angles.hpp.

◆ Degreesf

Definition at line 53 of file Angles.hpp.

◆ Direction3d

◆ Direction3f

◆ EulerAngles3d

◆ EulerAngles3f

◆ Frustum3d

◆ Frustum3f

◆ Line3d

Definition at line 62 of file Line3.hpp.

◆ Line3f

Definition at line 61 of file Line3.hpp.

◆ Mat3d

Definition at line 275 of file Mat3.hpp.

◆ Mat3f

Definition at line 274 of file Mat3.hpp.

◆ Mat4d

Definition at line 287 of file Mat4.hpp.

◆ Mat4f

Definition at line 286 of file Mat4.hpp.

◆ Normal3d

Definition at line 125 of file Normal3.hpp.

◆ Normal3f

Definition at line 124 of file Normal3.hpp.

◆ Obb3d

Definition at line 156 of file Obb3.hpp.

◆ Obb3f

Definition at line 155 of file Obb3.hpp.

◆ Plane3d

Definition at line 129 of file Plane3.hpp.

◆ Plane3f

Definition at line 128 of file Plane3.hpp.

◆ Point3d

Definition at line 97 of file Point3.hpp.

◆ Point3f

Definition at line 96 of file Point3.hpp.

◆ Point3i

Definition at line 106 of file Point3.hpp.

◆ Point3i16

Definition at line 100 of file Point3.hpp.

◆ Point3i32

Definition at line 102 of file Point3.hpp.

◆ Point3i64

Definition at line 104 of file Point3.hpp.

◆ Point3i8

Definition at line 98 of file Point3.hpp.

◆ Point3u

Definition at line 107 of file Point3.hpp.

◆ Point3u16

Definition at line 101 of file Point3.hpp.

◆ Point3u32

Definition at line 103 of file Point3.hpp.

◆ Point3u64

Definition at line 105 of file Point3.hpp.

◆ Point3u8

Definition at line 99 of file Point3.hpp.

◆ PointAabbClosest3d

◆ PointAabbClosest3f

◆ PointCapsuleClosest3d

◆ PointCapsuleClosest3f

◆ PointLineClosest3d

◆ PointLineClosest3f

◆ PointPlaneClosest3d

◆ PointPlaneClosest3f

◆ PointRayClosest3d

◆ PointRayClosest3f

◆ PointSegmentClosest3d

◆ PointSegmentClosest3f

◆ PointSphereClosest3d

◆ PointSphereClosest3f

◆ PointTriangleClosest3d

◆ PointTriangleClosest3f

◆ PreparedFrustum3d

◆ PreparedFrustum3f

◆ PreparedRay3d

◆ PreparedRay3f

◆ Quatd

Definition at line 99 of file Quat.hpp.

◆ Quatf

Definition at line 98 of file Quat.hpp.

◆ Radiansd

Definition at line 52 of file Angles.hpp.

◆ Radiansf

Definition at line 51 of file Angles.hpp.

◆ Ray3d

Definition at line 80 of file Ray3.hpp.

◆ Ray3f

Definition at line 79 of file Ray3.hpp.

◆ RayAabbHit3d

◆ RayAabbHit3f

◆ RayObbHit3d

◆ RayObbHit3f

◆ RayPlaneHit3d

◆ RayPlaneHit3f

◆ RaySphereHit3d

◆ RaySphereHit3f

◆ RayTriangleHit3d

◆ RayTriangleHit3f

◆ RayTriangleOptionsd

◆ RayTriangleOptionsf

◆ RefractionResult3d

◆ RefractionResult3f

◆ RigidTransform3d

◆ RigidTransform3f

◆ Rotation3d

◆ Rotation3f

◆ Segment3d

◆ Segment3f

Definition at line 92 of file Segment3.hpp.

◆ SegmentSegmentClosest3d

◆ SegmentSegmentClosest3f

◆ Sphere3d

Definition at line 84 of file Sphere3.hpp.

◆ Sphere3f

Definition at line 83 of file Sphere3.hpp.

◆ Triangle3d

◆ Triangle3f

◆ TrsDecomposition3d

◆ TrsDecomposition3f

◆ TrsTransform3d

◆ TrsTransform3f

◆ Vec2d

Definition at line 235 of file Vec2.hpp.

◆ Vec2f

Definition at line 234 of file Vec2.hpp.

◆ Vec2i

Definition at line 244 of file Vec2.hpp.

◆ Vec2i16

Definition at line 238 of file Vec2.hpp.

◆ Vec2i32

Definition at line 240 of file Vec2.hpp.

◆ Vec2i64

Definition at line 242 of file Vec2.hpp.

◆ Vec2i8

Definition at line 236 of file Vec2.hpp.

◆ Vec2u

Definition at line 245 of file Vec2.hpp.

◆ Vec2u16

using mv::math::Vec2u16 = typedef Vec2<std::uint16_t>

Definition at line 239 of file Vec2.hpp.

◆ Vec2u32

using mv::math::Vec2u32 = typedef Vec2<std::uint32_t>

Definition at line 241 of file Vec2.hpp.

◆ Vec2u64

using mv::math::Vec2u64 = typedef Vec2<std::uint64_t>

Definition at line 243 of file Vec2.hpp.

◆ Vec2u8

Definition at line 237 of file Vec2.hpp.

◆ Vec3d

Definition at line 345 of file Vec3.hpp.

◆ Vec3f

Definition at line 344 of file Vec3.hpp.

◆ Vec3i

Definition at line 354 of file Vec3.hpp.

◆ Vec3i16

Definition at line 348 of file Vec3.hpp.

◆ Vec3i32

Definition at line 350 of file Vec3.hpp.

◆ Vec3i64

Definition at line 352 of file Vec3.hpp.

◆ Vec3i8

Definition at line 346 of file Vec3.hpp.

◆ Vec3u

Definition at line 355 of file Vec3.hpp.

◆ Vec3u16

using mv::math::Vec3u16 = typedef Vec3<std::uint16_t>

Definition at line 349 of file Vec3.hpp.

◆ Vec3u32

using mv::math::Vec3u32 = typedef Vec3<std::uint32_t>

Definition at line 351 of file Vec3.hpp.

◆ Vec3u64

using mv::math::Vec3u64 = typedef Vec3<std::uint64_t>

Definition at line 353 of file Vec3.hpp.

◆ Vec3u8

Definition at line 347 of file Vec3.hpp.

◆ Vec4d

Definition at line 281 of file Vec4.hpp.

◆ Vec4f

Definition at line 280 of file Vec4.hpp.

◆ Vec4i

Definition at line 290 of file Vec4.hpp.

◆ Vec4i16

Definition at line 284 of file Vec4.hpp.

◆ Vec4i32

Definition at line 286 of file Vec4.hpp.

◆ Vec4i64

Definition at line 288 of file Vec4.hpp.

◆ Vec4i8

Definition at line 282 of file Vec4.hpp.

◆ Vec4u

Definition at line 291 of file Vec4.hpp.

◆ Vec4u16

using mv::math::Vec4u16 = typedef Vec4<std::uint16_t>

Definition at line 285 of file Vec4.hpp.

◆ Vec4u32

using mv::math::Vec4u32 = typedef Vec4<std::uint32_t>

Definition at line 287 of file Vec4.hpp.

◆ Vec4u64

using mv::math::Vec4u64 = typedef Vec4<std::uint64_t>

Definition at line 289 of file Vec4.hpp.

◆ Vec4u8

Definition at line 283 of file Vec4.hpp.

◆ Viewportd

◆ Viewportf

Definition at line 99 of file Project.hpp.

Enumeration Type Documentation

◆ BackendKind

enum class mv::math::BackendKind : std::uint8_t
strong
Enumerator
Scalar 
Rtm 

Definition at line 7 of file Config.hpp.

◆ BackFaceMode

Enumerator
Include 
Cull 

Definition at line 15 of file LinearQueries.hpp.

◆ ClipDepth

Enumerator
ZeroToOne 
NegativeOneToOne 

Definition at line 18 of file Projection.hpp.

◆ Containment

enum class mv::math::Containment : std::uint8_t
strong
Enumerator
Outside 
Intersecting 
Inside 

Definition at line 15 of file FrustumQueries.hpp.

◆ DepthDirection

Enumerator
Forward 
Reverse 

Definition at line 24 of file Projection.hpp.

◆ EulerOrder

Enumerator
XYZ 
XZY 
YXZ 
YZX 
ZXY 
ZYX 

Definition at line 14 of file Rotation3.hpp.

◆ FaceOrientation

Enumerator
Front 
Back 

Definition at line 12 of file QueryTypes.hpp.

◆ FrustumPlane

enum class mv::math::FrustumPlane : std::uint8_t
strong
Enumerator
Left 
Right 
Bottom 
Top 
Near 
Far 

Definition at line 18 of file Frustum3.hpp.

◆ FrustumPlaneMask

enum class mv::math::FrustumPlaneMask : std::uint8_t
strong
Enumerator
None 
Left 
Right 
Bottom 
Top 
Near 
Far 
All 

Definition at line 28 of file Frustum3.hpp.

◆ GpuLayout

Enumerator
Float3Packed12 
Float3Array16 

Definition at line 12 of file LayoutTraits.hpp.

◆ Handedness

Enumerator
Left 
Right 

Definition at line 12 of file Projection.hpp.

◆ PlaneSide

Enumerator
Back 
Intersecting 
Front 

Definition at line 14 of file Plane3.hpp.

◆ RefractionStatus

enum class mv::math::RefractionStatus : std::uint8_t
strong
Enumerator
Success 
TotalInternalReflection 
InvalidIndexRatio 
NumericalFailure 

Definition at line 18 of file Normal3.hpp.

◆ TrsDecompositionStatus

Enumerator
Success 
Singular 
Sheared 
NumericalFailure 

Definition at line 79 of file TrsTransform3.hpp.

◆ ViewportYAxis

Enumerator
Up 
Down 

Definition at line 14 of file Project.hpp.

Function Documentation

◆ Abs() [1/3]

template<typename T >
requires (std::is_signed_v<T> || std::is_floating_point_v<T>)
Vec2< T > mv::math::Abs ( const Vec2< T > &  value)
noexcept

Definition at line 341 of file Vec2.hpp.

◆ Abs() [2/3]

template<typename T >
requires (std::is_signed_v<T> || std::is_floating_point_v<T>)
Vec3< T > mv::math::Abs ( const Vec3< T > &  value)
noexcept

Definition at line 463 of file Vec3.hpp.

◆ Abs() [3/3]

template<typename T >
requires (std::is_signed_v<T> || std::is_floating_point_v<T>)
Vec4< T > mv::math::Abs ( const Vec4< T > &  value)
noexcept

Definition at line 393 of file Vec4.hpp.

◆ AngleBetween()

template<typename T >
requires std::is_floating_point_v<T>
Radians< T > mv::math::AngleBetween ( const Direction3< T > &  from,
const Direction3< T > &  to 
)
inlinenoexcept

Definition at line 135 of file Direction3.hpp.

◆ AsGpuBytes()

template<GpuLayout Layout, typename T >
requires IsGpuLayoutCompatible<T, Layout>
std::span< const std::byte > mv::math::AsGpuBytes ( std::span< const T >  values)
noexcept

Definition at line 36 of file LayoutTraits.hpp.

◆ Clamp() [1/6]

template<typename T >
Vec2< T > mv::math::Clamp ( const Vec2< T > &  value,
const Vec2< T > &  minimum,
const Vec2< T > &  maximum 
)
noexcept

Definition at line 323 of file Vec2.hpp.

◆ Clamp() [2/6]

template<typename T >
Vec2< T > mv::math::Clamp ( const Vec2< T > &  value,
T  minimum,
T  maximum 
)
noexcept

Definition at line 332 of file Vec2.hpp.

◆ Clamp() [3/6]

template<typename T >
Vec3< T > mv::math::Clamp ( const Vec3< T > &  value,
const Vec3< T > &  minimum,
const Vec3< T > &  maximum 
)
noexcept

Definition at line 445 of file Vec3.hpp.

◆ Clamp() [4/6]

template<typename T >
Vec3< T > mv::math::Clamp ( const Vec3< T > &  value,
T  minimum,
T  maximum 
)
noexcept

Definition at line 454 of file Vec3.hpp.

◆ Clamp() [5/6]

template<typename T >
Vec4< T > mv::math::Clamp ( const Vec4< T > &  value,
const Vec4< T > &  minimum,
const Vec4< T > &  maximum 
)
noexcept

Definition at line 375 of file Vec4.hpp.

◆ Clamp() [6/6]

template<typename T >
Vec4< T > mv::math::Clamp ( const Vec4< T > &  value,
T  minimum,
T  maximum 
)
noexcept

Definition at line 384 of file Vec4.hpp.

◆ Classify() [1/5]

template<typename T , typename Bounds >
Containment mv::math::Classify ( const Frustum3< T > &  frustum,
const Bounds &  bounds,
T  tolerance = T(0) 
)
inlinenoexcept

Definition at line 180 of file FrustumQueries.hpp.

◆ Classify() [2/5]

template<typename T >
CullingResult mv::math::Classify ( const PreparedFrustum3< T > &  prepared,
const Aabb3< T > &  box,
FrustumPlaneMask  active = FrustumPlaneMask::All,
T  tolerance = T(0) 
)
inlinenoexcept

Definition at line 138 of file FrustumQueries.hpp.

◆ Classify() [3/5]

template<typename T >
CullingResult mv::math::Classify ( const PreparedFrustum3< T > &  prepared,
const Obb3< T > &  box,
FrustumPlaneMask  active = FrustumPlaneMask::All,
T  tolerance = T(0) 
)
inlinenoexcept

Definition at line 159 of file FrustumQueries.hpp.

◆ Classify() [4/5]

template<typename T >
CullingResult mv::math::Classify ( const PreparedFrustum3< T > &  prepared,
const Point3< T > &  point,
FrustumPlaneMask  active = FrustumPlaneMask::All,
T  tolerance = T(0) 
)
inlinenoexcept

Definition at line 108 of file FrustumQueries.hpp.

◆ Classify() [5/5]

template<typename T >
CullingResult mv::math::Classify ( const PreparedFrustum3< T > &  prepared,
const Sphere3< T > &  sphere,
FrustumPlaneMask  active = FrustumPlaneMask::All,
T  tolerance = T(0) 
)
inlinenoexcept

Definition at line 123 of file FrustumQueries.hpp.

◆ ClosestPoint() [1/7]

template<typename T >
Point3< T > mv::math::ClosestPoint ( const Point3< T > &  point,
const Capsule3< T > &  capsule 
)
inlinenoexcept

Definition at line 438 of file ClosestPointQueries.hpp.

◆ ClosestPoint() [2/7]

template<typename T >
Point3< T > mv::math::ClosestPoint ( const Point3< T > &  point,
const Line3< T > &  line 
)
inlinenoexcept

Definition at line 387 of file ClosestPointQueries.hpp.

◆ ClosestPoint() [3/7]

template<typename T >
Point3< T > mv::math::ClosestPoint ( const Point3< T > &  point,
const Plane3< T > &  plane 
)
inlinenoexcept

Definition at line 408 of file ClosestPointQueries.hpp.

◆ ClosestPoint() [4/7]

template<typename T >
Point3< T > mv::math::ClosestPoint ( const Point3< T > &  point,
const Ray3< T > &  ray 
)
inlinenoexcept

Definition at line 394 of file ClosestPointQueries.hpp.

◆ ClosestPoint() [5/7]

template<typename T >
Point3< T > mv::math::ClosestPoint ( const Point3< T > &  point,
const Segment3< T > &  segment 
)
inlinenoexcept

Definition at line 401 of file ClosestPointQueries.hpp.

◆ ClosestPoint() [6/7]

template<typename T >
Point3< T > mv::math::ClosestPoint ( const Point3< T > &  point,
const Sphere3< T > &  sphere 
)
inlinenoexcept

Definition at line 431 of file ClosestPointQueries.hpp.

◆ ClosestPoint() [7/7]

template<typename T >
Point3< T > mv::math::ClosestPoint ( const Point3< T > &  point,
const Triangle3< T > &  triangle 
)
inlinenoexcept

Definition at line 415 of file ClosestPointQueries.hpp.

◆ ClosestPoints() [1/8]

template<typename T >
PointCapsuleClosest3< T > mv::math::ClosestPoints ( const Point3< T > &  point,
const Capsule3< T > &  capsule 
)
inlinenoexcept

Definition at line 279 of file ClosestPointQueries.hpp.

◆ ClosestPoints() [2/8]

template<typename T >
PointLineClosest3< T > mv::math::ClosestPoints ( const Point3< T > &  point,
const Line3< T > &  line 
)
inlinenoexcept

Definition at line 61 of file ClosestPointQueries.hpp.

◆ ClosestPoints() [3/8]

template<typename T >
PointPlaneClosest3< T > mv::math::ClosestPoints ( const Point3< T > &  point,
const Plane3< T > &  plane 
)
inlinenoexcept

Definition at line 110 of file ClosestPointQueries.hpp.

◆ ClosestPoints() [4/8]

template<typename T >
PointRayClosest3< T > mv::math::ClosestPoints ( const Point3< T > &  point,
const Ray3< T > &  ray 
)
inlinenoexcept

Definition at line 75 of file ClosestPointQueries.hpp.

◆ ClosestPoints() [5/8]

template<typename T >
PointSegmentClosest3< T > mv::math::ClosestPoints ( const Point3< T > &  point,
const Segment3< T > &  segment 
)
inlinenoexcept

Definition at line 89 of file ClosestPointQueries.hpp.

◆ ClosestPoints() [6/8]

template<typename T >
PointSphereClosest3< T > mv::math::ClosestPoints ( const Point3< T > &  point,
const Sphere3< T > &  sphere 
)
inlinenoexcept

Definition at line 257 of file ClosestPointQueries.hpp.

◆ ClosestPoints() [7/8]

template<typename T >
PointTriangleClosest3< T > mv::math::ClosestPoints ( const Point3< T > &  point,
const Triangle3< T > &  triangle 
)
inlinenoexcept

Definition at line 124 of file ClosestPointQueries.hpp.

◆ ClosestPoints() [8/8]

template<typename T >
SegmentSegmentClosest3< T > mv::math::ClosestPoints ( const Segment3< T > &  first,
const Segment3< T > &  second 
)
inlinenoexcept

Definition at line 305 of file ClosestPointQueries.hpp.

◆ Compose() [1/2]

template<typename T >
requires std::is_floating_point_v<T>
AffineTransform3< T > mv::math::Compose ( const AffineTransform3< T > &  first,
const AffineTransform3< T > &  second 
)
inlinenoexcept

Definition at line 123 of file AffineTransform3.hpp.

◆ Compose() [2/2]

template<typename T >
requires std::is_floating_point_v<T>
RigidTransform3< T > mv::math::Compose ( const RigidTransform3< T > &  first,
const RigidTransform3< T > &  second 
)
inlinenoexcept

Definition at line 102 of file RigidTransform3.hpp.

◆ Contains()

template<typename T >
bool mv::math::Contains ( const Capsule3< T > &  capsule,
const Point3< T > &  point 
)
inlinenoexcept

Definition at line 567 of file ClosestPointQueries.hpp.

◆ Cross()

template<typename T >
requires std::is_arithmetic_v<T>
Vec3< T > mv::math::Cross ( const Vec3< T > &  left,
const Vec3< T > &  right 
)
noexcept

Definition at line 367 of file Vec3.hpp.

◆ DecomposeTrs()

template<typename T >
TrsDecomposition3< T > mv::math::DecomposeTrs ( const AffineTransform3< T > &  transform,
T  orthogonalityTolerance = static_cast<T>(1.0e-5) 
)
inlinenoexcept

Definition at line 105 of file TrsTransform3.hpp.

◆ Distance() [1/11]

template<typename T >
T mv::math::Distance ( const Point3< T > &  point,
const Capsule3< T > &  capsule 
)
inlinenoexcept

Definition at line 560 of file ClosestPointQueries.hpp.

◆ Distance() [2/11]

template<typename T >
T mv::math::Distance ( const Point3< T > &  point,
const Line3< T > &  line 
)
inlinenoexcept

Definition at line 510 of file ClosestPointQueries.hpp.

◆ Distance() [3/11]

template<typename T >
T mv::math::Distance ( const Point3< T > &  point,
const Plane3< T > &  plane 
)
inlinenoexcept

Definition at line 531 of file ClosestPointQueries.hpp.

◆ Distance() [4/11]

template<typename T >
T mv::math::Distance ( const Point3< T > &  point,
const Ray3< T > &  ray 
)
inlinenoexcept

Definition at line 517 of file ClosestPointQueries.hpp.

◆ Distance() [5/11]

template<typename T >
T mv::math::Distance ( const Point3< T > &  point,
const Segment3< T > &  segment 
)
inlinenoexcept

Definition at line 524 of file ClosestPointQueries.hpp.

◆ Distance() [6/11]

template<typename T >
T mv::math::Distance ( const Point3< T > &  point,
const Sphere3< T > &  sphere 
)
inlinenoexcept

Definition at line 553 of file ClosestPointQueries.hpp.

◆ Distance() [7/11]

template<typename T >
T mv::math::Distance ( const Point3< T > &  point,
const Triangle3< T > &  triangle 
)
inlinenoexcept

Definition at line 538 of file ClosestPointQueries.hpp.

◆ Distance() [8/11]

template<typename T >
T mv::math::Distance ( const Segment3< T > &  first,
const Segment3< T > &  second 
)
inlinenoexcept

Definition at line 574 of file ClosestPointQueries.hpp.

◆ Distance() [9/11]

template<typename T >
requires std::is_floating_point_v<T>
T mv::math::Distance ( const Vec2< T > &  left,
const Vec2< T > &  right 
)
noexcept

Definition at line 300 of file Vec2.hpp.

◆ Distance() [10/11]

template<typename T >
requires std::is_floating_point_v<T>
T mv::math::Distance ( const Vec3< T > &  left,
const Vec3< T > &  right 
)
noexcept

Definition at line 420 of file Vec3.hpp.

◆ Distance() [11/11]

template<typename T >
requires std::is_floating_point_v<T>
T mv::math::Distance ( const Vec4< T > &  left,
const Vec4< T > &  right 
)
noexcept

Definition at line 350 of file Vec4.hpp.

◆ DistanceSquared() [1/11]

template<typename T >
T mv::math::DistanceSquared ( const Point3< T > &  point,
const Capsule3< T > &  capsule 
)
inlinenoexcept

Definition at line 496 of file ClosestPointQueries.hpp.

◆ DistanceSquared() [2/11]

template<typename T >
T mv::math::DistanceSquared ( const Point3< T > &  point,
const Line3< T > &  line 
)
inlinenoexcept

Definition at line 445 of file ClosestPointQueries.hpp.

◆ DistanceSquared() [3/11]

template<typename T >
T mv::math::DistanceSquared ( const Point3< T > &  point,
const Plane3< T > &  plane 
)
inlinenoexcept

Definition at line 466 of file ClosestPointQueries.hpp.

◆ DistanceSquared() [4/11]

template<typename T >
T mv::math::DistanceSquared ( const Point3< T > &  point,
const Ray3< T > &  ray 
)
inlinenoexcept

Definition at line 452 of file ClosestPointQueries.hpp.

◆ DistanceSquared() [5/11]

template<typename T >
T mv::math::DistanceSquared ( const Point3< T > &  point,
const Segment3< T > &  segment 
)
inlinenoexcept

Definition at line 459 of file ClosestPointQueries.hpp.

◆ DistanceSquared() [6/11]

template<typename T >
T mv::math::DistanceSquared ( const Point3< T > &  point,
const Sphere3< T > &  sphere 
)
inlinenoexcept

Definition at line 489 of file ClosestPointQueries.hpp.

◆ DistanceSquared() [7/11]

template<typename T >
T mv::math::DistanceSquared ( const Point3< T > &  point,
const Triangle3< T > &  triangle 
)
inlinenoexcept

Definition at line 473 of file ClosestPointQueries.hpp.

◆ DistanceSquared() [8/11]

template<typename T >
T mv::math::DistanceSquared ( const Segment3< T > &  first,
const Segment3< T > &  second 
)
inlinenoexcept

Definition at line 503 of file ClosestPointQueries.hpp.

◆ DistanceSquared() [9/11]

template<typename T >
T mv::math::DistanceSquared ( const Vec2< T > &  left,
const Vec2< T > &  right 
)
noexcept

Definition at line 292 of file Vec2.hpp.

◆ DistanceSquared() [10/11]

template<typename T >
T mv::math::DistanceSquared ( const Vec3< T > &  left,
const Vec3< T > &  right 
)
noexcept

Definition at line 412 of file Vec3.hpp.

◆ DistanceSquared() [11/11]

template<typename T >
T mv::math::DistanceSquared ( const Vec4< T > &  left,
const Vec4< T > &  right 
)
noexcept

Definition at line 342 of file Vec4.hpp.

◆ Dot() [1/4]

template<typename T >
constexpr T mv::math::Dot ( const Quat< T > &  left,
const Quat< T > &  right 
)
constexprnoexcept

Definition at line 102 of file Quat.hpp.

◆ Dot() [2/4]

template<typename T >
T mv::math::Dot ( const Vec2< T > &  left,
const Vec2< T > &  right 
)
noexcept

Definition at line 248 of file Vec2.hpp.

◆ Dot() [3/4]

template<typename T >
requires std::is_arithmetic_v<T>
T mv::math::Dot ( const Vec3< T > &  left,
const Vec3< T > &  right 
)
noexcept

Definition at line 359 of file Vec3.hpp.

◆ Dot() [4/4]

template<typename T >
T mv::math::Dot ( const Vec4< T > &  left,
const Vec4< T > &  right 
)
noexcept

Definition at line 294 of file Vec4.hpp.

◆ HasPlane()

constexpr bool mv::math::HasPlane ( FrustumPlaneMask  mask,
FrustumPlane  plane 
)
constexprnoexcept

Definition at line 83 of file Frustum3.hpp.

◆ Intersect() [1/6]

template<typename T >
std::optional< RayAabbHit3< T > > mv::math::Intersect ( const PreparedRay3< T > &  ray,
const Aabb3< T > &  box 
)
inlinenoexcept

Definition at line 304 of file BoundsQueries.hpp.

◆ Intersect() [2/6]

template<typename T >
std::optional< RayAabbHit3< T > > mv::math::Intersect ( const Ray3< T > &  ray,
const Aabb3< T > &  box 
)
inlinenoexcept

Definition at line 326 of file BoundsQueries.hpp.

◆ Intersect() [3/6]

template<typename T >
std::optional< RayObbHit3< T > > mv::math::Intersect ( const Ray3< T > &  ray,
const Obb3< T > &  box 
)
inlinenoexcept

Definition at line 18 of file ObbQueries.hpp.

◆ Intersect() [4/6]

template<typename T >
std::optional< RayPlaneHit3< T > > mv::math::Intersect ( const Ray3< T > &  ray,
const Plane3< T > &  plane,
T  parallelTolerance = std::numeric_limits<T>::epsilon() * T(8) 
)
inlinenoexcept

Definition at line 150 of file LinearQueries.hpp.

◆ Intersect() [5/6]

template<typename T >
std::optional< RaySphereHit3< T > > mv::math::Intersect ( const Ray3< T > &  ray,
const Sphere3< T > &  sphere 
)
inlinenoexcept

Definition at line 273 of file BoundsQueries.hpp.

◆ Intersect() [6/6]

template<typename T >
std::optional< RayTriangleHit3< T > > mv::math::Intersect ( const Ray3< T > &  ray,
const Triangle3< T > &  triangle,
RayTriangleOptions< T >  options = {} 
)
inlinenoexcept

Definition at line 178 of file LinearQueries.hpp.

◆ Intersects() [1/18]

template<typename T >
bool mv::math::Intersects ( const Aabb3< T > &  box,
const Sphere3< T > &  sphere 
)
inlinenoexcept

Definition at line 405 of file BoundsQueries.hpp.

◆ Intersects() [2/18]

template<typename T >
bool mv::math::Intersects ( const Aabb3< T > &  first,
const Obb3< T > &  second 
)
inlinenoexcept

Definition at line 159 of file ObbQueries.hpp.

◆ Intersects() [3/18]

template<typename T >
bool mv::math::Intersects ( const Aabb3< T > &  left,
const Aabb3< T > &  right 
)
inlinenoexcept

Definition at line 368 of file BoundsQueries.hpp.

◆ Intersects() [4/18]

template<typename T >
bool mv::math::Intersects ( const Capsule3< T > &  capsule,
const Sphere3< T > &  sphere 
)
inlinenoexcept

Definition at line 415 of file BoundsQueries.hpp.

◆ Intersects() [5/18]

template<typename T >
bool mv::math::Intersects ( const Capsule3< T > &  first,
const Capsule3< T > &  second 
)
inlinenoexcept

Definition at line 431 of file BoundsQueries.hpp.

◆ Intersects() [6/18]

template<typename T >
bool mv::math::Intersects ( const Obb3< T > &  box,
const Sphere3< T > &  sphere 
)
inlinenoexcept

Definition at line 69 of file ObbQueries.hpp.

◆ Intersects() [7/18]

template<typename T >
bool mv::math::Intersects ( const Obb3< T > &  first,
const Aabb3< T > &  second 
)
inlinenoexcept

Definition at line 174 of file ObbQueries.hpp.

◆ Intersects() [8/18]

template<typename T >
bool mv::math::Intersects ( const Obb3< T > &  first,
const Obb3< T > &  second 
)
inlinenoexcept

Definition at line 80 of file ObbQueries.hpp.

◆ Intersects() [9/18]

template<typename T >
bool mv::math::Intersects ( const PreparedRay3< T > &  ray,
const Aabb3< T > &  box 
)
inlinenoexcept

Definition at line 333 of file BoundsQueries.hpp.

◆ Intersects() [10/18]

template<typename T >
bool mv::math::Intersects ( const Ray3< T > &  ray,
const Aabb3< T > &  box 
)
inlinenoexcept

Definition at line 340 of file BoundsQueries.hpp.

◆ Intersects() [11/18]

template<typename T >
bool mv::math::Intersects ( const Ray3< T > &  ray,
const Obb3< T > &  box 
)
inlinenoexcept

Definition at line 53 of file ObbQueries.hpp.

◆ Intersects() [12/18]

template<typename T >
bool mv::math::Intersects ( const Ray3< T > &  ray,
const Plane3< T > &  plane,
T  parallelTolerance = std::numeric_limits<T>::epsilon() * T(8) 
)
inlinenoexcept

Definition at line 168 of file LinearQueries.hpp.

◆ Intersects() [13/18]

template<typename T >
bool mv::math::Intersects ( const Ray3< T > &  ray,
const Sphere3< T > &  sphere 
)
inlinenoexcept

Definition at line 297 of file BoundsQueries.hpp.

◆ Intersects() [14/18]

template<typename T >
bool mv::math::Intersects ( const Ray3< T > &  ray,
const Triangle3< T > &  triangle,
RayTriangleOptions< T >  options = {} 
)
inlinenoexcept

Definition at line 205 of file LinearQueries.hpp.

◆ Intersects() [15/18]

template<typename T >
bool mv::math::Intersects ( const Sphere3< T > &  left,
const Sphere3< T > &  right 
)
inlinenoexcept

Definition at line 349 of file BoundsQueries.hpp.

◆ Intersects() [16/18]

template<typename T >
bool mv::math::Intersects ( const Sphere3< T > &  sphere,
const Aabb3< T > &  box 
)
inlinenoexcept

Definition at line 375 of file BoundsQueries.hpp.

◆ Intersects() [17/18]

template<typename T >
bool mv::math::Intersects ( const Sphere3< T > &  sphere,
const Capsule3< T > &  capsule 
)
inlinenoexcept

Definition at line 424 of file BoundsQueries.hpp.

◆ Intersects() [18/18]

template<typename T >
bool mv::math::Intersects ( const Sphere3< T > &  sphere,
const Obb3< T > &  box 
)
inlinenoexcept

Definition at line 60 of file ObbQueries.hpp.

◆ IsNearlyEqual() [1/5]

template<typename T >
bool mv::math::IsNearlyEqual ( const Quat< T > &  left,
const Quat< T > &  right,
Tolerance< T >  tolerance = Tolerance<T>::Default() 
)
inlinenoexcept

Definition at line 176 of file Quat.hpp.

◆ IsNearlyEqual() [2/5]

template<typename T >
requires std::is_floating_point_v<T>
bool mv::math::IsNearlyEqual ( const Vec2< T > &  left,
const Vec2< T > &  right,
Tolerance< T >  tolerance = Tolerance<T>::Default() 
)
noexcept

Definition at line 264 of file Vec2.hpp.

◆ IsNearlyEqual() [3/5]

template<typename T >
requires std::is_floating_point_v<T>
bool mv::math::IsNearlyEqual ( const Vec3< T > &  left,
const Vec3< T > &  right,
Tolerance< T >  tolerance = Tolerance<T>::Default() 
)
noexcept

Definition at line 382 of file Vec3.hpp.

◆ IsNearlyEqual() [4/5]

template<typename T >
requires std::is_floating_point_v<T>
bool mv::math::IsNearlyEqual ( const Vec4< T > &  left,
const Vec4< T > &  right,
Tolerance< T >  tolerance = Tolerance<T>::Default() 
)
noexcept

Definition at line 310 of file Vec4.hpp.

◆ IsNearlyEqual() [5/5]

template<typename T >
requires std::is_floating_point_v<T>
constexpr bool mv::math::IsNearlyEqual ( T  left,
T  right,
Tolerance< T >  tolerance = Tolerance<T>::Default() 
)
constexprnoexcept

Definition at line 30 of file Tolerance.hpp.

◆ IsNearlyEquivalent()

template<typename T >
bool mv::math::IsNearlyEquivalent ( const Rotation3< T > &  left,
const Rotation3< T > &  right,
Tolerance< T >  tolerance = Tolerance<T>::Default() 
)
inlinenoexcept

Definition at line 227 of file Rotation3.hpp.

◆ IsNearlyZero() [1/4]

template<typename T >
requires std::is_floating_point_v<T>
bool mv::math::IsNearlyZero ( const Vec2< T > &  value,
T  absoluteTolerance = Tolerance<T>::Default().Absolute 
)
noexcept

Definition at line 275 of file Vec2.hpp.

◆ IsNearlyZero() [2/4]

template<typename T >
requires std::is_floating_point_v<T>
bool mv::math::IsNearlyZero ( const Vec3< T > &  value,
T  absoluteTolerance = Tolerance<T>::Default().Absolute 
)
noexcept

Definition at line 394 of file Vec3.hpp.

◆ IsNearlyZero() [3/4]

template<typename T >
requires std::is_floating_point_v<T>
bool mv::math::IsNearlyZero ( const Vec4< T > &  value,
T  absoluteTolerance = Tolerance<T>::Default().Absolute 
)
noexcept

Definition at line 323 of file Vec4.hpp.

◆ IsNearlyZero() [4/4]

template<typename T >
requires std::is_floating_point_v<T>
constexpr bool mv::math::IsNearlyZero ( T  value,
T  absoluteTolerance = Tolerance<T>::Default().Absolute 
)
constexprnoexcept

Definition at line 54 of file Tolerance.hpp.

◆ Length() [1/4]

template<typename T >
T mv::math::Length ( const Quat< T > &  value)
inlinenoexcept

Definition at line 116 of file Quat.hpp.

◆ Length() [2/4]

template<typename T >
requires std::is_floating_point_v<T>
T mv::math::Length ( const Vec2< T > &  value)
noexcept

Definition at line 285 of file Vec2.hpp.

◆ Length() [3/4]

template<typename T >
requires std::is_floating_point_v<T>
T mv::math::Length ( const Vec3< T > &  value)
noexcept

Definition at line 405 of file Vec3.hpp.

◆ Length() [4/4]

template<typename T >
requires std::is_floating_point_v<T>
T mv::math::Length ( const Vec4< T > &  value)
noexcept

Definition at line 335 of file Vec4.hpp.

◆ LengthSquared() [1/4]

template<typename T >
constexpr T mv::math::LengthSquared ( const Quat< T > &  value)
constexprnoexcept

Definition at line 110 of file Quat.hpp.

◆ LengthSquared() [2/4]

template<typename T >
T mv::math::LengthSquared ( const Vec2< T > &  value)
noexcept

Definition at line 257 of file Vec2.hpp.

◆ LengthSquared() [3/4]

template<typename T >
T mv::math::LengthSquared ( const Vec3< T > &  value)
noexcept

Definition at line 375 of file Vec3.hpp.

◆ LengthSquared() [4/4]

template<typename T >
T mv::math::LengthSquared ( const Vec4< T > &  value)
noexcept

Definition at line 303 of file Vec4.hpp.

◆ Lerp() [1/3]

template<typename T >
requires std::is_floating_point_v<T>
Vec2< T > mv::math::Lerp ( const Vec2< T > &  from,
const Vec2< T > &  to,
T  amount 
)
noexcept

Definition at line 371 of file Vec2.hpp.

◆ Lerp() [2/3]

template<typename T >
requires std::is_floating_point_v<T>
Vec3< T > mv::math::Lerp ( const Vec3< T > &  from,
const Vec3< T > &  to,
T  amount 
)
noexcept

Definition at line 494 of file Vec3.hpp.

◆ Lerp() [3/3]

template<typename T >
requires std::is_floating_point_v<T>
Vec4< T > mv::math::Lerp ( const Vec4< T > &  from,
const Vec4< T > &  to,
T  amount 
)
noexcept

Definition at line 426 of file Vec4.hpp.

◆ LerpUnclamped() [1/3]

template<typename T >
requires std::is_floating_point_v<T>
Vec2< T > mv::math::LerpUnclamped ( const Vec2< T > &  from,
const Vec2< T > &  to,
T  amount 
)
noexcept

Definition at line 361 of file Vec2.hpp.

◆ LerpUnclamped() [2/3]

template<typename T >
requires std::is_floating_point_v<T>
Vec3< T > mv::math::LerpUnclamped ( const Vec3< T > &  from,
const Vec3< T > &  to,
T  amount 
)
noexcept

Definition at line 484 of file Vec3.hpp.

◆ LerpUnclamped() [3/3]

template<typename T >
requires std::is_floating_point_v<T>
Vec4< T > mv::math::LerpUnclamped ( const Vec4< T > &  from,
const Vec4< T > &  to,
T  amount 
)
noexcept

Definition at line 416 of file Vec4.hpp.

◆ Load() [1/3]

Vec2f mv::math::Load ( const PackedVec2f &  value)
inlinenoexcept

Definition at line 42 of file Vectors.hpp.

◆ Load() [2/3]

Vec3f mv::math::Load ( const PackedVec3f &  value)
inlinenoexcept

Definition at line 47 of file Vectors.hpp.

◆ Load() [3/3]

Vec4f mv::math::Load ( const PackedVec4f &  value)
inlinenoexcept

Definition at line 52 of file Vectors.hpp.

◆ MakeFieldView() [1/2]

template<typename Record , typename Field >
StridedSpan< const Field > mv::math::MakeFieldView ( std::span< const Record >  records,
Field Record::*  member 
)
noexcept

Definition at line 77 of file StridedSpan.hpp.

◆ MakeFieldView() [2/2]

template<typename Record , typename Field >
StridedSpan< Field > mv::math::MakeFieldView ( std::span< Record >  records,
Field Record::*  member 
)
noexcept

Definition at line 64 of file StridedSpan.hpp.

◆ Max() [1/3]

template<typename T >
Vec2< T > mv::math::Max ( const Vec2< T > &  left,
const Vec2< T > &  right 
)
noexcept

Definition at line 315 of file Vec2.hpp.

◆ Max() [2/3]

template<typename T >
requires std::is_arithmetic_v<T>
Vec3< T > mv::math::Max ( const Vec3< T > &  left,
const Vec3< T > &  right 
)
noexcept

Definition at line 437 of file Vec3.hpp.

◆ Max() [3/3]

template<typename T >
Vec4< T > mv::math::Max ( const Vec4< T > &  left,
const Vec4< T > &  right 
)
noexcept

Definition at line 366 of file Vec4.hpp.

◆ Min() [1/3]

template<typename T >
Vec2< T > mv::math::Min ( const Vec2< T > &  left,
const Vec2< T > &  right 
)
noexcept

Definition at line 307 of file Vec2.hpp.

◆ Min() [2/3]

template<typename T >
requires std::is_arithmetic_v<T>
Vec3< T > mv::math::Min ( const Vec3< T > &  left,
const Vec3< T > &  right 
)
noexcept

Definition at line 428 of file Vec3.hpp.

◆ Min() [3/3]

template<typename T >
Vec4< T > mv::math::Min ( const Vec4< T > &  left,
const Vec4< T > &  right 
)
noexcept

Definition at line 357 of file Vec4.hpp.

◆ Nlerp()

template<typename T >
Rotation3< T > mv::math::Nlerp ( const Rotation3< T > &  start,
const Rotation3< T > &  end,
T  amount 
)
inlinenoexcept

Definition at line 254 of file Rotation3.hpp.

◆ NlerpUnclamped()

template<typename T >
Rotation3< T > mv::math::NlerpUnclamped ( const Rotation3< T > &  start,
const Rotation3< T > &  end,
T  amount 
)
inlinenoexcept

Definition at line 239 of file Rotation3.hpp.

◆ operator&()

Definition at line 47 of file Frustum3.hpp.

◆ operator&=()

constexpr FrustumPlaneMask & mv::math::operator&= ( FrustumPlaneMask &  left,
FrustumPlaneMask  right 
)
constexprnoexcept

Definition at line 69 of file Frustum3.hpp.

◆ operator*() [1/2]

template<typename T >
requires std::is_floating_point_v<T>
Vec3< T > mv::math::operator* ( const Vec3< T > &  vector,
const Mat3< T > &  matrix 
)
noexcept

Definition at line 266 of file Mat3.hpp.

◆ operator*() [2/2]

template<typename T >
requires std::is_floating_point_v<T>
Vec4< T > mv::math::operator* ( const Vec4< T > &  vector,
const Mat4< T > &  matrix 
)
noexcept

Definition at line 280 of file Mat4.hpp.

◆ operator|()

Definition at line 40 of file Frustum3.hpp.

◆ operator|=()

constexpr FrustumPlaneMask & mv::math::operator|= ( FrustumPlaneMask &  left,
FrustumPlaneMask  right 
)
constexprnoexcept

Definition at line 62 of file Frustum3.hpp.

◆ operator~()

constexpr FrustumPlaneMask mv::math::operator~ ( FrustumPlaneMask  value)
constexprnoexcept

Definition at line 54 of file Frustum3.hpp.

◆ PlaneMask()

constexpr FrustumPlaneMask mv::math::PlaneMask ( FrustumPlane  plane)
constexprnoexcept

Definition at line 76 of file Frustum3.hpp.

◆ ProjectOntoDirection()

template<typename T >
requires std::is_floating_point_v<T>
Vec3< T > mv::math::ProjectOntoDirection ( const Vec3< T > &  value,
const Direction3< T > &  direction 
)
inlinenoexcept

Definition at line 125 of file Direction3.hpp.

◆ ProjectOntoPlane()

template<typename T >
requires std::is_floating_point_v<T>
Vec3< T > mv::math::ProjectOntoPlane ( const Vec3< T > &  value,
const Normal3< T > &  planeNormal 
)
inlinenoexcept

Definition at line 154 of file Normal3.hpp.

◆ Reflect()

template<typename T >
requires std::is_floating_point_v<T>
Vec3< T > mv::math::Reflect ( const Vec3< T > &  incident,
const Normal3< T > &  normal 
)
inlinenoexcept

Definition at line 164 of file Normal3.hpp.

◆ Refract()

template<typename T >
requires std::is_floating_point_v<T>
RefractionResult3< T > mv::math::Refract ( const Direction3< T > &  incident,
const Normal3< T > &  surfaceNormal,
T  incidentOverTransmittedIndex 
)
inlinenoexcept

Definition at line 175 of file Normal3.hpp.

◆ Rotate() [1/3]

template<typename T >
requires std::is_floating_point_v<T>
Normal3< T > mv::math::Rotate ( const Rotation3< T > &  rotation,
const Normal3< T > &  normal 
)
inlinenoexcept

Definition at line 145 of file Normal3.hpp.

◆ Rotate() [2/3]

template<typename T >
requires std::is_floating_point_v<T>
Direction3< T > mv::math::Rotate ( const Rotation3< T > &  rotation,
const Direction3< T > &  direction 
)
inlinenoexcept

Definition at line 312 of file Rotation3.hpp.

◆ Rotate() [3/3]

template<typename T >
requires std::is_floating_point_v<T>
Vec3< T > mv::math::Rotate ( const Rotation3< T > &  rotation,
const Vec3< T > &  vector 
)
inlinenoexcept

Definition at line 300 of file Rotation3.hpp.

◆ Saturate()

template<Arithmetic T>
constexpr T mv::math::Saturate ( T  value)
constexprnoexcept

Definition at line 17 of file Scalar.hpp.

◆ Sign() [1/3]

template<typename T >
requires (std::is_signed_v<T> || std::is_floating_point_v<T>)
Vec2< T > mv::math::Sign ( const Vec2< T > &  value)
noexcept

Definition at line 349 of file Vec2.hpp.

◆ Sign() [2/3]

template<typename T >
requires (std::is_signed_v<T> || std::is_floating_point_v<T>)
Vec3< T > mv::math::Sign ( const Vec3< T > &  value)
noexcept

Definition at line 472 of file Vec3.hpp.

◆ Sign() [3/3]

template<typename T >
requires (std::is_signed_v<T> || std::is_floating_point_v<T>)
Vec4< T > mv::math::Sign ( const Vec4< T > &  value)
noexcept

Definition at line 403 of file Vec4.hpp.

◆ SignedAngle()

template<typename T >
requires std::is_floating_point_v<T>
Radians< T > mv::math::SignedAngle ( const Direction3< T > &  from,
const Direction3< T > &  to,
const Direction3< T > &  positiveAxis 
)
inlinenoexcept

Definition at line 146 of file Direction3.hpp.

◆ Slerp()

template<typename T >
Rotation3< T > mv::math::Slerp ( const Rotation3< T > &  start,
const Rotation3< T > &  end,
T  amount 
)
inlinenoexcept

Definition at line 291 of file Rotation3.hpp.

◆ SlerpUnclamped()

template<typename T >
Rotation3< T > mv::math::SlerpUnclamped ( const Rotation3< T > &  start,
const Rotation3< T > &  end,
T  amount 
)
inlinenoexcept

Definition at line 262 of file Rotation3.hpp.

◆ SmootherStep()

template<std::floating_point T>
constexpr T mv::math::SmootherStep ( T  amount)
constexprnoexcept

Definition at line 84 of file Scalar.hpp.

◆ SmoothStep()

template<std::floating_point T>
constexpr T mv::math::SmoothStep ( T  amount)
constexprnoexcept

Definition at line 76 of file Scalar.hpp.

◆ Store() [1/6]

void mv::math::Store ( PackedVec2f &  destination,
Vec2f  value 
)
inlinenoexcept

Definition at line 57 of file Vectors.hpp.

◆ Store() [2/6]

void mv::math::Store ( PackedVec3f &  destination,
Vec3f  value 
)
inlinenoexcept

Definition at line 62 of file Vectors.hpp.

◆ Store() [3/6]

void mv::math::Store ( PackedVec4f &  destination,
Vec4f  value 
)
inlinenoexcept

Definition at line 67 of file Vectors.hpp.

◆ Store() [4/6]

PackedVec2f mv::math::Store ( Vec2f  value)
inlinenoexcept

Definition at line 72 of file Vectors.hpp.

◆ Store() [5/6]

PackedVec3f mv::math::Store ( Vec3f  value)
inlinenoexcept

Definition at line 77 of file Vectors.hpp.

◆ Store() [6/6]

PackedVec4f mv::math::Store ( Vec4f  value)
inlinenoexcept

Definition at line 82 of file Vectors.hpp.

◆ ToAffine()

template<typename T >
requires std::is_floating_point_v<T>
AffineTransform3< T > mv::math::ToAffine ( const RigidTransform3< T > &  transform)
inlinenoexcept

Definition at line 147 of file AffineTransform3Semantics.hpp.

◆ ToDegrees()

template<typename T >
constexpr Degrees< T > mv::math::ToDegrees ( Radians< T >  value)
constexprnoexcept

Definition at line 63 of file Angles.hpp.

◆ ToMat4() [1/3]

template<typename T >
Mat4< T > mv::math::ToMat4 ( const AffineTransform3< T > &  transform)
inlinenoexcept

Definition at line 14 of file TransformConversions.hpp.

◆ ToMat4() [2/3]

template<typename T >
Mat4< T > mv::math::ToMat4 ( const RigidTransform3< T > &  transform)
inlinenoexcept

Definition at line 27 of file TransformConversions.hpp.

◆ ToMat4() [3/3]

template<typename T >
Mat4< T > mv::math::ToMat4 ( const TrsTransform3< T > &  transform)
inlinenoexcept

Definition at line 34 of file TransformConversions.hpp.

◆ ToRadians()

template<typename T >
constexpr Radians< T > mv::math::ToRadians ( Degrees< T >  value)
constexprnoexcept

Definition at line 57 of file Angles.hpp.

◆ TransformDirection()

template<typename T >
requires std::is_floating_point_v<T>
Direction3< T > mv::math::TransformDirection ( const RigidTransform3< T > &  transform,
const Direction3< T > &  direction 
)
inlinenoexcept

Definition at line 85 of file RigidTransform3.hpp.

◆ TransformNormal()

template<typename T >
requires std::is_floating_point_v<T>
Normal3< T > mv::math::TransformNormal ( const RigidTransform3< T > &  transform,
const Normal3< T > &  normal 
)
inlinenoexcept

Definition at line 94 of file RigidTransform3.hpp.

◆ TransformObb()

template<typename T >
Obb3< T > mv::math::TransformObb ( const RigidTransform3< T > &  transform,
const Obb3< T > &  box 
)
inlinenoexcept

Definition at line 159 of file Obb3.hpp.

◆ TransformPoint() [1/3]

template<typename T >
requires std::is_floating_point_v<T>
Point3< T > mv::math::TransformPoint ( const AffineTransform3< T > &  transform,
const Point3< T > &  point 
)
inlinenoexcept

Definition at line 17 of file AffineTransform3Semantics.hpp.

◆ TransformPoint() [2/3]

template<typename T >
requires std::is_floating_point_v<T>
Vec3< T > mv::math::TransformPoint ( const AffineTransform3< T > &  transform,
const Vec3< T > &  point 
)
inlinenoexcept

Definition at line 115 of file AffineTransform3.hpp.

◆ TransformPoint() [3/3]

template<typename T >
requires std::is_floating_point_v<T>
Point3< T > mv::math::TransformPoint ( const RigidTransform3< T > &  transform,
const Point3< T > &  point 
)
inlinenoexcept

Definition at line 75 of file RigidTransform3.hpp.

◆ TransformPoints() [1/2]

void mv::math::TransformPoints ( std::span< const PackedVec3f >  input,
const AffineTransform3f &  transform,
std::span< gpu::Float3Slot16 >  output 
)
inlinenoexcept

Definition at line 14 of file Transforms.hpp.

◆ TransformPoints() [2/2]

void mv::math::TransformPoints ( StridedSpan< const PackedVec3f >  input,
const AffineTransform3f &  transform,
StridedSpan< PackedVec3f >  output 
)
inlinenoexcept

Definition at line 26 of file Transforms.hpp.

◆ TransformVector() [1/2]

template<typename T >
requires std::is_floating_point_v<T>
Vec3< T > mv::math::TransformVector ( const AffineTransform3< T > &  transform,
const Vec3< T > &  vector 
)
inlinenoexcept

Definition at line 106 of file AffineTransform3.hpp.

◆ TransformVector() [2/2]

template<typename T >
requires std::is_floating_point_v<T>
Vec3< T > mv::math::TransformVector ( const RigidTransform3< T > &  transform,
const Vec3< T > &  vector 
)
inlinenoexcept

Definition at line 67 of file RigidTransform3.hpp.

◆ TryClosestPoint()

template<typename T >
std::optional< Point3< T > > mv::math::TryClosestPoint ( const Point3< T > &  point,
const Aabb3< T > &  box 
)
inlinenoexcept

Definition at line 422 of file ClosestPointQueries.hpp.

◆ TryClosestPoints()

template<typename T >
std::optional< PointAabbClosest3< T > > mv::math::TryClosestPoints ( const Point3< T > &  point,
const Aabb3< T > &  box 
)
inlinenoexcept

Definition at line 241 of file ClosestPointQueries.hpp.

◆ TryDistance()

template<typename T >
std::optional< T > mv::math::TryDistance ( const Point3< T > &  point,
const Aabb3< T > &  box 
)
inlinenoexcept

Definition at line 545 of file ClosestPointQueries.hpp.

◆ TryDistanceSquared()

template<typename T >
std::optional< T > mv::math::TryDistanceSquared ( const Point3< T > &  point,
const Aabb3< T > &  box 
)
inlinenoexcept

Definition at line 480 of file ClosestPointQueries.hpp.

◆ TryInverse()

template<typename T >
std::optional< Quat< T > > mv::math::TryInverse ( const Quat< T > &  value)
inlinenoexcept

Definition at line 146 of file Quat.hpp.

◆ TryInverseLerp()

template<std::floating_point T>
std::optional< T > mv::math::TryInverseLerp ( T  from,
T  to,
T  value 
)
inlinenoexcept

Definition at line 23 of file Scalar.hpp.

◆ TryInverseLerpClamped()

template<std::floating_point T>
std::optional< T > mv::math::TryInverseLerpClamped ( T  from,
T  to,
T  value 
)
inlinenoexcept

Definition at line 68 of file Scalar.hpp.

◆ TryLookAt()

template<typename T >
requires std::is_floating_point_v<T>
std::optional< Mat4< T > > mv::math::TryLookAt ( const Point3< T > &  eye,
const Point3< T > &  target,
const Direction3< T > &  up,
Handedness  handedness 
)
inlinenoexcept

Definition at line 19 of file View.hpp.

◆ TryLookAtLH()

template<typename T >
requires std::is_floating_point_v<T>
std::optional< Mat4< T > > mv::math::TryLookAtLH ( const Point3< T > &  eye,
const Point3< T > &  target,
const Direction3< T > &  up 
)
inlinenoexcept

Definition at line 54 of file View.hpp.

◆ TryLookAtRH()

template<typename T >
requires std::is_floating_point_v<T>
std::optional< Mat4< T > > mv::math::TryLookAtRH ( const Point3< T > &  eye,
const Point3< T > &  target,
const Direction3< T > &  up 
)
inlinenoexcept

Definition at line 64 of file View.hpp.

◆ TryMakePerspectiveViewportRay()

template<typename T >
std::optional< Ray3< T > > mv::math::TryMakePerspectiveViewportRay ( const Mat4< T > &  clipToWorld,
const Point3< T > &  cameraOrigin,
const Vec2< T > &  viewportPosition,
const Viewport< T > &  viewport,
ClipDepth  clipDepth,
DepthDirection  depthDirection,
ViewportYAxis  yAxis = ViewportYAxis::Down 
)
inlinenoexcept

Definition at line 245 of file Project.hpp.

◆ TryMakeViewportRay()

template<typename T >
std::optional< Ray3< T > > mv::math::TryMakeViewportRay ( const Mat4< T > &  clipToWorld,
const Vec2< T > &  viewportPosition,
const Viewport< T > &  viewport,
ClipDepth  clipDepth,
DepthDirection  depthDirection,
ViewportYAxis  yAxis = ViewportYAxis::Down 
)
inlinenoexcept

Definition at line 210 of file Project.hpp.

◆ TryNormalize() [1/2]

template<typename T >
std::optional< Quat< T > > mv::math::TryNormalize ( const Quat< T > &  value)
inlinenoexcept

Definition at line 122 of file Quat.hpp.

◆ TryNormalize() [2/2]

template<typename T >
requires std::is_floating_point_v<T>
std::optional< Direction3< T > > mv::math::TryNormalize ( const Vec3< T > &  value)
inlinenoexcept

Definition at line 117 of file Direction3.hpp.

◆ TryOrthographicOffCenter()

template<typename T >
requires std::is_floating_point_v<T>
std::optional< Mat4< T > > mv::math::TryOrthographicOffCenter ( T  left,
T  right,
T  bottom,
T  top,
T  nearPlane,
T  farPlane,
Handedness  handedness,
ClipDepth  clipDepth,
DepthDirection  depthDirection 
)
inlinenoexcept

Definition at line 155 of file Projection.hpp.

◆ TryPerspectiveFov()

template<typename T >
requires std::is_floating_point_v<T>
std::optional< Mat4< T > > mv::math::TryPerspectiveFov ( Radians< T >  verticalFieldOfView,
T  aspectRatio,
T  nearPlane,
T  farPlane,
Handedness  handedness,
ClipDepth  clipDepth,
DepthDirection  depthDirection 
)
inlinenoexcept

Definition at line 61 of file Projection.hpp.

◆ TryPerspectiveFovInfinite()

template<typename T >
requires std::is_floating_point_v<T>
std::optional< Mat4< T > > mv::math::TryPerspectiveFovInfinite ( Radians< T >  verticalFieldOfView,
T  aspectRatio,
T  nearPlane,
Handedness  handedness,
ClipDepth  clipDepth,
DepthDirection  depthDirection 
)
inlinenoexcept

Definition at line 110 of file Projection.hpp.

◆ TryProjectPoint()

template<typename T >
std::optional< Point3< T > > mv::math::TryProjectPoint ( const Mat4< T > &  worldToClip,
const Point3< T > &  worldPoint 
)
inlinenoexcept

Definition at line 103 of file Project.hpp.

◆ TryProjectToViewport()

template<typename T >
std::optional< Point3< T > > mv::math::TryProjectToViewport ( const Mat4< T > &  worldToClip,
const Point3< T > &  worldPoint,
const Viewport< T > &  viewport,
ClipDepth  clipDepth,
ViewportYAxis  yAxis = ViewportYAxis::Down 
)
inlinenoexcept

Definition at line 157 of file Project.hpp.

◆ TryToAffine()

template<typename T >
std::optional< AffineTransform3< T > > mv::math::TryToAffine ( const Mat4< T > &  matrix,
Tolerance< T >  tolerance = Tolerance<T>::Default() 
)
inlinenoexcept

Definition at line 41 of file TransformConversions.hpp.

◆ TryToRigid() [1/2]

template<typename T >
std::optional< RigidTransform3< T > > mv::math::TryToRigid ( const AffineTransform3< T > &  transform,
Tolerance< T >  tolerance = Tolerance<T>::Default() 
)
inlinenoexcept

Definition at line 65 of file TransformConversions.hpp.

◆ TryToRigid() [2/2]

template<typename T >
std::optional< RigidTransform3< T > > mv::math::TryToRigid ( const Mat4< T > &  matrix,
Tolerance< T >  tolerance = Tolerance<T>::Default() 
)
inlinenoexcept

Definition at line 87 of file TransformConversions.hpp.

◆ TryToTrs()

template<typename T >
std::optional< TrsTransform3< T > > mv::math::TryToTrs ( const AffineTransform3< T > &  transform,
T  orthogonalityTolerance = static_cast<T>(1.0e-5) 
)
inlinenoexcept

Definition at line 174 of file TrsTransform3.hpp.

◆ TryTransformConservativeAabb()

template<typename T >
std::optional< Aabb3< T > > mv::math::TryTransformConservativeAabb ( const AffineTransform3< T > &  transform,
const Obb3< T > &  box 
)
inlinenoexcept

Definition at line 168 of file Obb3.hpp.

◆ TryTransformDirection()

template<typename T >
requires std::is_floating_point_v<T>
std::optional< Direction3< T > > mv::math::TryTransformDirection ( const AffineTransform3< T > &  transform,
const Direction3< T > &  direction 
)
inlinenoexcept

Definition at line 25 of file AffineTransform3Semantics.hpp.

◆ TryTransformNormal()

template<typename T >
requires std::is_floating_point_v<T>
std::optional< Normal3< T > > mv::math::TryTransformNormal ( const AffineTransform3< T > &  transform,
const Normal3< T > &  normal 
)
inlinenoexcept

Definition at line 127 of file AffineTransform3Semantics.hpp.

◆ TryTransformOrientedSurfaceNormal()

template<typename T >
requires std::is_floating_point_v<T>
std::optional< Normal3< T > > mv::math::TryTransformOrientedSurfaceNormal ( const AffineTransform3< T > &  transform,
const Normal3< T > &  normal 
)
inlinenoexcept

Definition at line 139 of file AffineTransform3Semantics.hpp.

◆ TryUnprojectFromViewportWithInverse()

template<typename T >
std::optional< Point3< T > > mv::math::TryUnprojectFromViewportWithInverse ( const Mat4< T > &  clipToWorld,
const Point3< T > &  viewportPoint,
const Viewport< T > &  viewport,
ClipDepth  clipDepth,
ViewportYAxis  yAxis = ViewportYAxis::Down 
)
inlinenoexcept

Definition at line 185 of file Project.hpp.

◆ TryUnprojectPoint()

template<typename T >
std::optional< Point3< T > > mv::math::TryUnprojectPoint ( const Mat4< T > &  worldToClip,
const Point3< T > &  normalizedDevicePoint 
)
inlinenoexcept

Definition at line 146 of file Project.hpp.

◆ TryUnprojectPointWithInverse()

template<typename T >
std::optional< Point3< T > > mv::math::TryUnprojectPointWithInverse ( const Mat4< T > &  clipToWorld,
const Point3< T > &  normalizedDevicePoint 
)
inlinenoexcept

Definition at line 125 of file Project.hpp.

Variable Documentation

◆ HalfPi

template<std::floating_point T>
constexpr T mv::math::HalfPi = Pi<T> / T(2)
inlineconstexpr

Definition at line 12 of file Constants.hpp.

◆ IsGpuLayoutCompatible

template<typename T , GpuLayout Layout>
constexpr bool mv::math::IsGpuLayoutCompatible = false
inlineconstexpr

Definition at line 19 of file LayoutTraits.hpp.

◆ Pi

template<std::floating_point T>
constexpr T mv::math::Pi = std::numbers::pi_v<T>
inlineconstexpr

Definition at line 9 of file Constants.hpp.

◆ QuarterPi

template<std::floating_point T>
constexpr T mv::math::QuarterPi = Pi<T> / T(4)
inlineconstexpr

Definition at line 15 of file Constants.hpp.

◆ SelectedBackend

constexpr BackendKind mv::math::SelectedBackend = BackendKind::Rtm
inlineconstexpr

Definition at line 16 of file Config.hpp.

◆ Tau

template<std::floating_point T>
constexpr T mv::math::Tau = Pi<T> * T(2)
inlineconstexpr

Definition at line 18 of file Constants.hpp.