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/common.h>
5#include <MRCMisc/exports.h>
6
7#include <stdbool.h>
8#include <stddef.h>
9
10#ifdef __cplusplus
11extern "C" {
12#endif
13
14typedef struct MR_AffineXf3f MR_AffineXf3f; // Defined in `#include <MRCMesh/MRAffineXf.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_function_MR_Vector3i_from_const_MR_Vector3f_ref MR_std_function_MR_Vector3i_from_const_MR_Vector3f_ref; // Defined in `#include <MRCMisc/std_function_MR_Vector3i_from_const_MR_Vector3f_ref.h>`.
19typedef struct MR_std_vector_MR_EdgeId MR_std_vector_MR_EdgeId; // Defined in `#include <MRCMisc/std_vector_MR_EdgeId.h>`.
20typedef struct MR_std_vector_MR_EdgeTri MR_std_vector_MR_EdgeTri; // Defined in `#include <MRCMisc/std_vector_MR_EdgeTri.h>`.
21typedef struct MR_std_vector_MR_FaceId MR_std_vector_MR_FaceId; // Defined in `#include <MRCMisc/std_vector_MR_FaceId.h>`.
22typedef struct MR_std_vector_MR_VarEdgeTri MR_std_vector_MR_VarEdgeTri; // Defined in `#include <MRCMisc/std_vector_MR_VarEdgeTri.h>`.
23
24
28typedef struct MR_EdgeTri MR_EdgeTri;
29
33
39
44MRC_API const MR_EdgeId *MR_EdgeTri_Get_edge(const MR_EdgeTri *_this);
45
50MRC_API void MR_EdgeTri_Set_edge(MR_EdgeTri *_this, MR_EdgeId value);
51
57
62MRC_API const MR_FaceId *MR_EdgeTri_Get_tri(const MR_EdgeTri *_this);
63
68MRC_API void MR_EdgeTri_Set_tri(MR_EdgeTri *_this, MR_FaceId value);
69
75
79
84
87MRC_API const MR_EdgeTri *MR_EdgeTri_OffsetPtr(const MR_EdgeTri *ptr, ptrdiff_t i);
88
92
98
104
106MRC_API void MR_EdgeTri_Destroy(const MR_EdgeTri *_this);
107
109MRC_API void MR_EdgeTri_DestroyArray(const MR_EdgeTri *_this);
110
118
122MRC_API bool MR_equal_MR_EdgeTri(const MR_EdgeTri *a, const MR_EdgeTri *b);
123
128MRC_API const MR_EdgeId *MR_VarEdgeTri_Get_edge(const MR_VarEdgeTri *_this);
129
135
141
147
154
160
164
169
172MRC_API const MR_VarEdgeTri *MR_VarEdgeTri_OffsetPtr(const MR_VarEdgeTri *ptr, ptrdiff_t i);
173
177
183
189
194MRC_API MR_VarEdgeTri *MR_VarEdgeTri_Construct_2(bool isEdgeATriB, const MR_EdgeTri *et);
195
197MRC_API void MR_VarEdgeTri_Destroy(const MR_VarEdgeTri *_this);
198
200MRC_API void MR_VarEdgeTri_DestroyArray(const MR_VarEdgeTri *_this);
201
205
213
217
220MRC_API bool MR_VarEdgeTri_isEdgeATriB(const MR_VarEdgeTri *_this);
221
226
229MRC_API bool MR_VarEdgeTri_valid(const MR_VarEdgeTri *_this);
230
234MRC_API bool MR_equal_MR_VarEdgeTri(const MR_VarEdgeTri *_this, const MR_VarEdgeTri *_1);
235
239
244
248
252
258
261
264
272
277
289MRC_API MR_std_vector_MR_VarEdgeTri *MR_findCollidingEdgeTrisPrecise_5(const MR_MeshPart *a, const MR_MeshPart *b, MR_PassBy conv_pass_by, MR_std_function_MR_Vector3i_from_const_MR_Vector3f_ref *conv, const MR_AffineXf3f *rigidB2A, const bool *anyIntersection);
290
303MRC_API MR_std_vector_MR_EdgeTri *MR_findSelfCollidingEdgeTrisPrecise(const MR_MeshPart *mp, MR_PassBy conv_pass_by, MR_std_function_MR_Vector3i_from_const_MR_Vector3f_ref *conv, const bool *anyIntersection, const MR_AffineXf3f *rigidB2A, const int *aVertSizes);
304
314
324
332
343
344#ifdef __cplusplus
345} // extern "C"
346#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:28
MRC_API const MR_EdgeTri * MR_EdgeTri_OffsetPtr(const MR_EdgeTri *ptr, ptrdiff_t i)
MRC_API MR_std_vector_MR_VarEdgeTri * MR_findCollidingEdgeTrisPrecise_5(const MR_MeshPart *a, const MR_MeshPart *b, MR_PassBy conv_pass_by, MR_std_function_MR_Vector3i_from_const_MR_Vector3f_ref *conv, const MR_AffineXf3f *rigidB2A, const bool *anyIntersection)
finds all pairs of colliding edges from one mesh and triangle from another mesh
MRC_API MR_VarEdgeTri_FlaggedTri * MR_VarEdgeTri_FlaggedTri_AssignFromAnother(MR_VarEdgeTri_FlaggedTri *_this, const MR_VarEdgeTri_FlaggedTri *_other)
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_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, MR_PassBy conv_pass_by, MR_std_function_MR_Vector3i_from_const_MR_Vector3f_ref *conv, const MR_AffineXf3f *rigidB2A)
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
struct MR_std_function_MR_Vector3i_from_const_MR_Vector3f_ref MR_std_function_MR_Vector3i_from_const_MR_Vector3f_ref
Definition MRMeshCollidePrecise.h:18
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_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, MR_PassBy conv_pass_by, MR_std_function_MR_Vector3i_from_const_MR_Vector3f_ref *conv, const MR_AffineXf3f *rigidB2A)
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:38
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_std_vector_MR_EdgeTri * MR_findSelfCollidingEdgeTrisPrecise(const MR_MeshPart *mp, MR_PassBy conv_pass_by, MR_std_function_MR_Vector3i_from_const_MR_Vector3f_ref *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_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 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:32
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_VarEdgeTri_FlaggedTri * MR_VarEdgeTri_GetMutable_flaggedTri(MR_VarEdgeTri *_this)
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)
Definition MRAffineXf.h:39
Definition MRId.h:153
Definition MRId.h:45