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#include <stdint.h>
10
11#ifdef __cplusplus
12extern "C" {
13#endif
14
15typedef struct MR_AffineXf3f MR_AffineXf3f; // Defined in `#include <MRCMesh/MRAffineXf.h>`.
16typedef struct MR_CoordinateConverters MR_CoordinateConverters; // Defined in `#include <MRCMesh/MRPrecisePredicates3.h>`.
17typedef struct MR_Mesh MR_Mesh; // Defined in `#include <MRCMesh/MRMesh.h>`.
18typedef struct MR_MeshPart MR_MeshPart; // Defined in `#include <MRCMesh/MRMeshPart.h>`.
19typedef 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>`.
20typedef struct MR_std_vector_MR_EdgeId MR_std_vector_MR_EdgeId; // Defined in `#include <MRCMisc/std_vector_MR_EdgeId.h>`.
21typedef struct MR_std_vector_MR_EdgeTri MR_std_vector_MR_EdgeTri; // Defined in `#include <MRCMisc/std_vector_MR_EdgeTri.h>`.
22typedef struct MR_std_vector_MR_FaceId MR_std_vector_MR_FaceId; // Defined in `#include <MRCMisc/std_vector_MR_FaceId.h>`.
23typedef struct MR_std_vector_MR_VarEdgeTri MR_std_vector_MR_VarEdgeTri; // Defined in `#include <MRCMisc/std_vector_MR_VarEdgeTri.h>`.
24
25
28typedef struct MR_EdgeTri MR_EdgeTri;
29
34
37
42
46
51
56
60
65
69
74
76MRC_API const MR_EdgeTri *MR_EdgeTri_OffsetPtr(const MR_EdgeTri *ptr, ptrdiff_t i);
77
80
85
89
92
95
101
106
111
115
120
125
130
135
139
144
147
150
155
159
164
167
170
174
180
184
188
193
197
202
206
211
214
217
222
225
228
234
239
252
265MRC_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 int32_t *aVertSizes);
266
276
286
294
305
306#ifdef __cplusplus
307} // extern "C"
308#endif
struct MR_MeshPart MR_MeshPart
Definition MRAABBTree.h:14
struct MR_std_vector_MR_EdgeId MR_std_vector_MR_EdgeId
Definition MRContoursStitch.h:11
struct MR_Mesh MR_Mesh
Definition MRCtm.h:13
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)
Offsets a pointer to an array element by i positions (not bytes). Use only if you're certain that the...
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)
Offsets a pointer to an array element by i positions (not bytes). Use only if you're certain that the...
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:19
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)
Offsets a pointer to an array element by i positions (not bytes). Use only if you're certain that the...
MRC_API const MR_VarEdgeTri * MR_VarEdgeTri_OffsetPtr(const MR_VarEdgeTri *ptr, ptrdiff_t i)
Offsets a pointer to an array element by i positions (not bytes). Use only if you're certain that the...
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 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 int32_t *aVertSizes)
finds all pairs of colliding edges and triangle within one mesh
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:33
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 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)
Offsets a pointer to an array element by i positions (not bytes). Use only if you're certain that the...
struct MR_VarEdgeTri_FlaggedTri MR_VarEdgeTri_FlaggedTri
Generated from class MR::VarEdgeTri::FlaggedTri.
Definition MRMeshCollidePrecise.h:36
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)
Offsets a pointer to an array element by i positions (not bytes). Use only if you're certain that the...
MRC_API void MR_VarEdgeTri_Set_flaggedTri(MR_VarEdgeTri *_this, const MR_VarEdgeTri_FlaggedTri *value)
MR_PassBy
Definition common.h:19
#define MRC_API
Definition exports.h:11
Definition MRAffineXf.h:36
Definition MRId.h:152
Definition MRId.h:46