26 return a.
edge.undirected() == b.
edge.undirected() && a.
tri == b.
tri;
37 unsigned int face : 31 = 0;
45 [[nodiscard]]
bool valid()
const {
return edge.valid(); }
46 [[nodiscard]]
explicit operator bool()
const {
return edge.valid(); }
72 ConvertToIntVector conv,
const AffineXf3f* rigidB2A =
nullptr,
bool anyIntersection =
false );
81 ConvertToIntVector conv,
bool anyIntersection =
false,
const AffineXf3f* rigidB2A =
nullptr,
int aVertSizes = 0 );
85 const Mesh & a,
const std::vector<EdgeId> & edgesA,
86 const Mesh & b,
const std::vector<FaceId> & facesB,
91 const Mesh & a,
const std::vector<FaceId> & facesA,
92 const Mesh & b,
const std::vector<EdgeId> & edgesB,
105 const AffineXf3f* rigidB2A =
nullptr );
#define MRMESH_API
Definition MRMesh/MRMeshFwd.h:80
MRMESH_API PreciseCollisionResult findCollidingEdgeTrisPrecise(const MeshPart &a, const MeshPart &b, ConvertToIntVector conv, const AffineXf3f *rigidB2A=nullptr, bool anyIntersection=false)
finds all pairs of colliding edges from one mesh and triangle from another mesh
std::vector< VarEdgeTri > PreciseCollisionResult
Definition MRMesh/MRMeshCollidePrecise.h:64
MRMESH_API std::vector< EdgeTri > findSelfCollidingEdgeTrisPrecise(const MeshPart &mp, ConvertToIntVector conv, bool anyIntersection=false, const AffineXf3f *rigidB2A=nullptr, int aVertSizes=0)
finds all pairs of colliding edges and triangle within one mesh
MRMESH_API CoordinateConverters getVectorConverters(const MeshPart &a)
creates simple converters from Vector3f to Vector3i and back in mesh part area range
MRMESH_API bool operator==(const BitSet &a, const BitSet &b)
compare that two bit sets have the same set bits (they can be equal even if sizes are distinct but la...
Definition MRCameraOrientationPlugin.h:8
std::function< Vector3i(const Vector3f &)> ConvertToIntVector
float-to-int coordinate converter
Definition MRMesh/MRPrecisePredicates3.h:53
this struct contains coordinate converters float-int-float
Definition MRMesh/MRPrecisePredicates3.h:58
edge from one mesh and triangle from another mesh
Definition MRMesh/MRMeshCollidePrecise.h:17
EdgeTri(EdgeId e, FaceId t)
Definition MRMesh/MRMeshCollidePrecise.h:21
EdgeId edge
Definition MRMesh/MRMeshCollidePrecise.h:18
FaceId tri
Definition MRMesh/MRMeshCollidePrecise.h:19
Definition MRMesh/MRMesh.h:23
Definition MRMesh/MRMeshCollidePrecise.h:35
unsigned int isEdgeATriB
Definition MRMesh/MRMeshCollidePrecise.h:36
bool operator==(const FlaggedTri &) const =default
unsigned int face
Definition MRMesh/MRMeshCollidePrecise.h:37
Definition MRMesh/MRMeshCollidePrecise.h:32
EdgeTri edgeTri() const
Definition MRMesh/MRMeshCollidePrecise.h:43
bool isEdgeATriB() const
Definition MRMesh/MRMeshCollidePrecise.h:42
EdgeId edge
Definition MRMesh/MRMeshCollidePrecise.h:33
bool operator==(const VarEdgeTri &) const =default
bool valid() const
Definition MRMesh/MRMeshCollidePrecise.h:45
VarEdgeTri(bool isEdgeATriB, const EdgeTri &et)
Definition MRMesh/MRMeshCollidePrecise.h:56
struct MR::VarEdgeTri::FlaggedTri flaggedTri
VarEdgeTri(bool isEdgeATriB, EdgeId e, FaceId t)
Definition MRMesh/MRMeshCollidePrecise.h:49
FaceId tri() const
Definition MRMesh/MRMeshCollidePrecise.h:41