MeshLib
 
Loading...
Searching...
No Matches
MRMeshDistance.h
Go to the documentation of this file.
1#pragma once
2
3#include "MRPointOnFace.h"
4#include "MRMeshPart.h"
5#include <cfloat>
6#include <functional>
7
8namespace MR
9{
10
13
15{
19 float distSq = 0;
20};
21
29
36 const AffineXf3f * rigidB2A = nullptr, float upDistLimitSq = FLT_MAX );
37
44 const AffineXf3f* rigidB2A = nullptr, float upDistLimitSq = FLT_MAX );
45
51MRMESH_API float findMaxDistanceSqOneWay( const MeshPart& a, const MeshPart& b, const AffineXf3f* rigidB2A = nullptr, float maxDistanceSq = FLT_MAX );
52
59MRMESH_API float findMaxDistanceSq( const MeshPart& a, const MeshPart& b, const AffineXf3f* rigidB2A = nullptr, float maxDistanceSq = FLT_MAX );
60
61enum class ProcessOneResult : bool
62{
63 StopProcessing = false,
65};
66
73using TriangleCallback = std::function<ProcessOneResult( const Vector3f & p, FaceId f, const Vector3f & q, float distSq )>;
74
77MRMESH_API void processCloseTriangles( const MeshPart& mp, const Triangle3f & t, float rangeSq, const TriangleCallback & call );
78
80
81} // namespace MR
int FaceId
Definition MRDotNet/MRMeshFwd.h:53
#define MRMESH_API
Definition MRMesh/MRMeshFwd.h:46
represents a 3-dimentional float-typed vector
Definition MRDotNet/MRVector3.h:8
std::function< ProcessOneResult(const Vector3f &p, FaceId f, const Vector3f &q, float distSq)> TriangleCallback
Definition MRMeshDistance.h:73
MRMESH_API float findMaxDistanceSq(const MeshPart &a, const MeshPart &b, const AffineXf3f *rigidB2A=nullptr, float maxDistanceSq=FLT_MAX)
returns the squared Hausdorff distance between two meshes, that is the maximum of squared distances f...
MRMESH_API float findMaxDistanceSqOneWay(const MeshPart &a, const MeshPart &b, const AffineXf3f *rigidB2A=nullptr, float maxDistanceSq=FLT_MAX)
returns the maximum of the squared distances from each B-mesh vertex to A-mesh
ProcessOneResult
Definition MRMeshDistance.h:62
MRMESH_API MeshSignedDistanceResult findSignedDistance(const MeshPart &a, const MeshPart &b, const AffineXf3f *rigidB2A=nullptr, float upDistLimitSq=FLT_MAX)
computes minimal distance between two meshes
MRMESH_API void processCloseTriangles(const MeshPart &mp, const Triangle3f &t, float rangeSq, const TriangleCallback &call)
MRMESH_API MeshDistanceResult findDistance(const MeshPart &a, const MeshPart &b, const AffineXf3f *rigidB2A=nullptr, float upDistLimitSq=FLT_MAX)
computes minimal distance between two meshes or two mesh regions
Definition MRCameraOrientationPlugin.h:7
Triangle3< float > Triangle3f
Definition MRMesh/MRMeshFwd.h:327
Definition MRMeshDistance.h:15
PointOnFace b
Definition MRMeshDistance.h:17
float distSq
squared distance between a and b
Definition MRMeshDistance.h:19
PointOnFace a
two closest points: from meshes A and B respectively
Definition MRMeshDistance.h:17
Definition MRMesh/MRMeshPart.h:11
Definition MRMeshDistance.h:23
PointOnFace a
two closest points: from meshes A and B respectively
Definition MRMeshDistance.h:25
PointOnFace b
Definition MRMeshDistance.h:25
float signedDist
signed distance between a and b, positive if meshes do not collide
Definition MRMeshDistance.h:27
Definition MRPointOnFace.h:11