MeshLib
 
Loading...
Searching...
No Matches
MRMeshCollidePrecise.h File Reference
#include "MRMeshFwd.h"
#include "MRId.h"
#include "MRMeshPart.h"
#include "MRPrecisePredicates3.h"
#include "MRVector.h"

Go to the source code of this file.

Classes

struct  MREdgeTri
 edge from one mesh and triangle from another mesh More...
 

Typedefs

typedef MR_EXTERN_C_BEGIN struct MREdgeTri MREdgeTri
 edge from one mesh and triangle from another mesh
 
typedef struct MRPreciseCollisionResult MRPreciseCollisionResult
 

Functions

MRMESHC_API bool mrEdgeTriEq (const MREdgeTri *a, const MREdgeTri *b)
 
MRMESHC_API const MRVectorEdgeTri mrPreciseCollisionResultEdgesAtrisB (const MRPreciseCollisionResult *result)
 each edge is directed to have its origin inside and its destination outside of the other mesh
 
MRMESHC_API const MRVectorEdgeTri mrPreciseCollisionResultEdgesBtrisA (const MRPreciseCollisionResult *result)
 each edge is directed to have its origin inside and its destination outside of the other mesh
 
MRMESHC_API void mrPreciseCollisionResultFree (MRPreciseCollisionResult *result)
 deallocates the PreciseCollisionResult object
 
MRMESHC_API MRPreciseCollisionResultmrFindCollidingEdgeTrisPrecise (const MRMeshPart *a, const MRMeshPart *b, const MRConvertToIntVector *conv, const MRAffineXf3f *rigidB2A, bool anyIntersection)
 finds all pairs of colliding edges from one mesh and triangle from another mesh
 
MRMESHC_API MRCoordinateConverters mrGetVectorConverters (const MRMeshPart *a, const MRMeshPart *b, const MRAffineXf3f *rigidB2A)
 creates simple converters from Vector3f to Vector3i and back in mesh parts area range
 

Typedef Documentation

◆ MREdgeTri

typedef MR_EXTERN_C_BEGIN struct MREdgeTri MREdgeTri

edge from one mesh and triangle from another mesh

◆ MRPreciseCollisionResult

Function Documentation

◆ mrEdgeTriEq()

MRMESHC_API bool mrEdgeTriEq ( const MREdgeTri * a,
const MREdgeTri * b )

◆ mrFindCollidingEdgeTrisPrecise()

MRMESHC_API MRPreciseCollisionResult * mrFindCollidingEdgeTrisPrecise ( const MRMeshPart * a,
const MRMeshPart * b,
const MRConvertToIntVector * conv,
const MRAffineXf3f * rigidB2A,
bool anyIntersection )

finds all pairs of colliding edges from one mesh and triangle from another mesh

Parameters
rigidB2Arigid transformation from B-mesh space to A mesh space, NULL considered as identity transformation
anyIntersectionif true then the function returns as fast as it finds any intersection

◆ mrGetVectorConverters()

MRMESHC_API MRCoordinateConverters mrGetVectorConverters ( const MRMeshPart * a,
const MRMeshPart * b,
const MRAffineXf3f * rigidB2A )

creates simple converters from Vector3f to Vector3i and back in mesh parts area range

Parameters
rigidB2Arigid transformation from B-mesh space to A mesh space, nullptr considered as identity transformation

◆ mrPreciseCollisionResultEdgesAtrisB()

MRMESHC_API const MRVectorEdgeTri mrPreciseCollisionResultEdgesAtrisB ( const MRPreciseCollisionResult * result)

each edge is directed to have its origin inside and its destination outside of the other mesh

◆ mrPreciseCollisionResultEdgesBtrisA()

MRMESHC_API const MRVectorEdgeTri mrPreciseCollisionResultEdgesBtrisA ( const MRPreciseCollisionResult * result)

each edge is directed to have its origin inside and its destination outside of the other mesh

◆ mrPreciseCollisionResultFree()

MRMESHC_API void mrPreciseCollisionResultFree ( MRPreciseCollisionResult * result)

deallocates the PreciseCollisionResult object