7#include "MRPch/MRBindingMacros.h"
23 #if !defined _ITERATOR_DEBUG_LEVEL
24 #define _ITERATOR_DEBUG_LEVEL 0
26 #if !defined MR_ITERATOR_DEBUG_LEVEL
27 #define MR_ITERATOR_DEBUG_LEVEL 0
29 #if _ITERATOR_DEBUG_LEVEL != MR_ITERATOR_DEBUG_LEVEL
30 #error _ITERATOR_DEBUG_LEVEL is inconsistent with MeshLib
36#define MR_CPP_STANDARD_DATE _MSVC_LANG
38#define MR_CPP_STANDARD_DATE __cplusplus
45#if MR_CPP_STANDARD_DATE < 201709 && !defined(__CUDACC__)
46#error Must enable C++20 or newer!
56#if defined(__GNUC__) && (__GNUC__ >= 13 && __GNUC__ <= 15)
57 #pragma GCC diagnostic push
58 #pragma GCC diagnostic ignored "-Warray-bounds"
59 #pragma GCC diagnostic ignored "-Wstringop-overflow"
64#if defined(__GNUC__) && (__GNUC__ >= 13 && __GNUC__ <= 15)
65 #pragma GCC diagnostic pop
70#include <parallel_hashmap/phmap_fwd_decl.h>
76# define MRMESH_API __declspec(dllexport)
78# define MRMESH_API __declspec(dllimport)
82# define MRMESH_API __attribute__((visibility("default")))
87# define MRMESH_CLASS __attribute__((type_visibility("default")))
89# define MRMESH_CLASS __attribute__((visibility("default")))
134template <>
class MR_BIND_PREFERRED_NAME(
MR::EdgeId)
Id<EdgeTag>;
135template <> class MR_BIND_PREFERRED_NAME(MR::VoxelId)
Id<VoxelTag>;
138 ( NoInitNodeId, NoInitId<NodeTag> )
159 ( FaceBitSet, TypedBitSet<FaceId> )
160 ( VertBitSet, TypedBitSet<VertId> )
161 ( EdgeBitSet, TypedBitSet<EdgeId> )
162 ( UndirectedEdgeBitSet, TypedBitSet<UndirectedEdgeId> )
163 ( PixelBitSet, TypedBitSet<PixelId> )
164 ( VoxelBitSet, TypedBitSet<VoxelId> )
165 ( RegionBitSet, TypedBitSet<RegionId> )
166 ( NodeBitSet, TypedBitSet<NodeId> )
167 ( ObjBitSet, TypedBitSet<ObjId> )
168 ( TextureBitSet, TypedBitSet<TextureId> )
169 ( GraphVertBitSet, TypedBitSet<GraphVertId> )
170 ( GraphEdgeBitSet, TypedBitSet<GraphEdgeId> )
177 ( SetBitIterator, SetBitIteratorT<BitSet> )
178 ( FaceSetBitIterator, SetBitIteratorT<FaceBitSet> )
179 ( VertSetBitIterator, SetBitIteratorT<VertBitSet> )
180 ( EdgeSetBitIterator, SetBitIteratorT<EdgeBitSet> )
181 ( UndirectedEdgeSetBitIterator, SetBitIteratorT<UndirectedEdgeBitSet> )
187 ( Vector2b, Vector2<bool> )
188 ( Vector2i, Vector2<int> )
189 ( Vector2i64, Vector2<std::int64_t> )
190 ( Vector2f, Vector2<float> )
191 ( Vector2d, Vector2<double> )
195 ( Vector3b, Vector3<bool> )
196 ( Vector3i, Vector3<int> )
197 ( Vector3i64, Vector3<std::int64_t> )
198 ( Vector3f, Vector3<float> )
199 ( Vector3d, Vector3<double> )
203 ( Vector4b, Vector4<bool> )
204 ( Vector4i, Vector4<int> )
205 ( Vector4i64, Vector4<std::int64_t> )
206 ( Vector4f, Vector4<float> )
207 ( Vector4d, Vector4<double> )
209#if !MR_PARSING_FOR_ANY_BINDINGS
210using Vector4ll [[deprecated("Use `Vector4i64` instead.")]] =
Vector4<long long>;
214 ( Matrix2b, Matrix2<bool> )
215 ( Matrix2i, Matrix2<int> )
216 ( Matrix2i64, Matrix2<std::int64_t> )
217 ( Matrix2f, Matrix2<float> )
218 ( Matrix2d, Matrix2<double> )
220#if !MR_PARSING_FOR_ANY_BINDINGS
221using Matrix2ll [[deprecated("Use `Matrix2i64` instead.")]] =
Matrix2<long long>;
225 ( Matrix3b, Matrix3<bool> )
226 ( Matrix3i, Matrix3<int> )
227 ( Matrix3i64, Matrix3<std::int64_t> )
228 ( Matrix3f, Matrix3<float> )
229 ( Matrix3d, Matrix3<double> )
231#if !MR_PARSING_FOR_ANY_BINDINGS
232using Matrix3ll [[deprecated("Use `Matrix3i64` instead.")]] =
Matrix3<long long>;
236 ( Matrix4b, Matrix4<bool> )
237 ( Matrix4i, Matrix4<int> )
238 ( Matrix4i64, Matrix4<std::int64_t> )
239 ( Matrix4f, Matrix4<float> )
240 ( Matrix4d, Matrix4<double> )
242#if !MR_PARSING_FOR_ANY_BINDINGS
243using Matrix4ll [[deprecated("Use `Matrix4i64` instead.")]] =
Matrix4<long long>;
247 ( SymMatrix2b, SymMatrix2<bool> )
248 ( SymMatrix2i, SymMatrix2<int> )
249 ( SymMatrix2i64, SymMatrix2<std::int64_t> )
250 ( SymMatrix2f, SymMatrix2<float> )
251 ( SymMatrix2d, SymMatrix2<double> )
253#if !MR_PARSING_FOR_ANY_BINDINGS
254using SymMatrix2ll [[deprecated("Use `SymMatrix2i64` instead.")]] =
SymMatrix2<long long>;
258 ( SymMatrix3b, SymMatrix3<bool> )
259 ( SymMatrix3i, SymMatrix3<int> )
260 ( SymMatrix3i64, SymMatrix3<std::int64_t> )
261 ( SymMatrix3f, SymMatrix3<float> )
262 ( SymMatrix3d, SymMatrix3<double> )
264#if !MR_PARSING_FOR_ANY_BINDINGS
265using SymMatrix3ll [[deprecated("Use `SymMatrix3i64` instead.")]] =
SymMatrix3<long long>;
269 ( SymMatrix4b, SymMatrix4<bool> )
270 ( SymMatrix4i, SymMatrix4<int> )
271 ( SymMatrix4i64, SymMatrix4<std::int64_t> )
272 ( SymMatrix4f, SymMatrix4<float> )
273 ( SymMatrix4d, SymMatrix4<double> )
275#if !MR_PARSING_FOR_ANY_BINDINGS
276using SymMatrix4ll [[deprecated("Use `SymMatrix4i64` instead.")]] =
SymMatrix4<long long>;
281 template <
typename T>
283 template <
template <
typename>
typename T,
typename U>
286 template <
typename T>
287 static constexpr bool IsValidTemplateArg = std::is_floating_point_v<typename VectorElemType<T>::type>;
299namespace
detail::AffineXf3f
336template <typename T> using Line2 =
Line<
Vector2<T>>;
365 ( Cone3d,
Cone3<
double> )
369template <typename V> using
Contour = std::vector<V>;
389 ( Plane3d,
Plane3<
double> )
394 ( Box1i64,
Box<std::int64_t> )
395 ( Box1f,
Box<
float> )
396 ( Box1d,
Box<
double> )
406#if !MR_PARSING_FOR_ANY_BINDINGS
407using Box1ll [[deprecated(
"Use `Box1i64` instead.")]] =
Box<long long>;
421template<
typename T,
typename I>
struct MinArg;
422template<
typename T,
typename I>
struct MaxArg;
423template<
typename T,
typename I>
struct MinMaxArg;
461template <typename T> using Triangle3 = std::array<
Vector3<T>, 3>;
535 ( FaceMap,
Vector<FaceId, FaceId> )
536 ( VertMap,
Vector<VertId, VertId> )
537 ( EdgeMap,
Vector<EdgeId, EdgeId> )
538 ( UndirectedEdgeMap,
Vector<UndirectedEdgeId, UndirectedEdgeId> )
539 ( ObjMap,
Vector<ObjId, ObjId> )
542 ( WholeEdgeMap,
Vector<EdgeId, UndirectedEdgeId> )
543 ( UndirectedEdge2RegionMap,
Vector<RegionId, UndirectedEdgeId> )
544 ( Face2RegionMap,
Vector<RegionId, FaceId> )
545 ( Vert2RegionMap,
Vector<RegionId, VertId> )
547 ( VertCoords,
Vector<Vector3f, VertId> )
548 ( VertCoords2,
Vector<Vector2f, VertId> )
549 ( VertNormals,
Vector<Vector3f, VertId> )
551 ( FaceNormals,
Vector<Vector3f, FaceId> )
553 ( TexturePerFace,
Vector<TextureId, FaceId> )
557 ( UndirectedEdgeColors,
Vector<
Color, UndirectedEdgeId> )
559 ( VertScalars,
Vector<
float, VertId> )
560 ( FaceScalars,
Vector<
float, FaceId> )
561 ( EdgeScalars,
Vector<
float, EdgeId> )
562 ( UndirectedEdgeScalars,
Vector<
float, UndirectedEdgeId> )
565using VertPredicate = std::function<
bool( VertId )>;
574[[nodiscard]] inline
bool contains( const std::function<
bool(
Id<T> )> & pred,
Id<T>
id )
576 return id.valid() && ( !pred || pred(
id ) );
592template <typename T, typename
Hash = phmap::priv::hash_default_hash<T>, typename
Eq = phmap::priv::hash_default_eq<T>>
593using HashSet = phmap::flat_hash_set<T,
Hash,
Eq>;
594template <typename T, typename
Hash = phmap::priv::hash_default_hash<T>, typename
Eq = phmap::priv::hash_default_eq<T>>
602template <typename K, typename V, typename
Hash = phmap::priv::hash_default_hash<K>, typename
Eq = phmap::priv::hash_default_eq<K>>
604template <typename K, typename V, typename
Hash = phmap::priv::hash_default_hash<K>, typename
Eq = phmap::priv::hash_default_eq<K>>
614template <typename K, typename V>
625template <typename T, typename
I, typename P> class
Heap;
746namespace ObjectSave {
struct Settings; }
761constexpr inline T
sqr( T x )
noexcept {
return x * x; }
765constexpr inline int sgn( T x )
noexcept {
return x > 0 ? 1 : ( x < 0 ? -1 : 0 ); }
769constexpr inline T
distance( T x, T y )
noexcept {
return x >= y ? x - y : y - x; }
776template <
typename V,
typename T>
777constexpr inline auto lerp( V v0, V v1, T t )
noexcept {
return ( 1 - t ) * v0 + t * v1; }
798struct VertDuplication;
807constexpr inline auto translate_noop(
const char* ctx,
const char* str )
noexcept { (void)ctx;
return str; }
808constexpr inline auto translate_noop(
const char* single,
const char* plural, std::int64_t n )
noexcept {
return n == 1 ? single : plural; }
809constexpr inline auto translate_noop(
const char* ctx,
const char* single,
const char* plural, std::int64_t n )
noexcept { (void)ctx;
return n == 1 ? single : plural; }
815#ifdef __cpp_lib_unreachable
816# define MR_UNREACHABLE std::unreachable();
817# define MR_UNREACHABLE_NO_RETURN std::unreachable();
820# define MR_UNREACHABLE __builtin_unreachable();
821# define MR_UNREACHABLE_NO_RETURN __builtin_unreachable();
824# define MR_UNREACHABLE { assert( false ); return {}; }
825# define MR_UNREACHABLE_NO_RETURN assert( false );
829#ifndef MR_NO_I18N_MACROS
830#define _t( ... ) MR::Locale::translate_noop( __VA_ARGS__ )
#define MR_CANONICAL_TYPEDEFS(type_, name_, aliases_)
Definition MRCanonicalTypedefs.h:23
#define MR_REQUIRES_IF_SUPPORTED(...)
Definition MRMacros.h:33
#define MRMESH_CLASS
Definition MRMeshFwd.h:89
Definition MRAABBTreeObjects.h:22
bounding volume hierarchy for point cloud structure
Definition MRAABBTreePoints.h:16
bounding volume hierarchy for line segments
Definition MRAABBTreePolyline.h:30
Definition MRAABBTree.h:16
Definition MRVisualObject.h:53
accumulates a number of (x,y) points to find the best-least-squares parabola approximating them
Definition MRBestFitParabola.h:15
std::vector<V>-like container that is 1) resized without initialization of its elements,...
Definition MRBuffer.h:58
Undo action for ObjectMesh mesh change.
Definition MRChangeMeshAction.h:16
Undo action for ObjectMesh creases.
Definition MRChangeSelectionAction.h:122
Undo action for ObjectMeshData change.
Definition MRChangeMeshDataAction.h:14
Undo action for ObjectMesh edge selection.
Definition MRChangeSelectionAction.h:68
Undo action for ObjectMesh face selection.
Definition MRChangeSelectionAction.h:14
Undo action for ObjectMesh points only (not topology) change.
Definition MRChangeMeshAction.h:190
Undo action for ObjectMesh topology only (not points) change.
Definition MRChangeMeshAction.h:254
Definition MRChangeObjectAction.h:17
Undo action for ObjectPoints point selection.
Definition MRChangeSelectionAction.h:176
Definition MRChangeSceneAction.h:16
Definition MRChangeXfAction.h:16
Definition MRCircleObject.h:17
Class for aggregate several color map in one Color maps are aggregated according order.
Definition MRColorMapAggregator.h:20
Definition MRCombinedHistoryAction.h:16
Base class for cone parameterization.
Definition MRCone3.h:14
Definition MRConeObject.h:22
Definition MRCylinder3.h:15
Definition MRCylinderObject.h:21
Definition MRDistanceMap.h:24
the class stores some number of smallest elements from a larger number of candidates
Definition MRFewSmallest.h:17
mathematical graph consisting from vertices and undirected edges
Definition MRGraph.h:17
stores map from element id in[0, size) to T;
Definition MRHeap.h:23
Definition MRHistoryAction.h:15
Abstract class for fast approximate computation of generalized winding number for a mesh (using its A...
Definition MRFastWindingNumber.h:15
abstract class for computing the closest points of point clouds
Definition MRPointsProject.h:93
Abstract class, computes the closest point on mesh to each of given points. Pure virtual functions mu...
Definition MRPointsToMeshProjector.h:16
stores index of some element, it is made as template class to avoid mixing faces, edges and vertices
Definition MRId.h:20
Definition MRLaplacian.h:24
Definition MRLineObject.h:16
Definition MRMeshOrPoints.h:21
Definition MRMeshTopology.h:30
Definition MRObjectDistanceMap.h:16
Definition MRObjectGcode.h:17
Definition MRObjectLabel.h:29
Definition MRObjectLinesHolder.h:30
Definition MRObjectLines.h:14
Definition MRObjectMeshHolder.h:35
Definition MRObjectMesh.h:14
Definition MRObjectPointsHolder.h:24
Definition MRObjectPoints.h:14
named object in the data model
Definition MRObject.h:62
Undo action for efficiently storage of partial change in mesh (e.g. a modification of small region)
Definition MRPartialChangeMeshAction.h:25
Undo action for efficiently storage of partial change in mesh points (e.g. a modification of small re...
Definition MRPartialChangeMeshAction.h:85
Undo action for efficiently storage of partial change in mesh topology (e.g. a modification of small ...
Definition MRPartialChangeMeshAction.h:151
Definition MRPlaneObject.h:15
Class to accumulate points and make best line / plane approximation.
Definition MRBestFit.h:20
Definition MRPointObject.h:17
Definition MRPolylineTopology.h:18
Object that is parent of all scene.
Definition MRSceneRoot.h:14
Definition MRSharedThreadSafeOwner.h:19
Definition MRSphereObject.h:18
Definition MRSwapRootAction.h:16
Definition MRBitSet.h:277
Union-find data structure for representing disjoint sets of elements with few very quick operations: ...
Definition MRUnionFind.h:151
Definition MRUniqueThreadSafeOwner.h:18
std::vector<T>-like container that requires specific indexing type,
Definition MRVector.h:23
Definition MRVersatileChangeMeshAction.h:14
Definition MRViewportId.h:16
stores mask of viewport unique identifiers
Definition MRViewportId.h:42
Definition MRViewportProperty.h:17
Visual Object.
Definition MRVisualObject.h:115
graphs representing rain basins on the mesh
Definition MRWatershedGraph.h:15
bool contains(const TypedBitSet< I > *bitset, I id)
Definition MRBitSet.h:405
std::function< bool(float)> ProgressCallback
Definition MRMeshFwd.h:751
CubicBezierCurve< Vector2< T > > CubicBezierCurve2
Definition MRMeshFwd.h:443
std::function< float(VertId)> VertMetric
Definition MRMeshFwd.h:579
phmap::parallel_flat_hash_map< K, V, Hash, Eq > ParallelHashMap
Definition MRMeshFwd.h:605
std::vector< EdgeId > EdgeLoop
Definition MRMeshFwd.h:153
std::vector< std::string > GcodeSource
Definition MRMeshFwd.h:682
RigidXf3f
Definition MRMeshFwd.h:309
WrapType
Definition MREnums.h:18
LineSegm2f
Definition MRMeshFwd.h:340
struct
Definition MRMeshFwd.h:186
Contour
Definition MRObjectLabel.h:20
std::array< VertId, 2 > TwoVertIds
two vertex ids describing an edge with the ends in vertices given by their ids
Definition MRMeshFwd.h:513
std::vector< SurfacePath > SurfacePaths
Definition MRMeshFwd.h:477
std::vector< EdgeLoop > EdgeLoops
Definition MRMeshFwd.h:154
Contour3< float > Contour3f
Definition MRMeshFwd.h:375
class MRMESH_CLASS UndirectedEdgeTag
Definition MRMeshFwd.h:104
constexpr T sqr(T x) noexcept
squared value
Definition MRMeshFwd.h:761
Cylinder3f
Definition MRMeshFwd.h:359
AABBTreePolyline2
Definition MRMeshFwd.h:661
LineSegm< Vector3< T > > LineSegm3
Definition MRMeshFwd.h:346
MapOrHashMap< FaceId, FaceId > FaceMapOrHashMap
Definition MRMeshFwd.h:617
class MRMESH_CLASS ObjTag
Definition MRMeshFwd.h:111
CubicBezierCurve< Vector3< T > > CubicBezierCurve3
Definition MRMeshFwd.h:444
Box< T > MinMax
Definition MRMeshFwd.h:412
Edges
Definition MRObjectMeshHolder.h:19
std::function< bool(FaceId)> FacePredicate
Definition MRMeshFwd.h:566
MinMax< float > MinMaxf
Definition MRMeshFwd.h:413
Contour2< double > Contour2d
Definition MRMeshFwd.h:372
struct MRMESH_CLASS Eq
Definition MRMeshFwd.h:592
class MRMESH_CLASS NodeTag
Definition MRMeshFwd.h:110
Box< Vector3< T > > Box3
Definition MRMeshFwd.h:419
HashSet< VertId > VertHashSet
Definition MRMeshFwd.h:599
TriPointf
Definition MRMeshFwd.h:492
std::function< bool(EdgeId)> EdgePredicate
Definition MRMeshFwd.h:567
typename detail::AffineXf3f::TypeOrPlaceholder< Vector2< T > >::type AffineXf2OrPlaceholder
Definition MRMeshFwd.h:305
Contour2< float > Contour2f
Definition MRMeshFwd.h:373
std::array< UVCoord, 3 > ThreeUVCoords
three UV-coordinates describing texturing of a triangle
Definition MRMeshFwd.h:519
Contours2< double > Contours2d
Definition MRMeshFwd.h:382
Contours3< float > Contours3f
Definition MRMeshFwd.h:385
std::function< bool(UndirectedEdgeId)> UndirectedEdgePredicate
Definition MRMeshFwd.h:568
Ball< Vector2< T > > Ball2
Definition MRMeshFwd.h:434
MapOrHashMap< VertId, VertId > VertMapOrHashMap
Definition MRMeshFwd.h:618
Contours3< double > Contours3d
Definition MRMeshFwd.h:384
SurfacePaths PlaneSections
Definition MRMeshFwd.h:481
MapOrHashMap< EdgeId, EdgeId > EdgeMapOrHashMap
Definition MRMeshFwd.h:619
HashMap< VertId, VertId > VertHashMap
Definition MRMeshFwd.h:608
QuadraticForm2f
Definition MRMeshFwd.h:447
QuadraticForm< Vector3< T > > QuadraticForm3
Definition MRMeshFwd.h:453
class MRMESH_CLASS VoxelTag
Definition MRMeshFwd.h:108
Ball< T > Ball1
Definition MRMeshFwd.h:433
FilterType
Definition MREnums.h:12
Plane3f
Definition MRMeshFwd.h:388
SurfacePath IsoLine
Definition MRMeshFwd.h:478
Vector2f UVCoord
Definition MRMeshFwd.h:510
Triangle3< int > Triangle3i
Definition MRMeshFwd.h:462
Ball< Vector3< T > > Ball3
Definition MRMeshFwd.h:435
Sphere< Vector3< T > > Sphere3
Definition MRMeshFwd.h:328
std::vector< MeshEdgePoint > SurfacePath
Definition MRMeshFwd.h:476
HashMap< UndirectedEdgeId, EdgeId > WholeEdgeHashMap
mapping of whole edges: map[e]->f, map[e.sym()]->f.sym(), where only map[e] for even edges is stored
Definition MRMeshFwd.h:612
class MRMESH_CLASS FaceTag
Definition MRMeshFwd.h:105
class MRMESH_CLASS TextureTag
Definition MRMeshFwd.h:112
class MRMESH_CLASS I
Definition MRMeshFwd.h:141
class MRMESH_CLASS PixelTag
Definition MRMeshFwd.h:107
Line< Vector3< T > > Line3
Definition MRMeshFwd.h:337
Contours< Vector2< T > > Contours2
Definition MRMeshFwd.h:380
overloaded(Ts...) -> overloaded< Ts... >
explicit deduction guide (not needed as of C++20, but still needed in Clang)
U type
Definition MRMeshFwd.h:284
constexpr int sgn(T x) noexcept
sign of given value in { -1, 0, 1 }
Definition MRMeshFwd.h:765
Contours2< float > Contours2f
Definition MRMeshFwd.h:383
RigidScaleXf3f
Definition MRMeshFwd.h:314
std::function< float(EdgeId)> EdgeMetric
Definition MRMeshFwd.h:581
MinMax< double > MinMaxd
Definition MRMeshFwd.h:414
Box< Vector2< T > > Box2
Definition MRMeshFwd.h:418
std::function< bool(EdgeId edgeToCollapse, const Vector3f &newEdgeOrgPos)> PreCollapseCallback
Definition MRMeshFwd.h:570
MinMax< int > MinMaxi
Definition MRMeshFwd.h:415
EdgePoint MeshEdgePoint
Definition MRMeshFwd.h:475
Box< T > Box1
Definition MRMeshFwd.h:417
Contour< Vector2< T > > Contour2
Definition MRMeshFwd.h:370
Contour3< double > Contour3d
Definition MRMeshFwd.h:374
TypedBitSet< Id< T > > TaggedBitSet
Definition MRMeshFwd.h:174
SurfacePath PlaneSection
Definition MRMeshFwd.h:480
HashMap< FaceId, FaceId > FaceHashMap
Definition MRMeshFwd.h:607
std::function< float(FaceId)> FaceMetric
Definition MRMeshFwd.h:580
class MRMESH_CLASS LocaleDomainTag
Definition MRMeshFwd.h:115
MapOrHashMap< UndirectedEdgeId, EdgeId > WholeEdgeMapOrHashMap
mapping of whole edges: map[e]->f, map[e.sym()]->f.sym(), where only map[e] for even edges is stored
Definition MRMeshFwd.h:622
Polyline2
Definition MRMeshFwd.h:656
Triangle3< double > Triangle3d
Definition MRMeshFwd.h:464
Box1i
Definition MRMeshFwd.h:393
Contour< Vector3< T > > Contour3
Definition MRMeshFwd.h:371
HashSet< FaceId > FaceHashSet
No canonical typedefs because phmap::... is not under our control.
Definition MRMeshFwd.h:598
std::vector< EdgeId > EdgePath
Definition MRMeshFwd.h:152
std::array< VertId, 3 > ThreeVertIds
three vertex ids describing a triangle with the corners in vertices given by their ids
Definition MRMeshFwd.h:516
class MRMESH_CLASS VertTag
Definition MRMeshFwd.h:106
std::pair< FaceId, FaceId > FacePair
Definition MRMeshFwd.h:487
constexpr NoInit noInit
Definition MRMeshFwd.h:100
HashSet< EdgeId > EdgeHashSet
Definition MRMeshFwd.h:600
std::pair< UndirectedEdgeId, UndirectedEdgeId > UndirectedEdgePair
Definition MRMeshFwd.h:489
Cone3f
Definition MRMeshFwd.h:364
BestFitParabolaf
Definition MRMeshFwd.h:354
Quaternionf
Definition MRMeshFwd.h:456
std::pair< EdgeId, EdgeId > EdgePair
Definition MRMeshFwd.h:488
AffineXf
Definition MRMeshFwd.h:290
std::function< void(EdgeId e1, EdgeId e)> OnEdgeSplit
Definition MRMeshFwd.h:571
std::function< float(UndirectedEdgeId)> UndirectedEdgeMetric
Definition MRMeshFwd.h:582
AffineXf2f
Definition MRMeshFwd.h:291
Line2f
Definition MRMeshFwd.h:331
constexpr auto lerp(V v0, V v1, T t) noexcept
Linear interpolation: returns v0 when t==0 and v1 when t==1.
Definition MRMeshFwd.h:777
constexpr bool dependent_false
Definition MRMeshFwd.h:780
Triangle3< float > Triangle3f
Definition MRMeshFwd.h:463
SurfacePaths IsoLines
Definition MRMeshFwd.h:479
constexpr auto translate_noop(const char *str) noexcept
special no-op inline functions to mark string literal as translatable
Definition MRMeshFwd.h:806
class MRMESH_CLASS EdgeTag
Definition MRMeshFwd.h:103
AffineXf< Vector3< T > > AffineXf3
Definition MRMeshFwd.h:297
std::vector< Contour< V > > Contours
Definition MRMeshFwd.h:379
Polyline2ProjectionWithOffsetResult
Definition MRMeshFwd.h:674
HashMap< EdgeId, EdgeId > EdgeHashMap
Definition MRMeshFwd.h:609
struct MRMESH_CLASS Hash
Definition MRMeshFwd.h:592
std::nullptr_t type
Definition MRMeshFwd.h:301
phmap::parallel_flat_hash_set< T, Hash, Eq > ParallelHashSet
Definition MRMeshFwd.h:595
SegmPointf
Definition MRMeshFwd.h:469
Parabolaf
Definition MRMeshFwd.h:349
MapOrHashMap< UndirectedEdgeId, UndirectedEdgeId > UndirectedEdgeMapOrHashMap
Definition MRMeshFwd.h:620
std::pair< VertId, VertId > VertPair
Definition MRMeshFwd.h:486
typename detail::AffineXf3f::TypeOrPlaceholder< Vector3< T > >::type AffineXf3OrPlaceholder
Definition MRMeshFwd.h:306
HashMap< UndirectedEdgeId, UndirectedEdgeId > UndirectedEdgeHashMap
Definition MRMeshFwd.h:610
Contours< Vector3< T > > Contours3
Definition MRMeshFwd.h:381
class MRMESH_CLASS RegionTag
Definition MRMeshFwd.h:109
Sphere2f
Definition MRMeshFwd.h:322
class MRMESH_CLASS GraphVertTag
Definition MRMeshFwd.h:113
phmap::flat_hash_map< K, V, Hash, Eq > HashMap
Definition MRMeshFwd.h:603
class MRMESH_CLASS GraphEdgeTag
Definition MRMeshFwd.h:114
Reorder
determines how points to be ordered
Definition MREnums.h:26
std::optional< T > distanceSq(const Plane3< T > &plane1, const Plane3< T > &plane2, T errorLimit=std::numeric_limits< T >::epsilon() *T(20))
Definition MRIntersection.h:90
std::optional< T > distance(const Plane3< T > &plane1, const Plane3< T > &plane2, T errorLimit=std::numeric_limits< T >::epsilon() *T(20))
Definition MRIntersection.h:104
Definition MRMeshFwd.h:803
Building topologies by triangles.
Definition MRIdentifyVertices.h:16
Definition MRIOFormatsRegistry.h:361
Definition MRMeshFwd.h:280
Definition MRFinally.h:34
only for bindings generation
Definition MRCameraOrientationPlugin.h:8
triangulations for all points, with easy access by VertId
Definition MRLocalTriangulations.h:51
flat map: I -> T
Definition MRBuffer.h:136
a ball = points surrounded by a sphere in arbitrary space with vector type V
Definition MRBall.h:15
Box given by its min- and max- corners.
Definition MRBox.h:27
mapping among elements of source point cloud, from which a part is taken, and target (this) point clo...
Definition MRCloudPartMapping.h:13
Cubic Bezier curve.
Definition MRBezier.h:16
options determining computation of distance from a point to a mesh
Definition MRDistanceToMeshOptions.h:14
Definition MREdgeLengthMesh.h:16
two edge-points (e.g. representing collision point of two edges)
Definition MREdgePoint.h:53
encodes a point on an edge of mesh or of polyline
Definition MREdgePoint.h:14
Represents a segment on one edge.
Definition MREdgePoint.h:64
a pair of faces
Definition MRFaceFace.h:14
Definition MRFillHoleNicely.h:59
Parameters structure for MR::fillHole Structure has some options to control MR::fillHole.
Definition MRMeshFillHole.h:27
Definition MRSurfacePath.h:20
settings defining regular grid, where each quadrangular cell is split on two triangles in one of two ...
Definition MRGridSettings.h:14
Definition MRIntersectionPrecomputes2.h:35
Definition MRIntersectionPrecomputes.h:117
Definition MRIteratorRange.h:13
a segment of straight dimensional line
Definition MRLineSegm.h:15
ObjectMeshData and additional information from mesh importer.
Definition MRLoadedMeshData.h:15
result of loading (e.g. from a file) as a number of objects
Definition MRLoadedObjects.h:36
Definition MRMapOrHashMap.h:19
Definition MRMarkedContour.h:14
Definition MRMatrix2.h:24
Definition MRMatrix3.h:24
Definition MRMatrix4.h:25
Definition MRMinMaxArg.h:49
Definition MRMeshIntersect.h:18
an object and its transformation to global space with other objects
Definition MRMeshOrPoints.h:109
Definition MRMeshProject.h:18
Definition MRMeshPart.h:15
Definition MRMeshTexture.h:13
Definition MRMeshTriPoint.h:26
Definition MRMinMaxArg.h:16
Definition MRMinMaxArg.h:82
this class is similar to T, but does not make default initialization of the fields for best performan...
Definition MRNoDefInit.h:14
Definition MRMeshFwd.h:99
mesh and its per-element attributes for ObjectMeshHolder
Definition MRObjectMeshData.h:17
Definition MRBuffer.h:144
Represents quadratic function f(x) = a*x*x + b*x + c.
Definition MRParabola.h:14
mapping among elements of source mesh, from which a part is taken, and target mesh
Definition MRPartMapping.h:13
represents full point cloud (if region is nullptr) or some portion of point cloud (if region pointer ...
Definition MRPointCloudPart.h:13
Definition MRPointCloud.h:17
a point located on some mesh's face
Definition MRPointOnFace.h:16
Definition MRPointOnObject.h:21
Definition MRPointsProject.h:15
Definition MRPolylineProject.h:15
Definition MRPolylineProject.h:73
Definition MRPolyline.h:18
Definition MRQuaternion.h:16
Definition MRRigidScaleXf3.h:15
Definition MRRigidXf3.h:16
determines how to save points/lines/mesh
Definition MRSaveSettings.h:20
encodes a point inside a line segment using relative distance in [0,1]
Definition MRSegmPoint.h:17
options determining computation of signed distance from a point to a mesh
Definition MRDistanceToMeshOptions.h:40
describes a number of local triangulations of some points (e.g. assigned to a thread)
Definition MRLocalTriangulations.h:43
Definition MRSymMatrix2.h:17
Definition MRSymMatrix3.h:18
Definition MRSymMatrix4.h:16
Definition MRTbbTaskArenaAndGroup.h:16
struct to determine transparent rendering mode
Definition MRRenderModelParameters.h:13
Definition MRTriMesh.h:16
encodes a point inside a triangle using barycentric coordinates
Definition MRTriPoint.h:19
a pair of undirected edges
Definition MRFaceFace.h:24
Definition MRUnorientedTriangle.h:16
Definition MRVector2.h:29
Definition MRVector3.h:33
Definition MRVector4.h:26
Definition MRMeshFwd.h:301
Definition MRMeshFwd.h:282
Definition MRMeshFwd.h:783