21 EdgeTri( EdgeId e, FaceId t ) : edge( e ), tri( t ) { }
26 return a.edge.undirected() == b.edge.undirected() && a.tri == b.tri;
37 unsigned int face : 31 = 0;
42 [[nodiscard]]
bool isEdgeATriB()
const {
return bool( flaggedTri.
isEdgeATriB ); }
43 [[nodiscard]] EdgeTri edgeTri()
const {
return EdgeTri( edge, tri() ); }
45 [[nodiscard]]
bool valid()
const {
return edge.valid(); }
46 [[nodiscard]]
explicit operator bool()
const {
return edge.valid(); }
49 VarEdgeTri(
bool isEdgeATriB, EdgeId e, FaceId t )
56 VarEdgeTri(
bool isEdgeATriB,
const EdgeTri& et ) :
VarEdgeTri( isEdgeATriB, et.edge, et.tri ) {}
58 [[nodiscard]]
bool operator==(
const VarEdgeTri& )
const =
default;
60static_assert(
sizeof( VarEdgeTri ) == 8 );
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,
87 ConvertToIntVector conv,
const AffineXf3f * rigidB2A =
nullptr );
91 const Mesh & a,
const std::vector<FaceId> & facesA,
92 const Mesh & b,
const std::vector<EdgeId> & edgesB,
93 ConvertToIntVector conv,
const AffineXf3f * rigidB2A =
nullptr );
#define MRMESH_API
Definition MRMeshFwd.h:80
Definition MRPrecisePredicates3.h:58
Definition MRMesh/MRMeshCollidePrecise.h:17
Definition MRMesh/MRMesh.h:23
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
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