MeshLib C Docs
Loading...
Searching...
No Matches
MRPolyline2Collide.h File Reference
#include <MRCMisc/exports.h>
#include <stdbool.h>

Go to the source code of this file.

Typedefs

typedef struct MR_AffineXf2f MR_AffineXf2f
 
typedef struct MR_Polyline2 MR_Polyline2
 
typedef struct MR_UndirectedEdgeBitSet MR_UndirectedEdgeBitSet
 
typedef struct MR_std_pair_MR_UndirectedEdgeBitSet_MR_UndirectedEdgeBitSet MR_std_pair_MR_UndirectedEdgeBitSet_MR_UndirectedEdgeBitSet
 
typedef struct MR_std_vector_MR_EdgePointPair MR_std_vector_MR_EdgePointPair
 
typedef struct MR_std_vector_MR_UndirectedEdgeUndirectedEdge MR_std_vector_MR_UndirectedEdgeUndirectedEdge
 

Functions

MRC_API MR_std_vector_MR_EdgePointPairMR_findCollidingEdgePairs (const MR_Polyline2 *a, const MR_Polyline2 *b, const MR_AffineXf2f *rigidB2A, const bool *firstIntersectionOnly)
 finds all pairs of colliding edges from two 2d polylines
 
MRC_API MR_std_vector_MR_UndirectedEdgeUndirectedEdgeMR_findCollidingEdges (const MR_Polyline2 *a, const MR_Polyline2 *b, const MR_AffineXf2f *rigidB2A, const bool *firstIntersectionOnly)
 finds all pairs of colliding edges from two 2d polylines
 
MRC_API MR_std_pair_MR_UndirectedEdgeBitSet_MR_UndirectedEdgeBitSetMR_findCollidingEdgesBitsets (const MR_Polyline2 *a, const MR_Polyline2 *b, const MR_AffineXf2f *rigidB2A)
 finds bitset per polyline with colliding edges
 
MRC_API MR_std_vector_MR_EdgePointPairMR_findSelfCollidingEdgePairs (const MR_Polyline2 *polyline)
 
MRC_API MR_std_vector_MR_UndirectedEdgeUndirectedEdgeMR_findSelfCollidingEdges (const MR_Polyline2 *polyline)
 
MRC_API MR_UndirectedEdgeBitSetMR_findSelfCollidingEdgesBS (const MR_Polyline2 *polyline)
 
MRC_API bool MR_isInside_MR_Polyline2 (const MR_Polyline2 *a, const MR_Polyline2 *b, const MR_AffineXf2f *rigidB2A)
 checks that arbitrary 2d polyline A is inside of closed 2d polyline B
 

Typedef Documentation

◆ MR_AffineXf2f

typedef struct MR_AffineXf2f MR_AffineXf2f

◆ MR_Polyline2

typedef struct MR_Polyline2 MR_Polyline2

◆ MR_std_pair_MR_UndirectedEdgeBitSet_MR_UndirectedEdgeBitSet

◆ MR_std_vector_MR_EdgePointPair

◆ MR_std_vector_MR_UndirectedEdgeUndirectedEdge

◆ MR_UndirectedEdgeBitSet

Function Documentation

◆ MR_findCollidingEdgePairs()

MRC_API MR_std_vector_MR_EdgePointPair * MR_findCollidingEdgePairs ( const MR_Polyline2 * a,
const MR_Polyline2 * b,
const MR_AffineXf2f * rigidB2A,
const bool * firstIntersectionOnly )

finds all pairs of colliding edges from two 2d polylines

Parameters
rigidB2Arigid transformation from B-polyline space to A polyline space, nullptr considered as identity transformation
firstIntersectionOnlyif true then the function returns at most one pair of intersecting edges and returns faster Generated from function MR::findCollidingEdgePairs. Parameter a can not be null. It is a single object. Parameter b can not be null. It is a single object. Parameter rigidB2A defaults to a null pointer in C++. Parameter firstIntersectionOnly has a default argument: false, pass a null pointer to use it. Never returns null. Returns an instance allocated on the heap! Must call MR_std_vector_MR_EdgePointPair_Destroy() to free it when you're done using it.

