MeshLib C++ Docs
Loading...
Searching...
No Matches
MRMeshFwd.h
Go to the documentation of this file.
1#pragma once
2
3#include "config.h"
4
5#include "MRMesh/MRMacros.h"
7#include "MRPch/MRBindingMacros.h"
8
24#if defined _MSC_VER
25 #if !defined MR_ITERATOR_DEBUG_LEVEL
26 #define MR_ITERATOR_DEBUG_LEVEL 0
27 #endif
29 #if !defined _ITERATOR_DEBUG_LEVEL
30 #define _ITERATOR_DEBUG_LEVEL MR_ITERATOR_DEBUG_LEVEL
31 #endif
32 #if _ITERATOR_DEBUG_LEVEL != MR_ITERATOR_DEBUG_LEVEL
33 #error _ITERATOR_DEBUG_LEVEL is inconsistent with MeshLib
34 #endif
35#endif
36
38#ifdef _MSC_VER
39#define MR_CPP_STANDARD_DATE _MSVC_LANG
40#else
41#define MR_CPP_STANDARD_DATE __cplusplus
42#endif
48#if MR_CPP_STANDARD_DATE < 201709 && !defined(__CUDACC__)
49#error Must enable C++20 or newer!
50#endif
57
58
59#if defined(__GNUC__) && (__GNUC__ >= 13 && __GNUC__ <= 15)
60 #pragma GCC diagnostic push
61 #pragma GCC diagnostic ignored "-Warray-bounds"
62 #pragma GCC diagnostic ignored "-Wstringop-overflow"
63#endif
64
65#include <array>
66
67#if defined(__GNUC__) && (__GNUC__ >= 13 && __GNUC__ <= 15)
68 #pragma GCC diagnostic pop
69#endif
70
71#include <vector>
72#include <string>
73#include <parallel_hashmap/phmap_fwd_decl.h>
74#include <functional>
75#include <cstdint>
76
77#ifdef _WIN32
78# ifdef MRMesh_EXPORTS
79# define MRMESH_API __declspec(dllexport)
80# else
81# define MRMESH_API __declspec(dllimport)
82# endif
83# define MRMESH_CLASS
84#else
85# define MRMESH_API __attribute__((visibility("default")))
89# ifdef __clang__
90# define MRMESH_CLASS __attribute__((type_visibility("default")))
91# else
92# define MRMESH_CLASS __attribute__((visibility("default")))
93# endif
94#endif
95
96namespace MR
97{
100
101
102struct NoInit {};
103inline constexpr NoInit noInit;
104template <typename T> struct MRMESH_CLASS NoDefInit;
105
119
120MR_CANONICAL_TYPEDEFS( (template <typename T> class MRMESH_CLASS), Id,
121 ( EdgeId, Id<EdgeTag> )
122 ( UndirectedEdgeId, Id<UndirectedEdgeTag> )
123 ( FaceId, Id<FaceTag> )
124 ( VertId, Id<VertTag> )
125 ( PixelId, Id<PixelTag> )
126 ( VoxelId, Id<VoxelTag> )
127 ( RegionId, Id<RegionTag> )
128 ( NodeId, Id<NodeTag> )
129 ( ObjId, Id<ObjTag> )
130 ( TextureId, Id<TextureTag> )
131 ( GraphVertId, Id<GraphVertTag> )
132 ( GraphEdgeId, Id<GraphEdgeTag> )
133 ( LocaleDomainId, Id<LocaleDomainTag> )
134)
137template <> class MR_BIND_PREFERRED_NAME(MR::EdgeId) Id<EdgeTag>;
138template <> class MR_BIND_PREFERRED_NAME(MR::VoxelId) Id<VoxelTag>;
139
140MR_CANONICAL_TYPEDEFS( (template <typename T> class MRMESH_CLASS), NoInitId,
141 ( NoInitNodeId, NoInitId<NodeTag> )
142)
143
144template <typename T, typename I = size_t> class MRMESH_CLASS Buffer;
146
147class ViewportId;
148class ViewportMask;
149template<typename T> class ViewportProperty;
150
154
155using EdgePath = std::vector<EdgeId>;
156using EdgeLoop = std::vector<EdgeId>;
157using EdgeLoops = std::vector<EdgeLoop>;
158
160
161MR_CANONICAL_TYPEDEFS( (template <typename I> class MRMESH_CLASS), TypedBitSet,
162 ( FaceBitSet, TypedBitSet<FaceId> )
163 ( VertBitSet, TypedBitSet<VertId> )
164 ( EdgeBitSet, TypedBitSet<EdgeId> )
165 ( UndirectedEdgeBitSet, TypedBitSet<UndirectedEdgeId> )
166 ( PixelBitSet, TypedBitSet<PixelId> )
167 ( VoxelBitSet, TypedBitSet<VoxelId> )
168 ( RegionBitSet, TypedBitSet<RegionId> )
169 ( NodeBitSet, TypedBitSet<NodeId> )
170 ( ObjBitSet, TypedBitSet<ObjId> )
171 ( TextureBitSet, TypedBitSet<TextureId> )
172 ( GraphVertBitSet, TypedBitSet<GraphVertId> )
173 ( GraphEdgeBitSet, TypedBitSet<GraphEdgeId> )
174)
175
176template<typename T>
178
179MR_CANONICAL_TYPEDEFS( (template <typename T> class MRMESH_CLASS), SetBitIteratorT,
180 ( SetBitIterator, SetBitIteratorT<BitSet> )
181 ( FaceSetBitIterator, SetBitIteratorT<FaceBitSet> )
182 ( VertSetBitIterator, SetBitIteratorT<VertBitSet> )
183 ( EdgeSetBitIterator, SetBitIteratorT<EdgeBitSet> )
184 ( UndirectedEdgeSetBitIterator, SetBitIteratorT<UndirectedEdgeBitSet> )
185)
186
188
189MR_CANONICAL_TYPEDEFS( (template <typename T> struct), MRMESH_CLASS Vector2,
190 ( Vector2b, Vector2<bool> )
191 ( Vector2i, Vector2<int> )
192 ( Vector2i64, Vector2<std::int64_t> )
193 ( Vector2f, Vector2<float> )
194 ( Vector2d, Vector2<double> )
195)
196
197MR_CANONICAL_TYPEDEFS( (template <typename T> struct), MRMESH_CLASS Vector3,
198 ( Vector3b, Vector3<bool> )
199 ( Vector3i, Vector3<int> )
200 ( Vector3i64, Vector3<std::int64_t> )
201 ( Vector3f, Vector3<float> )
202 ( Vector3d, Vector3<double> )
203)
204
205MR_CANONICAL_TYPEDEFS( (template <typename T> struct), Vector4,
206 ( Vector4b, Vector4<bool> )
207 ( Vector4i, Vector4<int> )
208 ( Vector4i64, Vector4<std::int64_t> )
209 ( Vector4f, Vector4<float> )
210 ( Vector4d, Vector4<double> )
211)
212#if !MR_PARSING_FOR_ANY_BINDINGS
213using Vector4ll [[deprecated("Use `Vector4i64` instead.")]] = Vector4<long long>;
214#endif
215
216MR_CANONICAL_TYPEDEFS( (template <typename T> struct), Matrix2,
217 ( Matrix2b, Matrix2<bool> )
218 ( Matrix2i, Matrix2<int> )
219 ( Matrix2i64, Matrix2<std::int64_t> )
220 ( Matrix2f, Matrix2<float> )
221 ( Matrix2d, Matrix2<double> )
222)
223#if !MR_PARSING_FOR_ANY_BINDINGS
224using Matrix2ll [[deprecated("Use `Matrix2i64` instead.")]] = Matrix2<long long>;
225#endif
226
227MR_CANONICAL_TYPEDEFS( (template <typename T> struct), Matrix3,
228 ( Matrix3b, Matrix3<bool> )
229 ( Matrix3i, Matrix3<int> )
230 ( Matrix3i64, Matrix3<std::int64_t> )
231 ( Matrix3f, Matrix3<float> )
232 ( Matrix3d, Matrix3<double> )
233)
234#if !MR_PARSING_FOR_ANY_BINDINGS
235using Matrix3ll [[deprecated("Use `Matrix3i64` instead.")]] = Matrix3<long long>;
236#endif
237
238MR_CANONICAL_TYPEDEFS( (template <typename T> struct), Matrix4,
239 ( Matrix4b, Matrix4<bool> )
240 ( Matrix4i, Matrix4<int> )
241 ( Matrix4i64, Matrix4<std::int64_t> )
242 ( Matrix4f, Matrix4<float> )
243 ( Matrix4d, Matrix4<double> )
244)
245#if !MR_PARSING_FOR_ANY_BINDINGS
246using Matrix4ll [[deprecated("Use `Matrix4i64` instead.")]] = Matrix4<long long>;
247#endif
248
249MR_CANONICAL_TYPEDEFS( (template <typename T> struct), SymMatrix2,
250 ( SymMatrix2b, SymMatrix2<bool> )
251 ( SymMatrix2i, SymMatrix2<int> )
252 ( SymMatrix2i64, SymMatrix2<std::int64_t> )
253 ( SymMatrix2f, SymMatrix2<float> )
254 ( SymMatrix2d, SymMatrix2<double> )
255)
256#if !MR_PARSING_FOR_ANY_BINDINGS
257using SymMatrix2ll [[deprecated("Use `SymMatrix2i64` instead.")]] = SymMatrix2<long long>;
258#endif
259
260MR_CANONICAL_TYPEDEFS( (template <typename T> struct), SymMatrix3,
261 ( SymMatrix3b, SymMatrix3<bool> )
262 ( SymMatrix3i, SymMatrix3<int> )
263 ( SymMatrix3i64, SymMatrix3<std::int64_t> )
264 ( SymMatrix3f, SymMatrix3<float> )
265 ( SymMatrix3d, SymMatrix3<double> )
266)
267#if !MR_PARSING_FOR_ANY_BINDINGS
268using SymMatrix3ll [[deprecated("Use `SymMatrix3i64` instead.")]] = SymMatrix3<long long>;
269#endif
270
271MR_CANONICAL_TYPEDEFS( (template <typename T> struct), SymMatrix4,
272 ( SymMatrix4b, SymMatrix4<bool> )
273 ( SymMatrix4i, SymMatrix4<int> )
274 ( SymMatrix4i64, SymMatrix4<std::int64_t> )
275 ( SymMatrix4f, SymMatrix4<float> )
276 ( SymMatrix4d, SymMatrix4<double> )
277)
278#if !MR_PARSING_FOR_ANY_BINDINGS
279using SymMatrix4ll [[deprecated("Use `SymMatrix4i64` instead.")]] = SymMatrix4<long long>;
280#endif
281
283{
284 template <typename T>
285 struct VectorElemType {};
286 template <template <typename> typename T, typename U>
287 struct VectorElemType<T<U>> { using type = U; };
288
289 template <typename T>
290 static constexpr bool IsValidTemplateArg = std::is_floating_point_v<typename VectorElemType<T>::type>;
291}
292
293MR_CANONICAL_TYPEDEFS( (template <typename V> MR_REQUIRES_IF_SUPPORTED( detail::AffineXf3f::IsValidTemplateArg<V> ) struct), AffineXf,
295 ( AffineXf2d, AffineXf<Vector2<double>> )
296 ( AffineXf3f, AffineXf<Vector3<float>> )
297 ( AffineXf3d, AffineXf<Vector3<double>> )
298)
299template <typename T> using AffineXf2 = AffineXf<Vector2<T>>;
300template <typename T> using AffineXf3 = AffineXf<Vector3<T>>;
301
302namespace detail::AffineXf3f
303{
304 template <typename T, typename = void> struct TypeOrPlaceholder { using type = std::nullptr_t; };
305 template <typename T> struct TypeOrPlaceholder<T, std::enable_if_t<IsValidTemplateArg<T>>> { using type = AffineXf<T>; };
306}
307
310
311MR_CANONICAL_TYPEDEFS( (template <typename T> struct), RigidXf3,
313 ( RigidXf3d, RigidXf3<double> )
314)
315
318 ( RigidScaleXf3d, RigidScaleXf3<double> )
319)
320
323
324MR_CANONICAL_TYPEDEFS( (template <typename T> struct), Sphere,
326 ( Sphere2d, Sphere<Vector2<double>> )
327 ( Sphere3f, Sphere<Vector3<float>> )
328 ( Sphere3d, Sphere<Vector3<double>> )
329)
330template <typename T> using Sphere2 = Sphere<Vector2<T>>;
331template <typename T> using Sphere3 = Sphere<Vector3<T>>;
332
333MR_CANONICAL_TYPEDEFS( (template <typename V> struct), Line,
334 ( Line2f, Line<Vector2<float>> )
335 ( Line2d, Line<Vector2<double>> )
336 ( Line3f, Line<Vector3<float>> )
337 ( Line3d, Line<Vector3<double>> )
338)
339template <typename T> using Line2 = Line<Vector2<T>>;
340template <typename T> using Line3 = Line<Vector3<T>>;
341
342MR_CANONICAL_TYPEDEFS( (template <typename V> struct), LineSegm,
344 ( LineSegm2d, LineSegm<Vector2<double>> )
345 ( LineSegm3f, LineSegm<Vector3<float>> )
346 ( LineSegm3d, LineSegm<Vector3<double>> )
347)
348template <typename T> using LineSegm2 = LineSegm<Vector2<T>>;
349template <typename T> using LineSegm3 = LineSegm<Vector3<T>>;
350
351MR_CANONICAL_TYPEDEFS( (template <typename T> struct), Parabola,
352 ( Parabolaf, Parabola<float> )
353 ( Parabolad, Parabola<double> )
354)
355
356MR_CANONICAL_TYPEDEFS( (template <typename T> class), BestFitParabola,
358 ( BestFitParabolad, BestFitParabola<double> )
359)
360
361MR_CANONICAL_TYPEDEFS( (template <typename T> class), Cylinder3,
363 ( Cylinder3d, Cylinder3<double> )
364)
365
366MR_CANONICAL_TYPEDEFS( (template <typename T> class), Cone3,
367 ( Cone3f, Cone3<float> )
368 ( Cone3d, Cone3<double> )
369)
370
372template <typename V> using Contour = std::vector<V>;
373template <typename T> using Contour2 = Contour<Vector2<T>>;
374template <typename T> using Contour3 = Contour<Vector3<T>>;
375using Contour2d = Contour2<double>;
376using Contour2f = Contour2<float>;
377using Contour3d = Contour3<double>;
378using Contour3f = Contour3<float>;
379
381
382template <typename V> using Contours = std::vector<Contour<V>>;
383template <typename T> using Contours2 = Contours<Vector2<T>>;
384template <typename T> using Contours3 = Contours<Vector3<T>>;
385using Contours2d = Contours2<double>;
386using Contours2f = Contours2<float>;
387using Contours3d = Contours3<double>;
388using Contours3f = Contours3<float>;
389
390MR_CANONICAL_TYPEDEFS( (template <typename T> struct), Plane3,
391 ( Plane3f, Plane3<float> )
392 ( Plane3d, Plane3<double> )
393)
394
396 ( Box1i, Box<int> )
397 ( Box1i64, Box<std::int64_t> )
398 ( Box1f, Box<float> )
399 ( Box1d, Box<double> )
400 ( Box2i, Box<Vector2<int>> )
401 ( Box2i64, Box<Vector2<std::int64_t>> )
402 ( Box2f, Box<Vector2<float>> )
403 ( Box2d, Box<Vector2<double>> )
404 ( Box3i, Box<Vector3<int>> )
405 ( Box3i64, Box<Vector3<std::int64_t>> )
406 ( Box3f, Box<Vector3<float>> )
407 ( Box3d, Box<Vector3<double>> )
408)
409#if !MR_PARSING_FOR_ANY_BINDINGS
410using Box1ll [[deprecated("Use `Box1i64` instead.")]] = Box<long long>;
411using Box2ll [[deprecated("Use `Box2i64` instead.")]] = Box<Vector2<long long>>;
412using Box3ll [[deprecated("Use `Box3i64` instead.")]] = Box<Vector3<long long>>;
413#endif
414
415template <typename T> using MinMax = Box<T>;
419
420template <typename T> using Box1 = Box<T>;
421template <typename T> using Box2 = Box<Vector2<T>>;
422template <typename T> using Box3 = Box<Vector3<T>>;
423
424template<typename T, typename I> struct MinArg;
425template<typename T, typename I> struct MaxArg;
426template<typename T, typename I> struct MinMaxArg;
427
428MR_CANONICAL_TYPEDEFS( (template <typename V> struct MRMESH_CLASS), Ball,
429 ( Ball1f, Ball<float> )
430 ( Ball1d, Ball<double> )
431 ( Ball2f, Ball<Vector2<float>> )
432 ( Ball2d, Ball<Vector2<double>> )
433 ( Ball3f, Ball<Vector3<float>> )
434 ( Ball3d, Ball<Vector3<double>> )
435)
436template <typename T> using Ball1 = Ball<T>;
437template <typename T> using Ball2 = Ball<Vector2<T>>;
438template <typename T> using Ball3 = Ball<Vector3<T>>;
439
441 ( CubicBezierCurve2f, CubicBezierCurve<Vector2<float>> )
442 ( CubicBezierCurve2d, CubicBezierCurve<Vector2<double>> )
443 ( CubicBezierCurve3f, CubicBezierCurve<Vector3<float>> )
444 ( CubicBezierCurve3d, CubicBezierCurve<Vector3<double>> )
445)
446template <typename T> using CubicBezierCurve2 = CubicBezierCurve<Vector2<T>>;
447template <typename T> using CubicBezierCurve3 = CubicBezierCurve<Vector3<T>>;
448
451 ( QuadraticForm2d, QuadraticForm<Vector2<double>> )
452 ( QuadraticForm3f, QuadraticForm<Vector3<float>> )
453 ( QuadraticForm3d, QuadraticForm<Vector3<double>> )
454)
455template <typename T> using QuadraticForm2 = QuadraticForm<Vector2<T>>;
456template <typename T> using QuadraticForm3 = QuadraticForm<Vector3<T>>;
457
458MR_CANONICAL_TYPEDEFS( (template <typename T> struct), Quaternion,
460 ( Quaterniond, Quaternion<double> )
461)
462
464template <typename T> using Triangle3 = std::array<Vector3<T>, 3>;
465using Triangle3i = Triangle3<int>;
466using Triangle3f = Triangle3<float>;
467using Triangle3d = Triangle3<double>;
468
469class PointAccumulator;
470
471MR_CANONICAL_TYPEDEFS( (template <typename T> struct), SegmPoint,
473 ( SegmPointd, SegmPoint<double> )
474)
475
479using SurfacePath = std::vector<MeshEdgePoint>;
480using SurfacePaths = std::vector<SurfacePath>;
487class Laplacian;
488
489using VertPair = std::pair<VertId, VertId>;
490using FacePair = std::pair<FaceId, FaceId>;
491using EdgePair = std::pair<EdgeId, EdgeId>;
492using UndirectedEdgePair = std::pair<UndirectedEdgeId, UndirectedEdgeId>;
493
494MR_CANONICAL_TYPEDEFS( (template <typename T> struct), TriPoint,
495 ( TriPointf, TriPoint<float> )
496 ( TriPointd, TriPoint<double> )
497)
498
507template <typename T> struct IntersectionPrecomputes;
508
509template <typename I> struct IteratorRange;
510
513using UVCoord = Vector2f;
514
516using TwoVertIds = std::array<VertId, 2>;
517
519using ThreeVertIds = std::array<VertId, 3>;
520
522using ThreeUVCoords = std::array<UVCoord, 3>;
523
525
526MR_CANONICAL_TYPEDEFS( (template <typename T, typename I> class MRMESH_CLASS), Vector,
528 ( Edges, Vector<TwoVertIds, UndirectedEdgeId> )
529
531 ( Triangulation, Vector<ThreeVertIds, FaceId> )
532
534 ( TriCornerUVCoords, Vector<ThreeUVCoords, FaceId> )
535
536 ( Dipoles, Vector<Dipole, NodeId> )
537
538 ( FaceMap, Vector<FaceId, FaceId> )
539 ( VertMap, Vector<VertId, VertId> )
540 ( EdgeMap, Vector<EdgeId, EdgeId> )
541 ( UndirectedEdgeMap, Vector<UndirectedEdgeId, UndirectedEdgeId> )
542 ( ObjMap, Vector<ObjId, ObjId> )
543
545 ( WholeEdgeMap, Vector<EdgeId, UndirectedEdgeId> )
546 ( UndirectedEdge2RegionMap, Vector<RegionId, UndirectedEdgeId> )
547 ( Face2RegionMap, Vector<RegionId, FaceId> )
548 ( Vert2RegionMap, Vector<RegionId, VertId> )
549
550 ( VertCoords, Vector<Vector3f, VertId> )
551 ( VertCoords2, Vector<Vector2f, VertId> )
552 ( VertNormals, Vector<Vector3f, VertId> )
553 ( VertUVCoords, Vector<UVCoord, VertId> )
554 ( FaceNormals, Vector<Vector3f, FaceId> )
555
556 ( TexturePerFace, Vector<TextureId, FaceId> )
557 ( VertColors, Vector<Color, VertId> )
558 ( FaceColors, Vector<Color, FaceId> )
559 ( EdgeColors, Vector<Color, EdgeId> )
560 ( UndirectedEdgeColors, Vector<Color, UndirectedEdgeId> )
561
562 ( VertScalars, Vector<float, VertId> )
563 ( FaceScalars, Vector<float, FaceId> )
564 ( EdgeScalars, Vector<float, EdgeId> )
565 ( UndirectedEdgeScalars, Vector<float, UndirectedEdgeId> )
566)
567
568using VertPredicate = std::function<bool( VertId )>;
569using FacePredicate = std::function<bool( FaceId )>;
570using EdgePredicate = std::function<bool( EdgeId )>;
571using UndirectedEdgePredicate = std::function<bool( UndirectedEdgeId )>;
572
573using PreCollapseCallback = std::function<bool( EdgeId edgeToCollapse, const Vector3f& newEdgeOrgPos )>;
574using OnEdgeSplit = std::function<void( EdgeId e1, EdgeId e )>;
575
576template <typename T>
577[[nodiscard]] inline bool contains( const std::function<bool( Id<T> )> & pred, Id<T> id )
578{
579 return id.valid() && ( !pred || pred( id ) );
580}
581
582using VertMetric = std::function<float( VertId )>;
583using FaceMetric = std::function<float( FaceId )>;
584using EdgeMetric = std::function<float( EdgeId )>;
585using UndirectedEdgeMetric = std::function<float( UndirectedEdgeId )>;
586
587MR_CANONICAL_TYPEDEFS( (template <typename T, typename I> struct MRMESH_CLASS), BMap,
588 ( FaceBMap, BMap<FaceId, FaceId> )
589 ( VertBMap, BMap<VertId, VertId> )
590 ( EdgeBMap, BMap<EdgeId, EdgeId> )
591 ( UndirectedEdgeBMap, BMap<UndirectedEdgeId, UndirectedEdgeId> )
592 ( WholeEdgeBMap, BMap<EdgeId, UndirectedEdgeId> )
593)
594
595template <typename T, typename Hash = phmap::priv::hash_default_hash<T>, typename Eq = phmap::priv::hash_default_eq<T>>
596using HashSet = phmap::flat_hash_set<T, Hash, Eq>;
597template <typename T, typename Hash = phmap::priv::hash_default_hash<T>, typename Eq = phmap::priv::hash_default_eq<T>>
598using ParallelHashSet = phmap::parallel_flat_hash_set<T, Hash, Eq>;
599
601using FaceHashSet = HashSet<FaceId>;
602using VertHashSet = HashSet<VertId>;
603using EdgeHashSet = HashSet<EdgeId>;
604
605template <typename K, typename V, typename Hash = phmap::priv::hash_default_hash<K>, typename Eq = phmap::priv::hash_default_eq<K>>
606using HashMap = phmap::flat_hash_map<K, V, Hash, Eq>;
607template <typename K, typename V, typename Hash = phmap::priv::hash_default_hash<K>, typename Eq = phmap::priv::hash_default_eq<K>>
608using ParallelHashMap = phmap::parallel_flat_hash_map<K, V, Hash, Eq>;
609
610using FaceHashMap = HashMap<FaceId, FaceId>;
611using VertHashMap = HashMap<VertId, VertId>;
612using EdgeHashMap = HashMap<EdgeId, EdgeId>;
613using UndirectedEdgeHashMap = HashMap<UndirectedEdgeId, UndirectedEdgeId>;
615using WholeEdgeHashMap = HashMap<UndirectedEdgeId, EdgeId>;
616
617template <typename K, typename V>
619
620using FaceMapOrHashMap = MapOrHashMap<FaceId, FaceId>;
621using VertMapOrHashMap = MapOrHashMap<VertId, VertId>;
622using EdgeMapOrHashMap = MapOrHashMap<EdgeId, EdgeId>;
623using UndirectedEdgeMapOrHashMap = MapOrHashMap<UndirectedEdgeId, UndirectedEdgeId>;
625using WholeEdgeMapOrHashMap = MapOrHashMap<UndirectedEdgeId, EdgeId>;
626
627template <typename I> class UnionFind;
628template <typename T, typename I, typename P> class Heap;
629
647
649 ( MeshPart, MeshRegion<FaceTag> )
650 ( MeshVertPart, MeshRegion<VertTag> )
651)
652
653template<typename T> class UniqueThreadSafeOwner;
654template<typename T> class SharedThreadSafeOwner;
655
656class PolylineTopology;
657
658MR_CANONICAL_TYPEDEFS( (template<typename V> struct), Polyline,
659 ( Polyline2, Polyline<Vector2f> )
660 ( Polyline3, Polyline<Vector3f> )
661)
662
665 ( AABBTreePolyline3, AABBTreePolyline<Vector3f> )
666)
667
668template<typename T> struct IntersectionPrecomputes;
669template<typename T> struct IntersectionPrecomputes2;
670
671MR_CANONICAL_TYPEDEFS( (template<typename V> struct [[nodiscard]]), PolylineProjectionResult,
672 ( PolylineProjectionResult2, PolylineProjectionResult<Vector2f> )
673 ( PolylineProjectionResult3, PolylineProjectionResult<Vector3f> )
674)
675
678 ( PolylineProjectionWithOffsetResult3, PolylineProjectionWithOffsetResult<Vector3f> )
679)
680
681class DistanceMap;
684
685using GcodeSource = std::vector<std::string>;
686
687class IRenderObject;
692class Object;
693class SceneRootObject;
694class VisualObject;
695class ObjectMeshHolder;
696class ObjectMesh;
700class ObjectPoints;
702class ObjectLines;
704class ObjectLabel;
705class ObjectGcode;
706class PointObject;
707class LineObject;
708class CircleObject;
709class PlaneObject;
710class SphereObject;
711class CylinderObject;
712class ConeObject;
713
715
718
719class HistoryAction;
726class ChangeMeshAction;
734class ChangeXfAction;
736class SwapRootAction;
737
738MR_CANONICAL_TYPEDEFS( (template <typename Tag> class MRMESH_CLASS), ColorMapAggregator,
739 ( VertColorMapAggregator, ColorMapAggregator<VertTag> )
740 ( UndirEdgeColorMapAggregator, ColorMapAggregator<UndirectedEdgeTag> )
741 ( FaceColorMapAggregator, ColorMapAggregator<FaceTag> )
742)
743
744template<typename T>
745class FewSmallest;
746
747class Graph;
748class WatershedGraph;
749
751
753namespace SceneSave { struct Settings; }
754namespace ObjectSave { struct Settings; }
755
759typedef std::function<bool( float )> ProgressCallback;
760
761enum class FilterType : char;
762enum class WrapType : char;
763enum class Reorder : char;
764
765struct TransparencyMode;
766
768template <typename T>
769constexpr inline auto sqr( T x ) noexcept -> decltype( x * x ) { return x * x; }
770
772template <typename T>
773constexpr inline int sgn( T x ) noexcept { return x > 0 ? 1 : ( x < 0 ? -1 : 0 ); }
774
776template <typename T>
777constexpr inline T distance( T x, T y ) noexcept { return x >= y ? x - y : y - x; }
778
781template <typename T>
782constexpr inline auto distanceSq( T x, T y ) noexcept -> decltype( ( x - y ) * ( x - y ) ) { return sqr( x - y ); }
783
785template <typename V, typename T>
786constexpr inline auto lerp( V v0, V v1, T t ) noexcept { return ( 1 - t ) * v0 + t * v1; }
787
788template<typename...>
789inline constexpr bool dependent_false = false;
790
791template<class... Ts>
792struct overloaded : Ts... { using Ts::operator()...; };
793
795template<class... Ts>
796overloaded(Ts...) -> overloaded<Ts...>;
797
800class IPointsProjector;
801
802namespace MeshBuilder
803{
804
805struct BuildSettings;
806struct Triangle;
807struct VertDuplication;
808
809}
810
811namespace Locale
812{
813
815constexpr inline auto translate_noop( const char* str ) noexcept { return str; }
816constexpr inline auto translate_noop( const char* ctx, const char* str ) noexcept { (void)ctx; return str; }
817constexpr inline auto translate_noop( const char* single, const char* plural, std::int64_t n ) noexcept { return n == 1 ? single : plural; }
818constexpr 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; }
819
820}
821
822}
823
824#ifdef __cpp_lib_unreachable
825# define MR_UNREACHABLE std::unreachable();
826# define MR_UNREACHABLE_NO_RETURN std::unreachable();
827#else
828# ifdef __GNUC__
829# define MR_UNREACHABLE __builtin_unreachable();
830# define MR_UNREACHABLE_NO_RETURN __builtin_unreachable();
831# else
832# include <cassert>
833# define MR_UNREACHABLE { assert( false ); return {}; }
834# define MR_UNREACHABLE_NO_RETURN assert( false );
835# endif
836#endif
837
838#ifndef MR_NO_I18N_MACROS
839#define _t( ... ) MR::Locale::translate_noop( __VA_ARGS__ )
840#endif
#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:92
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:54
accumulates a number of (x,y) points to find the best-least-squares parabola approximating them
Definition MRBestFitParabola.h:15
Definition MRBitSet.h:69
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:17
Undo action for ObjectMesh creases.
Definition MRChangeSelectionAction.h:123
Undo action for ObjectMeshData change.
Definition MRChangeMeshDataAction.h:15
Undo action for ObjectMesh edge selection.
Definition MRChangeSelectionAction.h:69
Undo action for ObjectMesh face selection.
Definition MRChangeSelectionAction.h:15
Undo action for ObjectMesh points only (not topology) change.
Definition MRChangeMeshAction.h:191
Undo action for ObjectMesh topology only (not points) change.
Definition MRChangeMeshAction.h:255
Definition MRChangeObjectAction.h:17
Undo action for ObjectPoints point selection.
Definition MRChangeSelectionAction.h:177
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
Definition MRIRenderObject.h:141
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:17
Definition MRObjectGcode.h:18
Definition MRObjectLabel.h:30
Definition MRObjectLinesHolder.h:32
Definition MRObjectLines.h:14
Definition MRObjectMeshHolder.h:37
Definition MRObjectMesh.h:14
Definition MRObjectPointsHolder.h:26
Definition MRObjectPoints.h:14
named object in the data model
Definition MRObject.h:61
Undo action for efficiently storage of partial change in mesh (e.g. a modification of small region)
Definition MRPartialChangeMeshAction.h:26
Undo action for efficiently storage of partial change in mesh points (e.g. a modification of small re...
Definition MRPartialChangeMeshAction.h:86
Undo action for efficiently storage of partial change in mesh topology (e.g. a modification of small ...
Definition MRPartialChangeMeshAction.h:152
Definition MRPlaneObject.h:15
Class to accumulate points and make best line / plane approximation.
Definition MRBestFit.h:20
Definition MRPointObject.h:17
Definition MRPointToPlaneAligningTransform.h:20
Definition MRPointToPointAligningTransform.h:16
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:152
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:116
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:759
CubicBezierCurve< Vector2< T > > CubicBezierCurve2
Definition MRMeshFwd.h:446
std::function< float(VertId)> VertMetric
Definition MRMeshFwd.h:582
phmap::parallel_flat_hash_map< K, V, Hash, Eq > ParallelHashMap
Definition MRMeshFwd.h:608
std::vector< EdgeId > EdgeLoop
Definition MRMeshFwd.h:156
std::vector< std::string > GcodeSource
Definition MRMeshFwd.h:685
RigidXf3f
Definition MRMeshFwd.h:312
WrapType
Definition MREnums.h:18
LineSegm2f
Definition MRMeshFwd.h:343
struct
Definition MRMeshFwd.h:189
Contour
Definition MRObjectLabel.h:21
std::array< VertId, 2 > TwoVertIds
two vertex ids describing an edge with the ends in vertices given by their ids
Definition MRMeshFwd.h:516
std::vector< SurfacePath > SurfacePaths
Definition MRMeshFwd.h:480
std::vector< EdgeLoop > EdgeLoops
Definition MRMeshFwd.h:157
Contour3< float > Contour3f
Definition MRMeshFwd.h:378
class MRMESH_CLASS UndirectedEdgeTag
Definition MRMeshFwd.h:107
Cylinder3f
Definition MRMeshFwd.h:362
AABBTreePolyline2
Definition MRMeshFwd.h:664
LineSegm< Vector3< T > > LineSegm3
Definition MRMeshFwd.h:349
MapOrHashMap< FaceId, FaceId > FaceMapOrHashMap
Definition MRMeshFwd.h:620
class MRMESH_CLASS ObjTag
Definition MRMeshFwd.h:114
CubicBezierCurve< Vector3< T > > CubicBezierCurve3
Definition MRMeshFwd.h:447
Box< T > MinMax
Definition MRMeshFwd.h:415
Edges
Definition MRObjectMeshHolder.h:21
constexpr auto sqr(T x) noexcept -> decltype(x *x)
squared value; the result type is the type of x*x, which is int for small integer types (char,...
Definition MRMeshFwd.h:769
std::function< bool(FaceId)> FacePredicate
Definition MRMeshFwd.h:569
MinMax< float > MinMaxf
Definition MRMeshFwd.h:416
Contour2< double > Contour2d
Definition MRMeshFwd.h:375
struct MRMESH_CLASS Eq
Definition MRMeshFwd.h:595
class MRMESH_CLASS NodeTag
Definition MRMeshFwd.h:113
Box< Vector3< T > > Box3
Definition MRMeshFwd.h:422
HashSet< VertId > VertHashSet
Definition MRMeshFwd.h:602
TriPointf
Definition MRMeshFwd.h:495
std::function< bool(EdgeId)> EdgePredicate
Definition MRMeshFwd.h:570
typename detail::AffineXf3f::TypeOrPlaceholder< Vector2< T > >::type AffineXf2OrPlaceholder
Definition MRMeshFwd.h:308
Contour2< float > Contour2f
Definition MRMeshFwd.h:376
std::array< UVCoord, 3 > ThreeUVCoords
three UV-coordinates describing texturing of a triangle
Definition MRMeshFwd.h:522
Contours2< double > Contours2d
Definition MRMeshFwd.h:385
Contours3< float > Contours3f
Definition MRMeshFwd.h:388
std::function< bool(UndirectedEdgeId)> UndirectedEdgePredicate
Definition MRMeshFwd.h:571
Ball< Vector2< T > > Ball2
Definition MRMeshFwd.h:437
MapOrHashMap< VertId, VertId > VertMapOrHashMap
Definition MRMeshFwd.h:621
Contours3< double > Contours3d
Definition MRMeshFwd.h:387
SurfacePaths PlaneSections
Definition MRMeshFwd.h:484
MapOrHashMap< EdgeId, EdgeId > EdgeMapOrHashMap
Definition MRMeshFwd.h:622
HashMap< VertId, VertId > VertHashMap
Definition MRMeshFwd.h:611
QuadraticForm2f
Definition MRMeshFwd.h:450
QuadraticForm< Vector3< T > > QuadraticForm3
Definition MRMeshFwd.h:456
class MRMESH_CLASS VoxelTag
Definition MRMeshFwd.h:111
Ball< T > Ball1
Definition MRMeshFwd.h:436
FilterType
Definition MREnums.h:12
Plane3f
Definition MRMeshFwd.h:391
SurfacePath IsoLine
Definition MRMeshFwd.h:481
Vector2f UVCoord
Definition MRMeshFwd.h:513
Triangle3< int > Triangle3i
Definition MRMeshFwd.h:465
Ball< Vector3< T > > Ball3
Definition MRMeshFwd.h:438
Sphere< Vector3< T > > Sphere3
Definition MRMeshFwd.h:331
std::vector< MeshEdgePoint > SurfacePath
Definition MRMeshFwd.h:479
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:615
class MRMESH_CLASS FaceTag
Definition MRMeshFwd.h:108
class MRMESH_CLASS TextureTag
Definition MRMeshFwd.h:115
class MRMESH_CLASS I
Definition MRMeshFwd.h:144
class MRMESH_CLASS PixelTag
Definition MRMeshFwd.h:110
Line< Vector3< T > > Line3
Definition MRMeshFwd.h:340
Contours< Vector2< T > > Contours2
Definition MRMeshFwd.h:383
overloaded(Ts...) -> overloaded< Ts... >
explicit deduction guide (not needed as of C++20, but still needed in Clang)
constexpr int sgn(T x) noexcept
sign of given value in { -1, 0, 1 }
Definition MRMeshFwd.h:773
Contours2< float > Contours2f
Definition MRMeshFwd.h:386
RigidScaleXf3f
Definition MRMeshFwd.h:317
std::function< float(EdgeId)> EdgeMetric
Definition MRMeshFwd.h:584
MinMax< double > MinMaxd
Definition MRMeshFwd.h:417
Box< Vector2< T > > Box2
Definition MRMeshFwd.h:421
std::function< bool(EdgeId edgeToCollapse, const Vector3f &newEdgeOrgPos)> PreCollapseCallback
Definition MRMeshFwd.h:573
MinMax< int > MinMaxi
Definition MRMeshFwd.h:418
EdgePoint MeshEdgePoint
Definition MRMeshFwd.h:478
Box< T > Box1
Definition MRMeshFwd.h:420
Contour< Vector2< T > > Contour2
Definition MRMeshFwd.h:373
Contour3< double > Contour3d
Definition MRMeshFwd.h:377
TypedBitSet< Id< T > > TaggedBitSet
Definition MRMeshFwd.h:177
SurfacePath PlaneSection
Definition MRMeshFwd.h:483
HashMap< FaceId, FaceId > FaceHashMap
Definition MRMeshFwd.h:610
std::function< float(FaceId)> FaceMetric
Definition MRMeshFwd.h:583
class MRMESH_CLASS LocaleDomainTag
Definition MRMeshFwd.h:118
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:625
Polyline2
Definition MRMeshFwd.h:659
Triangle3< double > Triangle3d
Definition MRMeshFwd.h:467
Box1i
Definition MRMeshFwd.h:396
Contour< Vector3< T > > Contour3
Definition MRMeshFwd.h:374
HashSet< FaceId > FaceHashSet
No canonical typedefs because phmap::... is not under our control.
Definition MRMeshFwd.h:601
std::vector< EdgeId > EdgePath
Definition MRMeshFwd.h:155
std::array< VertId, 3 > ThreeVertIds
three vertex ids describing a triangle with the corners in vertices given by their ids
Definition MRMeshFwd.h:519
class MRMESH_CLASS VertTag
Definition MRMeshFwd.h:109
std::pair< FaceId, FaceId > FacePair
Definition MRMeshFwd.h:490
constexpr NoInit noInit
Definition MRMeshFwd.h:103
HashSet< EdgeId > EdgeHashSet
Definition MRMeshFwd.h:603
std::pair< UndirectedEdgeId, UndirectedEdgeId > UndirectedEdgePair
Definition MRMeshFwd.h:492
Cone3f
Definition MRMeshFwd.h:367
BestFitParabolaf
Definition MRMeshFwd.h:357
Quaternionf
Definition MRMeshFwd.h:459
std::pair< EdgeId, EdgeId > EdgePair
Definition MRMeshFwd.h:491
AffineXf
Definition MRMeshFwd.h:293
std::function< void(EdgeId e1, EdgeId e)> OnEdgeSplit
Definition MRMeshFwd.h:574
std::function< float(UndirectedEdgeId)> UndirectedEdgeMetric
Definition MRMeshFwd.h:585
AffineXf2f
Definition MRMeshFwd.h:294
Line2f
Definition MRMeshFwd.h:334
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:786
constexpr bool dependent_false
Definition MRMeshFwd.h:789
Triangle3< float > Triangle3f
Definition MRMeshFwd.h:466
SurfacePaths IsoLines
Definition MRMeshFwd.h:482
constexpr auto translate_noop(const char *str) noexcept
special no-op inline functions to mark string literal as translatable
Definition MRMeshFwd.h:815
class MRMESH_CLASS EdgeTag
Definition MRMeshFwd.h:106
AffineXf< Vector3< T > > AffineXf3
Definition MRMeshFwd.h:300
std::vector< Contour< V > > Contours
Definition MRMeshFwd.h:382
Polyline2ProjectionWithOffsetResult
Definition MRMeshFwd.h:677
HashMap< EdgeId, EdgeId > EdgeHashMap
Definition MRMeshFwd.h:612
struct MRMESH_CLASS Hash
Definition MRMeshFwd.h:595
std::nullptr_t type
Definition MRMeshFwd.h:304
phmap::parallel_flat_hash_set< T, Hash, Eq > ParallelHashSet
Definition MRMeshFwd.h:598
SegmPointf
Definition MRMeshFwd.h:472
Parabolaf
Definition MRMeshFwd.h:352
MapOrHashMap< UndirectedEdgeId, UndirectedEdgeId > UndirectedEdgeMapOrHashMap
Definition MRMeshFwd.h:623
std::pair< VertId, VertId > VertPair
Definition MRMeshFwd.h:489
typename detail::AffineXf3f::TypeOrPlaceholder< Vector3< T > >::type AffineXf3OrPlaceholder
Definition MRMeshFwd.h:309
HashMap< UndirectedEdgeId, UndirectedEdgeId > UndirectedEdgeHashMap
Definition MRMeshFwd.h:613
Contours< Vector3< T > > Contours3
Definition MRMeshFwd.h:384
class MRMESH_CLASS RegionTag
Definition MRMeshFwd.h:112
Sphere2f
Definition MRMeshFwd.h:325
class MRMESH_CLASS GraphVertTag
Definition MRMeshFwd.h:116
phmap::flat_hash_map< K, V, Hash, Eq > HashMap
Definition MRMeshFwd.h:606
class MRMESH_CLASS GraphEdgeTag
Definition MRMeshFwd.h:117
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:812
Building topologies by triangles.
Definition MRIdentifyVertices.h:16
Definition MRIOFormatsRegistry.h:361
Definition MRMeshFwd.h:283
Definition MRFastInt.h:19
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
Common rendering parameters for meshes and UI.
Definition MRIRenderObject.h:36
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
Definition MRColor.h:12
Cubic Bezier curve.
Definition MRBezier.h:16
Definition MRDipole.h:14
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 MRImage.h:19
Definition MRIntersectionPrecomputes2.h:35
Definition MRIntersectionPrecomputes.h:121
Definition MRIteratorRange.h:13
a segment of straight dimensional line
Definition MRLineSegm.h:15
Definition MRLine.h:16
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 MRMesh.h:24
Definition MRMinMaxArg.h:16
Definition MRMinMaxArg.h:82
Definition MRIRenderObject.h:46
Mesh rendering parameters for primary rendering (as opposed to the picker).
Definition MRIRenderObject.h:54
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:102
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
Definition MRPlane3.h:21
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 MRQuadraticForm.h:16
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 MRSphere.h:14
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
Definition MRIRenderObject.h:110
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:285
Definition MRMeshFwd.h:792