MeshLib
 
Loading...
Searching...
No Matches
MRFeatures.h File Reference
#include "MRMesh/MRCone3.h"
#include "MRMesh/MRCylinder3.h"
#include "MRMesh/MRLine3.h"
#include "MRMesh/MRLineSegm3.h"
#include "MRMesh/MRPlane3.h"
#include "MRMesh/MRSphere.h"
#include "MRMesh/MRVector3.h"
#include <cassert>
#include <optional>
#include <variant>

Go to the source code of this file.

Classes

struct  MR::Features::Primitives::Plane
 
struct  MR::Features::Primitives::ConeSegment
 
struct  MR::Features::MeasureResult
 Stores the results of measuring two objects relative to one another. More...
 
struct  MR::Features::MeasureResult::BasicPart
 
struct  MR::Features::MeasureResult::Distance
 
struct  MR::Features::MeasureResult::Angle
 
struct  MR::Features::Traits::Unary< T >
 
struct  MR::Features::Traits::Unary< Primitives::Sphere >
 
struct  MR::Features::Traits::Unary< Primitives::ConeSegment >
 
struct  MR::Features::Traits::Unary< Primitives::Plane >
 
struct  MR::Features::Traits::Binary< A, B >
 
struct  MR::Features::Traits::Binary< Primitives::Sphere, Primitives::Sphere >
 
struct  MR::Features::Traits::Binary< Primitives::ConeSegment, Primitives::Sphere >
 
struct  MR::Features::Traits::Binary< Primitives::Plane, Primitives::Sphere >
 
struct  MR::Features::Traits::Binary< Primitives::ConeSegment, Primitives::ConeSegment >
 
struct  MR::Features::Traits::Binary< Primitives::Plane, Primitives::ConeSegment >
 
struct  MR::Features::Traits::Binary< Primitives::Plane, Primitives::Plane >
 

Namespaces

namespace  MR
 
namespace  MR::Features
 
namespace  MR::Features::Primitives
 
namespace  MR::Features::Traits
 Traits that determine how the primitives are related.
 

Concepts

concept  MR::Features::Traits::MeasureSupportedOneWay
 
concept  MR::Features::MeasureSupported
 

Typedefs

using MR::Features::Primitives::Sphere = Sphere3<float>
 
using MR::Features::Primitives::Variant = std::variant<Sphere, ConeSegment, Plane>
 

Functions

Primitives::Sphere MR::Features::toPrimitive (const Vector3f &point)
 
Primitives::Sphere MR::Features::toPrimitive (const Sphere3f &sphere)
 
Primitives::ConeSegment MR::Features::toPrimitive (const Line3f &line)
 
Primitives::ConeSegment MR::Features::toPrimitive (const LineSegm3f &segm)
 
Primitives::ConeSegment MR::Features::toPrimitive (const Cylinder3f &cyl)
 
Primitives::ConeSegment MR::Features::toPrimitive (const Cone3f &cone)
 
MRMESH_API Primitives::ConeSegment MR::Features::primitiveCircle (const Vector3f &point, const Vector3f &normal, float rad)
 normal doesn't need to be normalized.
 
MRMESH_API Primitives::ConeSegment MR::Features::primitiveCylinder (const Vector3f &a, const Vector3f &b, float rad)
 a and b are centers of the sides.
 
MRMESH_API Primitives::ConeSegment MR::Features::primitiveCone (const Vector3f &a, const Vector3f &b, float rad)
 a is the center of the base, b is the pointy end.
 
MRMESH_API std::optional< Primitives::VariantMR::Features::primitiveFromObject (const Object &object)
 
MRMESH_API std::shared_ptr< FeatureObjectMR::Features::primitiveToObject (const Primitives::Variant &primitive, float infiniteExtent)
 
MRMESH_API std::string_view MR::Features::toString (MeasureResult::Status status)
 
template<typename T >
std::string MR::Features::name (const T &primitive)
 
MRMESH_API std::string MR::Features::name (const Primitives::Variant &var)
 
template<typename A , typename B >
requires MeasureSupported<A, B>
MeasureResult MR::Features::measure (const A &a, const B &b)
 
template<typename B >
MeasureResult MR::Features::measure (const Primitives::Variant &a, const B &b)
 
template<typename A >
MeasureResult MR::Features::measure (const A &a, const Primitives::Variant &b)
 
MRMESH_API MeasureResult MR::Features::measure (const Primitives::Variant &a, const Primitives::Variant &b)