◆ MR_findCollidingEdges()

MRC_API MR_std_vector_MR_UndirectedEdgeUndirectedEdge * MR_findCollidingEdges ( const MR_Polyline2 * a,
const MR_Polyline2 * b,
const MR_AffineXf2f * rigidB2A,
const bool * firstIntersectionOnly )

finds all pairs of colliding edges from two 2d polylines

Parameters
rigidB2Arigid transformation from B-polyline space to A polyline space, nullptr considered as identity transformation
firstIntersectionOnlyif true then the function returns at most one pair of intersecting edges and returns faster Generated from function MR::findCollidingEdges. Parameter a can not be null. It is a single object. Parameter b can not be null. It is a single object. Parameter rigidB2A defaults to a null pointer in C++. Parameter firstIntersectionOnly has a default argument: false, pass a null pointer to use it. Never returns null. Returns an instance allocated on the heap! Must call MR_std_vector_MR_UndirectedEdgeUndirectedEdge_Destroy() to free it when you're done using it.

◆ MR_findCollidingEdgesBitsets()

MRC_API MR_std_pair_MR_UndirectedEdgeBitSet_MR_UndirectedEdgeBitSet * MR_findCollidingEdgesBitsets ( const MR_Polyline2 * a,
const MR_Polyline2 * b,
const MR_AffineXf2f * rigidB2A )

finds bitset per polyline with colliding edges

Parameters
rigidB2Arigid transformation from B-polyline space to A polyline space, nullptr considered as identity transformation Generated from function MR::findCollidingEdgesBitsets. Parameter a can not be null. It is a single object. Parameter b can not be null. It is a single object. Parameter rigidB2A defaults to a null pointer in C++. Never returns null. Returns an instance allocated on the heap! Must call MR_std_pair_MR_UndirectedEdgeBitSet_MR_UndirectedEdgeBitSet_Destroy() to free it when you're done using it.

◆ MR_findSelfCollidingEdgePairs()

MRC_API MR_std_vector_MR_EdgePointPair * MR_findSelfCollidingEdgePairs ( const MR_Polyline2 * polyline)

finds all pairs of colliding edges from 2d polyline Generated from function MR::findSelfCollidingEdgePairs. Parameter polyline can not be null. It is a single object. Never returns null. Returns an instance allocated on the heap! Must call MR_std_vector_MR_EdgePointPair_Destroy() to free it when you're done using it.

◆ MR_findSelfCollidingEdges()

MRC_API MR_std_vector_MR_UndirectedEdgeUndirectedEdge * MR_findSelfCollidingEdges ( const MR_Polyline2 * polyline)

finds all pairs of colliding edges from 2d polyline Generated from function MR::findSelfCollidingEdges. Parameter polyline can not be null. It is a single object. Never returns null. Returns an instance allocated on the heap! Must call MR_std_vector_MR_UndirectedEdgeUndirectedEdge_Destroy() to free it when you're done using it.

◆ MR_findSelfCollidingEdgesBS()

MRC_API MR_UndirectedEdgeBitSet * MR_findSelfCollidingEdgesBS ( const MR_Polyline2 * polyline)

finds the union of all self-intersecting edges Generated from function MR::findSelfCollidingEdgesBS. Parameter polyline can not be null. It is a single object. Never returns null. Returns an instance allocated on the heap! Must call MR_UndirectedEdgeBitSet_Destroy() to free it when you're done using it.

◆ MR_isInside_MR_Polyline2()

MRC_API bool MR_isInside_MR_Polyline2 ( const MR_Polyline2 * a,
const MR_Polyline2 * b,
const MR_AffineXf2f * rigidB2A )

checks that arbitrary 2d polyline A is inside of closed 2d polyline B

Parameters
rigidB2Arigid transformation from B-polyline space to A polyline space, nullptr considered as identity transformation Generated from function MR::isInside. Parameter a can not be null. It is a single object. Parameter b can not be null. It is a single object. Parameter rigidB2A defaults to a null pointer in C++.