MeshLib C++ Docs
Loading...
Searching...
No Matches
MRMeshMeshDistance.h
Go to the documentation of this file.
1#pragma once
2
4
5#include "MRPointOnFace.h"
6#include "MRFaceFace.h"
7#include "MRMeshPart.h"
8#include <cfloat>
9
10namespace MR
11{
12
15
17{
21 float distSq = 0;
22};
23
33
45
51MRMESH_API MeshMeshDistanceResult findDistance( const MeshPart & a, const MeshPart & b,
52 const AffineXf3f * rigidB2A = nullptr, float upDistLimitSq = FLT_MAX );
53
60MRMESH_API MeshMeshSignedDistanceResult findSignedDistance( const MeshPart & a, const MeshPart & b,
61 const AffineXf3f* rigidB2A = nullptr, float upDistLimitSq = FLT_MAX );
62
67MRMESH_API MeshMeshCollisionStatus findCollisionStatus( const MeshPart& a, const MeshPart& b,
68 const AffineXf3f* rigidB2A = nullptr );
69
76MRMESH_API MeshMeshCollisionStatus findCollisionStatus( const MeshPart& a, const MeshPart& b,
77 const MeshMeshDistanceResult& distRes, const AffineXf3f* rigidB2A = nullptr, std::vector<FaceFace>* collisions = nullptr );
78
84MRMESH_API float findMaxDistanceSqOneWay( const MeshPart& a, const MeshPart& b, const AffineXf3f* rigidB2A = nullptr, float maxDistanceSq = FLT_MAX );
85
92MRMESH_API float findMaxDistanceSq( const MeshPart& a, const MeshPart& b, const AffineXf3f* rigidB2A = nullptr, float maxDistanceSq = FLT_MAX );
93
95
96}
#define MRMESH_API
Definition MRMeshFwd.h:80
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
MeshMeshDistanceResult 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
MeshMeshCollisionStatus findCollisionStatus(const MeshPart &a, const MeshPart &b, const AffineXf3f *rigidB2A=nullptr)
finds if two meshes are touching, colliding or inside each other
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...
MeshMeshCollisionStatus
Definition MRMeshMeshDistance.h:25
MeshMeshSignedDistanceResult findSignedDistance(const MeshPart &a, const MeshPart &b, const AffineXf3f *rigidB2A=nullptr, float upDistLimitSq=FLT_MAX)
computes minimal distance between two meshes
@ BInside
Definition MRMeshMeshDistance.h:29
@ BothInside
Definition MRMeshMeshDistance.h:27
@ Touching
Definition MRMeshMeshDistance.h:31
@ BothOutside
Definition MRMeshMeshDistance.h:26
@ Colliding
Definition MRMeshMeshDistance.h:30
@ AInside
Definition MRMeshMeshDistance.h:28
only for bindings generation
Definition MRCameraOrientationPlugin.h:8
Definition MRMeshMeshDistance.h:17
float distSq
squared distance between a and b
Definition MRMeshMeshDistance.h:21
PointOnFace a
two closest points: from meshes A and B respectively
Definition MRMeshMeshDistance.h:19
PointOnFace b
Definition MRMeshMeshDistance.h:19
Definition MRMeshMeshDistance.h:35
PointOnFace b
Definition MRMeshMeshDistance.h:37
MeshMeshCollisionStatus status
mutual status of two meshes
Definition MRMeshMeshDistance.h:40
PointOnFace a
two closest points: from meshes A and B respectively
Definition MRMeshMeshDistance.h:37
float signedDist
signed distance between a and b, positive if meshes do not collide
Definition MRMeshMeshDistance.h:43
a point located on some mesh's face
Definition MRPointOnFace.h:16