MeshLib C Docs
Loading...
Searching...
No Matches
MRMeshCollidePrecise.h
Go to the documentation of this file.
1#pragma once
2
3#include <MRCMesh/MRId.h>
4#include <MRCMisc/exports.h>
5
6#include <stdbool.h>
7#include <stddef.h>
8
9#ifdef __cplusplus
10extern "C" {
11#endif
12
13typedef struct MR_AffineXf3f MR_AffineXf3f; // Defined in `#include <MRCMesh/MRAffineXf.h>`.
14typedef struct MR_ConvertToIntVector MR_ConvertToIntVector; // Defined in `#include <MRCMesh/MRPrecisePredicates3.h>`.
15typedef struct MR_CoordinateConverters MR_CoordinateConverters; // Defined in `#include <MRCMesh/MRPrecisePredicates3.h>`.
16typedef struct MR_Mesh MR_Mesh; // Defined in `#include <MRCMesh/MRMesh.h>`.
17typedef struct MR_MeshPart MR_MeshPart; // Defined in `#include <MRCMesh/MRMeshPart.h>`.
18typedef struct MR_std_vector_MR_EdgeId MR_std_vector_MR_EdgeId; // Defined in `#include <MRCMisc/std_vector_MR_EdgeId.h>`.
19typedef struct MR_std_vector_MR_EdgeTri MR_std_vector_MR_EdgeTri; // Defined in `#include <MRCMisc/std_vector_MR_EdgeTri.h>`.
20typedef struct MR_std_vector_MR_FaceId MR_std_vector_MR_FaceId; // Defined in `#include <MRCMisc/std_vector_MR_FaceId.h>`.
21typedef struct MR_std_vector_MR_VarEdgeTri MR_std_vector_MR_VarEdgeTri; // Defined in `#include <MRCMisc/std_vector_MR_VarEdgeTri.h>`.
22
23
27typedef struct MR_EdgeTri MR_EdgeTri;
28
32
38
44
50
56
62
68
74
78
83
86MRC_API const MR_EdgeTri *MR_EdgeTri_OffsetPtr(const MR_EdgeTri *ptr, ptrdiff_t i);
87
91
97
103
106
109
117
122
128
134
140
146
153
159
163
168
172
176
182
188
194
197
200
204
212
216
220
225
229
234
238
243
247
251
257
260
263
271
276
289MRC_API MR_std_vector_MR_VarEdgeTri *MR_findCollidingEdgeTrisPrecise_5(const MR_MeshPart *a, const MR_MeshPart *b, const MR_ConvertToIntVector *conv, const MR_AffineXf3f *rigidB2A, const bool *anyIntersection);
290
304MRC_API MR_std_vector_MR_EdgeTri *MR_findSelfCollidingEdgeTrisPrecise(const MR_MeshPart *mp, const MR_ConvertToIntVector *conv, const bool *anyIntersection, const MR_AffineXf3f *rigidB2A, const int *aVertSizes);
305
316
327
335
346
347#ifdef __cplusplus
348} // extern "C"
349#endif
struct MR_MeshPart MR_MeshPart
Definition MRAABBTree.h:19
struct MR_std_vector_MR_EdgeId MR_std_vector_MR_EdgeId
Definition MRContoursStitch.h:11
struct MR_Mesh MR_Mesh
Definition MRCtm.h:16
struct MR_std_vector_MR_FaceId MR_std_vector_MR_FaceId
Definition MRExtractIsolines.h:24
struct MR_std_vector_MR_VarEdgeTri MR_std_vector_MR_VarEdgeTri
Definition MRIntersectionContour.h:14
struct MR_std_vector_MR_EdgeTri MR_std_vector_MR_EdgeTri
Definition MRIntersectionContour.h:12
struct MR_CoordinateConverters MR_CoordinateConverters
Definition MRMeshBoolean.h:16
MRC_API MR_VarEdgeTri * MR_VarEdgeTri_Construct_2(bool isEdgeATriB, const MR_EdgeTri *et)
MRC_API MR_EdgeTri * MR_EdgeTri_DefaultConstructArray(size_t num_elems)
MRC_API const MR_FaceId * MR_EdgeTri_Get_tri(const MR_EdgeTri *_this)
struct MR_EdgeTri MR_EdgeTri
Definition MRMeshCollidePrecise.h:27
MRC_API const MR_EdgeTri * MR_EdgeTri_OffsetPtr(const MR_EdgeTri *ptr, ptrdiff_t i)
MRC_API MR_VarEdgeTri_FlaggedTri * MR_VarEdgeTri_FlaggedTri_AssignFromAnother(MR_VarEdgeTri_FlaggedTri *_this, const MR_VarEdgeTri_FlaggedTri *_other)
struct MR_ConvertToIntVector MR_ConvertToIntVector
Definition MRMeshCollidePrecise.h:14
MRC_API MR_VarEdgeTri * MR_VarEdgeTri_AssignFromAnother(MR_VarEdgeTri *_this, const MR_VarEdgeTri *_other)
MRC_API MR_CoordinateConverters * MR_getVectorConverters_3(const MR_MeshPart *a, const MR_MeshPart *b, const MR_AffineXf3f *rigidB2A)
creates simple converters from Vector3f to Vector3i and back in mesh parts area range
MRC_API MR_VarEdgeTri * MR_VarEdgeTri_ConstructFromAnother(const MR_VarEdgeTri *_other)
MRC_API MR_EdgeTri * MR_EdgeTri_DefaultConstruct(void)
MRC_API MR_EdgeTri * MR_EdgeTri_ConstructFromAnother(const MR_EdgeTri *_other)
MRC_API void MR_EdgeTri_Set_edge(MR_EdgeTri *_this, MR_EdgeId value)
MRC_API MR_VarEdgeTri_FlaggedTri * MR_VarEdgeTri_FlaggedTri_DefaultConstructArray(size_t num_elems)
MRC_API const MR_VarEdgeTri_FlaggedTri * MR_VarEdgeTri_FlaggedTri_OffsetPtr(const MR_VarEdgeTri_FlaggedTri *ptr, ptrdiff_t i)
MRC_API const MR_EdgeId * MR_VarEdgeTri_Get_edge(const MR_VarEdgeTri *_this)
MRC_API MR_VarEdgeTri * MR_VarEdgeTri_Construct_3(bool isEdgeATriB, MR_EdgeId e, MR_FaceId t)
MRC_API MR_FaceId * MR_EdgeTri_GetMutable_tri(MR_EdgeTri *_this)
MRC_API MR_CoordinateConverters * MR_getVectorConverters_1(const MR_MeshPart *a)
creates simple converters from Vector3f to Vector3i and back in mesh part area range
MRC_API bool MR_equal_MR_EdgeTri(const MR_EdgeTri *a, const MR_EdgeTri *b)
MRC_API MR_VarEdgeTri_FlaggedTri * MR_VarEdgeTri_FlaggedTri_OffsetMutablePtr(MR_VarEdgeTri_FlaggedTri *ptr, ptrdiff_t i)
MRC_API const MR_VarEdgeTri * MR_VarEdgeTri_OffsetPtr(const MR_VarEdgeTri *ptr, ptrdiff_t i)
MRC_API void MR_EdgeTri_Destroy(const MR_EdgeTri *_this)
Destroys a heap-allocated instance of MR_EdgeTri. Does nothing if the pointer is null.
MRC_API void MR_EdgeTri_DestroyArray(const MR_EdgeTri *_this)
Destroys a heap-allocated array of MR_EdgeTri. Does nothing if the pointer is null.
MRC_API void MR_VarEdgeTri_FlaggedTri_DestroyArray(const MR_VarEdgeTri_FlaggedTri *_this)
Destroys a heap-allocated array of MR_VarEdgeTri_FlaggedTri. Does nothing if the pointer is null.
MRC_API bool MR_VarEdgeTri_isEdgeATriB(const MR_VarEdgeTri *_this)
MRC_API void MR_VarEdgeTri_Set_edge(MR_VarEdgeTri *_this, MR_EdgeId value)
MRC_API MR_VarEdgeTri_FlaggedTri * MR_VarEdgeTri_FlaggedTri_DefaultConstruct(void)
MRC_API MR_FaceId MR_VarEdgeTri_tri(const MR_VarEdgeTri *_this)
MRC_API const MR_VarEdgeTri_FlaggedTri * MR_VarEdgeTri_Get_flaggedTri(const MR_VarEdgeTri *_this)
MRC_API MR_EdgeId * MR_VarEdgeTri_GetMutable_edge(MR_VarEdgeTri *_this)
MRC_API MR_EdgeTri * MR_EdgeTri_Construct(MR_EdgeId e, MR_FaceId t)
struct MR_VarEdgeTri MR_VarEdgeTri
Definition MRMeshCollidePrecise.h:37
MRC_API bool MR_equal_MR_VarEdgeTri(const MR_VarEdgeTri *_this, const MR_VarEdgeTri *_1)
MRC_API bool MR_VarEdgeTri_ConvertTo_bool(const MR_VarEdgeTri *_this)
MRC_API MR_EdgeId * MR_EdgeTri_GetMutable_edge(MR_EdgeTri *_this)
MRC_API void MR_VarEdgeTri_Destroy(const MR_VarEdgeTri *_this)
Destroys a heap-allocated instance of MR_VarEdgeTri. Does nothing if the pointer is null.
MRC_API MR_std_vector_MR_VarEdgeTri * MR_findCollidingEdgeTrisPrecise_5(const MR_MeshPart *a, const MR_MeshPart *b, const MR_ConvertToIntVector *conv, const MR_AffineXf3f *rigidB2A, const bool *anyIntersection)
finds all pairs of colliding edges from one mesh and triangle from another mesh
MRC_API bool MR_VarEdgeTri_valid(const MR_VarEdgeTri *_this)
MRC_API void MR_VarEdgeTri_FlaggedTri_Destroy(const MR_VarEdgeTri_FlaggedTri *_this)
Destroys a heap-allocated instance of MR_VarEdgeTri_FlaggedTri. Does nothing if the pointer is null.
MRC_API void MR_EdgeTri_Set_tri(MR_EdgeTri *_this, MR_FaceId value)
MRC_API MR_EdgeTri * MR_VarEdgeTri_edgeTri(const MR_VarEdgeTri *_this)
MRC_API MR_VarEdgeTri * MR_VarEdgeTri_OffsetMutablePtr(MR_VarEdgeTri *ptr, ptrdiff_t i)
struct MR_VarEdgeTri_FlaggedTri MR_VarEdgeTri_FlaggedTri
Definition MRMeshCollidePrecise.h:31
MRC_API bool MR_equal_MR_VarEdgeTri_FlaggedTri(const MR_VarEdgeTri_FlaggedTri *_this, const MR_VarEdgeTri_FlaggedTri *_1)
MRC_API MR_EdgeTri * MR_EdgeTri_AssignFromAnother(MR_EdgeTri *_this, const MR_EdgeTri *_other)
MRC_API MR_std_vector_MR_EdgeTri * MR_findCollidingEdgeTrisPrecise_6_std_vector_MR_EdgeId(const MR_Mesh *a, const MR_std_vector_MR_EdgeId *edgesA, const MR_Mesh *b, const MR_std_vector_MR_FaceId *facesB, const MR_ConvertToIntVector *conv, const MR_AffineXf3f *rigidB2A)
MRC_API MR_std_vector_MR_EdgeTri * MR_findCollidingEdgeTrisPrecise_6_std_vector_MR_FaceId(const MR_Mesh *a, const MR_std_vector_MR_FaceId *facesA, const MR_Mesh *b, const MR_std_vector_MR_EdgeId *edgesB, const MR_ConvertToIntVector *conv, const MR_AffineXf3f *rigidB2A)
MRC_API MR_VarEdgeTri_FlaggedTri * MR_VarEdgeTri_GetMutable_flaggedTri(MR_VarEdgeTri *_this)
MRC_API MR_std_vector_MR_EdgeTri * MR_findSelfCollidingEdgeTrisPrecise(const MR_MeshPart *mp, const MR_ConvertToIntVector *conv, const bool *anyIntersection, const MR_AffineXf3f *rigidB2A, const int *aVertSizes)
finds all pairs of colliding edges and triangle within one mesh
MRC_API MR_VarEdgeTri * MR_VarEdgeTri_DefaultConstructArray(size_t num_elems)
MRC_API MR_VarEdgeTri * MR_VarEdgeTri_DefaultConstruct(void)
MRC_API MR_VarEdgeTri_FlaggedTri * MR_VarEdgeTri_FlaggedTri_ConstructFromAnother(const MR_VarEdgeTri_FlaggedTri *_other)
MRC_API void MR_VarEdgeTri_DestroyArray(const MR_VarEdgeTri *_this)
Destroys a heap-allocated array of MR_VarEdgeTri. Does nothing if the pointer is null.
MRC_API const MR_EdgeId * MR_EdgeTri_Get_edge(const MR_EdgeTri *_this)
MRC_API MR_EdgeTri * MR_EdgeTri_OffsetMutablePtr(MR_EdgeTri *ptr, ptrdiff_t i)
MRC_API void MR_VarEdgeTri_Set_flaggedTri(MR_VarEdgeTri *_this, const MR_VarEdgeTri_FlaggedTri *value)
#define MRC_API
Definition include/MRCMisc/exports.h:11
Definition MRAffineXf.h:39
Definition MRId.h:146
Definition MRId.h:31