6#include "MRPch/MRBindingMacros.h"
22 #if !defined _ITERATOR_DEBUG_LEVEL
23 #define _ITERATOR_DEBUG_LEVEL 0
25 #if !defined MR_ITERATOR_DEBUG_LEVEL
26 #define MR_ITERATOR_DEBUG_LEVEL 0
28 #if _ITERATOR_DEBUG_LEVEL != MR_ITERATOR_DEBUG_LEVEL
29 #error _ITERATOR_DEBUG_LEVEL is inconsistent with MeshLib
35#define MR_CPP_STANDARD_DATE _MSVC_LANG
37#define MR_CPP_STANDARD_DATE __cplusplus
44#if MR_CPP_STANDARD_DATE < 201709 && !defined(__CUDACC__)
45#error Must enable C++20 or newer!
55#if defined(__GNUC__) && (__GNUC__ >= 13 && __GNUC__ <= 15)
56 #pragma GCC diagnostic push
57 #pragma GCC diagnostic ignored "-Warray-bounds"
58 #pragma GCC diagnostic ignored "-Wstringop-overflow"
63#if defined(__GNUC__) && (__GNUC__ >= 13 && __GNUC__ <= 15)
64 #pragma GCC diagnostic pop
69#include <parallel_hashmap/phmap_fwd_decl.h>
74# define MRMESH_API __declspec(dllexport)
76# define MRMESH_API __declspec(dllimport)
80# define MRMESH_API __attribute__((visibility("default")))
85# define MRMESH_CLASS __attribute__((type_visibility("default")))
87# define MRMESH_CLASS __attribute__((visibility("default")))
95inline constexpr NoInit noInit;
131 ( NoInitNodeId, NoInitId<NodeTag> )
144using EdgePath = std::vector<EdgeId>;
145using EdgeLoop = std::vector<EdgeId>;
146using EdgeLoops = std::vector<EdgeLoop>;
151 ( FaceBitSet, TypedBitSet<FaceId> )
152 ( VertBitSet, TypedBitSet<VertId> )
153 ( EdgeBitSet, TypedBitSet<EdgeId> )
154 ( UndirectedEdgeBitSet, TypedBitSet<UndirectedEdgeId> )
155 ( PixelBitSet, TypedBitSet<PixelId> )
156 ( VoxelBitSet, TypedBitSet<VoxelId> )
157 ( RegionBitSet, TypedBitSet<RegionId> )
158 ( NodeBitSet, TypedBitSet<NodeId> )
159 ( ObjBitSet, TypedBitSet<ObjId> )
160 ( TextureBitSet, TypedBitSet<TextureId> )
161 ( GraphVertBitSet, TypedBitSet<GraphVertId> )
162 ( GraphEdgeBitSet, TypedBitSet<GraphEdgeId> )
169 ( SetBitIterator, SetBitIteratorT<BitSet> )
170 ( FaceSetBitIterator, SetBitIteratorT<FaceBitSet> )
171 ( VertSetBitIterator, SetBitIteratorT<VertBitSet> )
172 ( EdgeSetBitIterator, SetBitIteratorT<EdgeBitSet> )
173 ( UndirectedEdgeSetBitIterator, SetBitIteratorT<UndirectedEdgeBitSet> )
192using Int64 = std::ptrdiff_t;
193using Uint64 = std::size_t;
194static_assert(sizeof(Int64) == 8);
195static_assert(sizeof(Uint64) == 8);
197using Int64 = std::int64_t;
198using Uint64 = std::uint64_t;
202 ( Vector2b, Vector2<bool> )
203 ( Vector2i, Vector2<int> )
204 ( Vector2i64, Vector2<Int64> )
205 ( Vector2f, Vector2<float> )
206 ( Vector2d, Vector2<double> )
211#if !MR_PARSING_FOR_ANY_BINDINGS
212using Vector2ll [[deprecated("Use `Vector2i64` instead.")]] =
Vector2<long long>;
216 ( Vector3b, Vector3<bool> )
217 ( Vector3i, Vector3<int> )
218 ( Vector3i64, Vector3<Int64> )
219 ( Vector3f, Vector3<float> )
220 ( Vector3d, Vector3<double> )
222#if !MR_PARSING_FOR_ANY_BINDINGS
223using Vector3ll [[deprecated("Use `Vector3i64` instead.")]] =
Vector3<long long>;
227 ( Vector4b, Vector4<bool> )
228 ( Vector4i, Vector4<int> )
229 ( Vector4i64, Vector4<Int64> )
230 ( Vector4f, Vector4<float> )
231 ( Vector4d, Vector4<double> )
233#if !MR_PARSING_FOR_ANY_BINDINGS
234using Vector4ll [[deprecated("Use `Vector4i64` instead.")]] =
Vector4<long long>;
238 ( Matrix2b, Matrix2<bool> )
239 ( Matrix2i, Matrix2<int> )
240 ( Matrix2i64, Matrix2<Int64> )
241 ( Matrix2f, Matrix2<float> )
242 ( Matrix2d, Matrix2<double> )
244#if !MR_PARSING_FOR_ANY_BINDINGS
245using Matrix2ll [[deprecated("Use `Matrix2i64` instead.")]] =
Matrix2<long long>;
249 ( Matrix3b, Matrix3<bool> )
250 ( Matrix3i, Matrix3<int> )
251 ( Matrix3i64, Matrix3<Int64> )
252 ( Matrix3f, Matrix3<float> )
253 ( Matrix3d, Matrix3<double> )
255#if !MR_PARSING_FOR_ANY_BINDINGS
256using Matrix3ll [[deprecated("Use `Matrix3i64` instead.")]] =
Matrix3<long long>;
260 ( Matrix4b, Matrix4<bool> )
261 ( Matrix4i, Matrix4<int> )
262 ( Matrix4i64, Matrix4<Int64> )
263 ( Matrix4f, Matrix4<float> )
264 ( Matrix4d, Matrix4<double> )
266#if !MR_PARSING_FOR_ANY_BINDINGS
267using Matrix4ll [[deprecated("Use `Matrix4i64` instead.")]] =
Matrix4<long long>;
271 ( SymMatrix2b, SymMatrix2<bool> )
272 ( SymMatrix2i, SymMatrix2<int> )
273 ( SymMatrix2i64, SymMatrix2<Int64> )
274 ( SymMatrix2f, SymMatrix2<float> )
275 ( SymMatrix2d, SymMatrix2<double> )
277#if !MR_PARSING_FOR_ANY_BINDINGS
278using SymMatrix2ll [[deprecated("Use `SymMatrix2i64` instead.")]] =
SymMatrix2<long long>;
282 ( SymMatrix3b, SymMatrix3<bool> )
283 ( SymMatrix3i, SymMatrix3<int> )
284 ( SymMatrix3i64, SymMatrix3<Int64> )
285 ( SymMatrix3f, SymMatrix3<float> )
286 ( SymMatrix3d, SymMatrix3<double> )
288#if !MR_PARSING_FOR_ANY_BINDINGS
289using SymMatrix3ll [[deprecated("Use `SymMatrix3i64` instead.")]] =
SymMatrix3<long long>;
293 ( SymMatrix4b, SymMatrix4<bool> )
294 ( SymMatrix4i, SymMatrix4<int> )
295 ( SymMatrix4i64, SymMatrix4<Int64> )
296 ( SymMatrix4f, SymMatrix4<float> )
297 ( SymMatrix4d, SymMatrix4<double> )
299#if !MR_PARSING_FOR_ANY_BINDINGS
300using SymMatrix4ll [[deprecated("Use `SymMatrix4i64` instead.")]] =
SymMatrix4<long long>;
304 ( AffineXf2f, AffineXf<Vector2<float>> )
305 ( AffineXf2d, AffineXf<Vector2<double>> )
306 ( AffineXf3f, AffineXf<Vector3<float>> )
307 ( AffineXf3d, AffineXf<Vector3<double>> )
309template <typename T> using AffineXf2 =
AffineXf<Vector2<T>>;
310template <typename T> using AffineXf3 =
AffineXf<Vector3<T>>;
313 ( RigidXf3f, RigidXf3<float> )
314 ( RigidXf3d, RigidXf3<double> )
318 ( RigidScaleXf3f, RigidScaleXf3<float> )
319 ( RigidScaleXf3d, RigidScaleXf3<double> )
326 ( Sphere2f, Sphere<Vector2<float>> )
327 ( Sphere2d, Sphere<Vector2<double>> )
328 ( Sphere3f, Sphere<Vector3<float>> )
329 ( Sphere3d, Sphere<Vector3<double>> )
331template <typename T> using Sphere2 =
Sphere<Vector2<T>>;
332template <typename T> using Sphere3 =
Sphere<Vector3<T>>;
335 ( Line2f, Line<Vector2<float>> )
336 ( Line2d, Line<Vector2<double>> )
337 ( Line3f, Line<Vector3<float>> )
338 ( Line3d, Line<Vector3<double>> )
340template <typename T> using Line2 =
Line<Vector2<T>>;
341template <typename T> using Line3 =
Line<Vector3<T>>;
344 ( LineSegm2f, LineSegm<Vector2<float>> )
345 ( LineSegm2d, LineSegm<Vector2<double>> )
346 ( LineSegm3f, LineSegm<Vector3<float>> )
347 ( LineSegm3d, LineSegm<Vector3<double>> )
349template <typename T> using LineSegm2 =
LineSegm<Vector2<T>>;
350template <typename T> using LineSegm3 =
LineSegm<Vector3<T>>;
353 ( Parabolaf, Parabola<float> )
354 ( Parabolad, Parabola<double> )
358 ( BestFitParabolaf, BestFitParabola<float> )
359 ( BestFitParabolad, BestFitParabola<double> )
363 ( Cylinder3f, Cylinder3<float> )
364 ( Cylinder3d, Cylinder3<double> )
368 ( Cone3f, Cone3<float> )
369 ( Cone3d, Cone3<double> )
373template <typename V> using
Contour = std::vector<V>;
374template <typename T> using Contour2 =
Contour<Vector2<T>>;
375template <typename T> using Contour3 =
Contour<Vector3<T>>;
376using Contour2d = Contour2<double>;
377using Contour2f = Contour2<float>;
378using Contour3d = Contour3<double>;
379using Contour3f = Contour3<float>;
381template <typename V> using Contours = std::vector<Contour<V>>;
382template <typename T> using Contours2 = Contours<Vector2<T>>;
383template <typename T> using Contours3 = Contours<Vector3<T>>;
384using Contours2d = Contours2<double>;
385using Contours2f = Contours2<float>;
386using Contours3d = Contours3<double>;
387using Contours3f = Contours3<float>;
390 ( Plane3f, Plane3<float> )
391 ( Plane3d, Plane3<double> )
396 ( Box1i64, Box<Int64> )
397 ( Box1f, Box<float> )
398 ( Box1d, Box<double> )
399 ( Box2i, Box<Vector2<int>> )
400 ( Box2i64, Box<Vector2<Int64>> )
401 ( Box2f, Box<Vector2<float>> )
402 ( Box2d, Box<Vector2<double>> )
403 ( Box3i, Box<Vector3<int>> )
404 ( Box3i64, Box<Vector3<Int64>> )
405 ( Box3f, Box<Vector3<float>> )
406 ( Box3d, Box<Vector3<double>> )
408#if !MR_PARSING_FOR_ANY_BINDINGS
409using Box1ll [[deprecated("Use `Box1i64` instead.")]] =
Box<long long>;
410using Box2ll [[deprecated("Use `Box2i64` instead.")]] =
Box<Vector2<long long>>;
411using Box3ll [[deprecated("Use `Box3i64` instead.")]] =
Box<Vector3<long long>>;
414template <typename T> using MinMax =
Box<T>;
415using MinMaxf = MinMax<float>;
416using MinMaxd = MinMax<double>;
417using MinMaxi = MinMax<int>;
419template <typename T> using Box1 =
Box<T>;
420template <typename T> using Box2 =
Box<Vector2<T>>;
421template <typename T> using Box3 =
Box<Vector3<T>>;
423template<typename T, typename I> struct
MinArg;
424template<typename T, typename I> struct
MaxArg;
425template<typename T, typename I> struct
MinMaxArg;
428 ( Ball1f, Ball<float> )
429 ( Ball1d, Ball<double> )
430 ( Ball2f, Ball<Vector2<float>> )
431 ( Ball2d, Ball<Vector2<double>> )
432 ( Ball3f, Ball<Vector3<float>> )
433 ( Ball3d, Ball<Vector3<double>> )
435template <typename T> using Ball1 =
Ball<T>;
436template <typename T> using Ball2 =
Ball<Vector2<T>>;
437template <typename T> using Ball3 =
Ball<Vector3<T>>;
440 ( CubicBezierCurve2f, CubicBezierCurve<Vector2<float>> )
441 ( CubicBezierCurve2d, CubicBezierCurve<Vector2<double>> )
442 ( CubicBezierCurve3f, CubicBezierCurve<Vector3<float>> )
443 ( CubicBezierCurve3d, CubicBezierCurve<Vector3<double>> )
445template <typename T> using CubicBezierCurve2 =
CubicBezierCurve<Vector2<T>>;
446template <typename T> using CubicBezierCurve3 =
CubicBezierCurve<Vector3<T>>;
449 ( QuadraticForm2f, QuadraticForm<Vector2<float>> )
450 ( QuadraticForm2d, QuadraticForm<Vector2<double>> )
451 ( QuadraticForm3f, QuadraticForm<Vector3<float>> )
452 ( QuadraticForm3d, QuadraticForm<Vector3<double>> )
454template <typename T> using QuadraticForm2 =
QuadraticForm<Vector2<T>>;
455template <typename T> using QuadraticForm3 =
QuadraticForm<Vector3<T>>;
458 ( Quaternionf, Quaternion<float> )
459 ( Quaterniond, Quaternion<double> )
463template <typename T> using Triangle3 = std::array<Vector3<T>, 3>;
464using Triangle3i = Triangle3<int>;
465using Triangle3f = Triangle3<float>;
466using Triangle3d = Triangle3<double>;
471 ( SegmPointf, SegmPoint<float> )
472 ( SegmPointd, SegmPoint<double> )
478using SurfacePath = std::vector<MeshEdgePoint>;
479using SurfacePaths = std::vector<SurfacePath>;
480using IsoLine = SurfacePath;
481using IsoLines = SurfacePaths;
482using PlaneSection = SurfacePath;
483using PlaneSections = SurfacePaths;
487using VertPair = std::pair<VertId, VertId>;
488using FacePair = std::pair<FaceId, FaceId>;
489using EdgePair = std::pair<EdgeId, EdgeId>;
490using UndirectedEdgePair = std::pair<UndirectedEdgeId, UndirectedEdgeId>;
493 ( TriPointf, TriPoint<float> )
494 ( TriPointd, TriPoint<double> )
512using TwoVertIds = std::array<VertId, 2>;
515using ThreeVertIds = std::array<VertId, 3>;
518using ThreeUVCoords = std::array<UVCoord, 3>;
524 ( Edges, Vector<TwoVertIds, UndirectedEdgeId> )
527 ( Triangulation, Vector<ThreeVertIds, FaceId> )
530 ( TriCornerUVCoords, Vector<ThreeUVCoords, FaceId> )
532 ( Dipoles, Vector<Dipole, NodeId> )
534 ( FaceMap, Vector<FaceId, FaceId> )
535 ( VertMap, Vector<VertId, VertId> )
536 ( EdgeMap, Vector<EdgeId, EdgeId> )
537 ( UndirectedEdgeMap, Vector<UndirectedEdgeId, UndirectedEdgeId> )
538 ( ObjMap, Vector<ObjId, ObjId> )
541 ( WholeEdgeMap, Vector<EdgeId, UndirectedEdgeId> )
542 ( UndirectedEdge2RegionMap, Vector<RegionId, UndirectedEdgeId> )
543 ( Face2RegionMap, Vector<RegionId, FaceId> )
544 ( Vert2RegionMap, Vector<RegionId, VertId> )
546 ( VertCoords, Vector<Vector3f, VertId> )
547 ( VertCoords2, Vector<Vector2f, VertId> )
548 ( VertNormals, Vector<Vector3f, VertId> )
549 ( VertUVCoords, Vector<UVCoord, VertId> )
550 ( FaceNormals, Vector<Vector3f, FaceId> )
552 ( TexturePerFace, Vector<TextureId, FaceId> )
553 ( VertColors, Vector<Color, VertId> )
554 ( FaceColors, Vector<Color, FaceId> )
555 ( EdgeColors, Vector<Color, EdgeId> )
556 ( UndirectedEdgeColors, Vector<Color, UndirectedEdgeId> )
558 ( VertScalars, Vector<float, VertId> )
559 ( FaceScalars, Vector<float, FaceId> )
560 ( EdgeScalars, Vector<float, EdgeId> )
561 ( UndirectedEdgeScalars, Vector<float, UndirectedEdgeId> )
564using VertPredicate = std::function<bool( VertId )>;
565using FacePredicate = std::function<bool( FaceId )>;
566using EdgePredicate = std::function<bool( EdgeId )>;
567using UndirectedEdgePredicate = std::function<bool( UndirectedEdgeId )>;
569using PreCollapseCallback = std::function<bool( EdgeId edgeToCollapse, const Vector3f& newEdgeOrgPos )>;
570using OnEdgeSplit = std::function<void( EdgeId e1, EdgeId e )>;
573[[nodiscard]] inline bool
contains( const std::function<bool( Id<T> )> & pred, Id<T> id )
575 return id.valid() && ( !pred || pred(
id ) );
578using VertMetric = std::function<float( VertId )>;
579using FaceMetric = std::function<float( FaceId )>;
580using EdgeMetric = std::function<float( EdgeId )>;
581using UndirectedEdgeMetric = std::function<float( UndirectedEdgeId )>;
591template <
typename T,
typename Hash = phmap::priv::hash_default_hash<T>,
typename Eq = phmap::priv::hash_default_eq<T>>
592using HashSet = phmap::flat_hash_set<T, Hash, Eq>;
593template <
typename T,
typename Hash = phmap::priv::hash_default_hash<T>,
typename Eq = phmap::priv::hash_default_eq<T>>
594using ParallelHashSet = phmap::parallel_flat_hash_set<T, Hash, Eq>;
597using FaceHashSet = HashSet<FaceId>;
598using VertHashSet = HashSet<VertId>;
599using EdgeHashSet = HashSet<EdgeId>;
601template <
typename K,
typename V,
typename Hash = phmap::priv::hash_default_hash<K>,
typename Eq = phmap::priv::hash_default_eq<K>>
602using HashMap = phmap::flat_hash_map<K, V, Hash, Eq>;
603template <
typename K,
typename V,
typename Hash = phmap::priv::hash_default_hash<K>,
typename Eq = phmap::priv::hash_default_eq<K>>
604using ParallelHashMap = phmap::parallel_flat_hash_map<K, V, Hash, Eq>;
606using FaceHashMap = HashMap<FaceId, FaceId>;
607using VertHashMap = HashMap<VertId, VertId>;
608using EdgeHashMap = HashMap<EdgeId, EdgeId>;
609using UndirectedEdgeHashMap = HashMap<UndirectedEdgeId, UndirectedEdgeId>;
611using WholeEdgeHashMap = HashMap<UndirectedEdgeId, EdgeId>;
613template <
typename K,
typename V>
624template <
typename T,
typename I,
typename P>
class Heap;
679using GcodeSource = std::vector<std::string>;
744enum class FilterType : char;
745enum class WrapType : char;
748struct TransparencyMode;
752constexpr inline T
sqr( T x )
noexcept {
return x * x; }
756constexpr inline int sgn( T x )
noexcept {
return x > 0 ? 1 : ( x < 0 ? -1 : 0 ); }
760constexpr inline T
distance( T x, T y )
noexcept {
return x >= y ? x - y : y - x; }
767template <
typename V,
typename T>
768constexpr inline auto lerp( V v0, V v1, T t )
noexcept {
return ( 1 - t ) * v0 + t * v1; }
771inline constexpr bool dependent_false =
false;
789struct VertDuplication;
795#ifdef __cpp_lib_unreachable
796# define MR_UNREACHABLE std::unreachable();
797# define MR_UNREACHABLE_NO_RETURN std::unreachable();
800# define MR_UNREACHABLE __builtin_unreachable();
801# define MR_UNREACHABLE_NO_RETURN __builtin_unreachable();
804# define MR_UNREACHABLE { assert( false ); return {}; }
805# define MR_UNREACHABLE_NO_RETURN assert( false );
#define MR_CANONICAL_TYPEDEFS(type_, name_, aliases_)
Definition MRCanonicalTypedefs.h:23
#define MRMESH_CLASS
Definition MRMeshFwd.h:87
Contour
Definition MRObjectLabel.h:17
Definition MRAABBTreeObjects.h:19
Definition MRAABBTreePoints.h:16
bounding volume hierarchy for line segments
Definition MRAABBTreePolyline.h:30
Definition MRAABBTree.h:16
Definition MRLocalTriangulations.h:48
Definition MRVisualObject.h:54
Definition MRMesh/MRBitSet.h:24
std::vector<V>-like container that is 1) resized without initialization of its elements,...
Definition MRBuffer.h:54
Definition MRChangeMeshAction.h:16
Definition MRChangeSelectionAction.h:122
Definition MRChangeMeshDataAction.h:14
Definition MRChangeSelectionAction.h:68
Definition MRChangeSelectionAction.h:14
Definition MRChangeMeshAction.h:190
Definition MRChangeMeshAction.h:254
Definition MRChangeObjectAction.h:14
Definition MRChangeSelectionAction.h:176
Definition MRChangeSceneAction.h:13
Definition MRChangeXfAction.h:13
Definition MRCircleObject.h:17
Definition MRCloudPartMapping.h:10
Class for aggregate several color map in one Color maps are aggregated according order.
Definition MRColorMapAggregator.h:17
Definition MRCombinedHistoryAction.h:12
Definition MRConeObject.h:19
Definition MRCylinderObject.h:18
Definition MRDistanceMap.h:24
Definition MRDistanceToMeshOptions.h:11
Definition MREdgeLengthMesh.h:13
Definition MREdgePoint.h:50
Definition MREdgePoint.h:11
Definition MREdgePoint.h:61
the class stores some number of smallest elements from a larger number of candidates
Definition MRFewSmallest.h:14
Definition MRGridSettings.h:11
stores map from element id in[0, size) to T;
Definition MRMeshFwd.h:624
Definition MRHistoryAction.h:12
Definition MRFastWindingNumber.h:12
Definition MRPointsProject.h:93
Definition MRMesh/MRPointsToMeshProjector.h:13
Definition MRLaplacian.h:21
Definition MRLineObject.h:13
Definition MRLoadedObjects.h:33
Definition MRMeshIntersect.h:18
Definition MRMeshOrPoints.h:106
Definition MRMeshOrPoints.h:18
Definition MRMeshProject.h:18
Definition MRMeshTexture.h:13
Definition MRMesh/MRMeshTopology.h:19
Definition MRMeshTriPoint.h:23
Definition MRMesh/MRMesh.h:23
Definition MRObjectDistanceMap.h:13
Definition MRObjectGcode.h:14
Definition MRObjectLabel.h:26
Definition MRObjectLinesHolder.h:27
Definition MRObjectLines.h:11
Definition MRObjectMeshData.h:14
Definition MRObjectMeshHolder.h:32
Definition MRObjectMesh.h:11
Definition MRObjectPointsHolder.h:21
Definition MRObjectPoints.h:11
Definition MRBuffer.h:151
Definition MRPartMapping.h:10
Definition MRPlaneObject.h:12
Definition MRBestFit.h:20
Definition MRPointCloudPart.h:10
Definition MRMesh/MRPointCloud.h:17
Definition MRPointObject.h:14
Definition MRPointOnFace.h:13
Definition MRPointOnObject.h:18
Definition MRPointsProject.h:15
Definition MRPolylineTopology.h:15
Definition MRSaveSettings.h:17
Definition MRSceneRoot.h:11
Definition MRSharedThreadSafeOwner.h:19
Definition MRDistanceToMeshOptions.h:37
Definition MRLocalTriangulations.h:40
Definition MRSphereObject.h:15
Definition MRSwapRootAction.h:13
Definition MRTriMesh.h:13
Definition MRMesh/MRBitSet.h:217
Union-find data structure for representing disjoin sets of elements with few very quick operations: 1...
Definition MRUnionFind.h:20
Definition MRUniqueThreadSafeOwner.h:18
Definition MRUnorientedTriangle.h:13
Definition MRViewportId.h:42
Definition MRVisualObject.h:119
Definition MRWatershedGraph.h:12
bool contains(const TypedBitSet< I > *bitset, I id)
Definition MRMesh/MRBitSet.h:326
std::function< bool(float)> ProgressCallback
Definition MRMeshFwd.h:742
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 MRCameraOrientationPlugin.h:8
constexpr T sqr(T x) noexcept
squared value
Definition MRMeshFwd.h:752
MR_CANONICAL_TYPEDEFS((template< typename T > class MRMESH_CLASS), Id,(EdgeId, Id< EdgeTag >)(UndirectedEdgeId, Id< UndirectedEdgeTag >)(FaceId, Id< FaceTag >)(VertId, Id< VertTag >)(PixelId, Id< PixelTag >)(VoxelId, Id< VoxelTag >)(RegionId, Id< RegionTag >)(NodeId, Id< NodeTag >)(ObjId, Id< ObjTag >)(TextureId, Id< TextureTag >)(GraphVertId, Id< GraphVertTag >)(GraphEdgeId, Id< GraphEdgeTag >)) template<> class MR_BIND_PREFERRED_NAME(MR class MR_BIND_PREFERRED_NAME(MR::VoxelId) Id< VoxelTag >
overloaded(Ts...) -> overloaded< Ts... >
constexpr int sgn(T x) noexcept
sign of given value in { -1, 0, 1 }
Definition MRMeshFwd.h:756
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:768
Definition MRMesh/MRAffineXf.h:23
flat map: I -> T
Definition MRBuffer.h:143
a ball = points surrounded by a sphere in arbitrary space with vector type V
Definition MRBall.h:12
Box given by its min- and max- corners.
Definition MRMesh/MRBox.h:27
Definition MRMesh/MRColor.h:9
Cubic Bezier curve.
Definition MRBezier.h:13
Definition MRMeshFwd.h:663
Definition MRMeshFwd.h:503
Definition MRMeshFwd.h:505
Definition MRLineSegm.h:12
Definition MRMeshFwd.h:614
Definition MRMatrix2.h:21
Definition MRMesh/MRMatrix3.h:21
Definition MRMatrix4.h:22
Definition MRMinMaxArg.h:46
Definition MRMeshPart.h:12
Definition MRMinMaxArg.h:13
Definition MRMinMaxArg.h:79
Definition MRPolylineProject.h:15
Definition MRPolylineProject.h:73
Definition MRPolyline.h:18
Definition MRSymMatrix2.h:14
Definition MRSymMatrix3.h:15
Definition MRSymMatrix4.h:13
Definition MRTbbTaskArenaAndGroup.h:13
Definition MRVector2.h:29
Definition MRMesh/MRVector3.h:30
Definition MRVector4.h:23
Definition MRViewportId.h:16
Definition MRMeshFwd.h:774