MeshLib C Docs
Loading...
Searching...
No Matches
MRPrecisePredicates3.h
Go to the documentation of this file.
1#pragma once
2
3#include <MRCMesh/MRId.h>
4#include <MRCMesh/MRVector3.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_Box3d MR_Box3d; // Defined in `#include <MRCMesh/MRBox.h>`.
15typedef struct MR_Vector_MR_Vector3i_MR_VertId MR_Vector_MR_Vector3i_MR_VertId; // Defined in `#include <MRCMesh/MRVector.h>`.
16typedef struct MR_VertBitSet MR_VertBitSet; // Defined in `#include <MRCMesh/MRBitSet.h>`.
17typedef struct MR_VertCoords MR_VertCoords; // Defined in `#include <MRCMesh/MRVector.h>`.
18typedef struct MR_std_array_MR_PreciseVertCoords_4 MR_std_array_MR_PreciseVertCoords_4; // Defined in `#include <MRCMisc/std_array_MR_PreciseVertCoords_4.h>`.
19typedef struct MR_std_array_MR_PreciseVertCoords_5 MR_std_array_MR_PreciseVertCoords_5; // Defined in `#include <MRCMisc/std_array_MR_PreciseVertCoords_5.h>`.
20typedef struct MR_std_array_MR_PreciseVertCoords_8 MR_std_array_MR_PreciseVertCoords_8; // Defined in `#include <MRCMisc/std_array_MR_PreciseVertCoords_8.h>`.
21typedef struct MR_std_optional_MR_Vector3i MR_std_optional_MR_Vector3i; // Defined in `#include <MRCMisc/std_optional_MR_Vector3i.h>`.
22
23
27
31
36
41
46
53MRC_API bool MR_orient3d_3(const MR_Vector3i *a, const MR_Vector3i *b, const MR_Vector3i *c);
54
62MRC_API bool MR_orient3d_4(const MR_Vector3i *a, const MR_Vector3i *b, const MR_Vector3i *c, const MR_Vector3i *d);
63
70
77
84
91
98
105
109
114
121
125
129
135
138
141
149
154
157
164
170
177
184
190
197
201
206
211
215
219
225
228
231
235
243
250
258
264
270
276
282
287
293
297
302
308
312
316
322
325
328
336
341
347
353
359
364
370
376
382
388
392
397
403
407
411
417
420
423
431
437
443
449
456
462
468
475
481
485
490
499
503
507
513
516
519
527
533
539
548
557
567
578
579#ifdef __cplusplus
580} // extern "C"
581#endif
struct MR_VertCoords MR_VertCoords
std::vector<T>-like container that requires specific indexing type,
Definition MRAABBTreePoints.h:21
struct MR_VertBitSet MR_VertBitSet
Definition MRAABBTree.h:22
struct MR_std_array_MR_PreciseVertCoords_4 MR_std_array_MR_PreciseVertCoords_4
Definition MRInSphere.h:17
struct MR_CoordinateConverters MR_CoordinateConverters
Definition MRMeshBoolean.h:16
struct MR_ConvertToIntVector MR_ConvertToIntVector
Definition MRMeshCollidePrecise.h:14
MRC_API const MR_PreciseVertCoords * MR_PreciseVertCoords_OffsetPtr(const MR_PreciseVertCoords *ptr, ptrdiff_t i)
MRC_API const MR_CoordinateConverters * MR_CoordinateConverters_OffsetPtr(const MR_CoordinateConverters *ptr, ptrdiff_t i)
MRC_API const MR_Vector3i * MR_PreciseVertCoords_Get_pt(const MR_PreciseVertCoords *_this)
MRC_API MR_Vector3i MR_ConvertToIntVector_call_MR_Vector3d(const MR_ConvertToIntVector *_this, const MR_Vector3d *p)
MRC_API MR_PreciseVertCoords * MR_PreciseVertCoords_ConstructFromAnother(const MR_PreciseVertCoords *_other)
MRC_API void MR_ConvertToIntVector_Destroy(const MR_ConvertToIntVector *_this)
Destroys a heap-allocated instance of MR_ConvertToIntVector. Does nothing if the pointer is null.
MRC_API bool * MR_TriangleSegmentIntersectResult_GetMutable_doIntersect(MR_TriangleSegmentIntersectResult *_this)
MRC_API void MR_ConvertToFloatVector_DestroyArray(const MR_ConvertToFloatVector *_this)
Destroys a heap-allocated array of MR_ConvertToFloatVector. Does nothing if the pointer is null.
struct MR_std_array_MR_PreciseVertCoords_5 MR_std_array_MR_PreciseVertCoords_5
Definition MRPrecisePredicates3.h:19
MRC_API MR_ConvertToIntVector * MR_getToIntConverter(const MR_Box3d *box)
MRC_API const MR_ConvertToIntVector * MR_ConvertToIntVector_OffsetPtr(const MR_ConvertToIntVector *ptr, ptrdiff_t i)
struct MR_Vector_MR_Vector3i_MR_VertId MR_Vector_MR_Vector3i_MR_VertId
std::vector<T>-like container that requires specific indexing type,
Definition MRPrecisePredicates3.h:15
MRC_API bool * MR_TriangleSegmentIntersectResult_GetMutable_dIsLeftFromABC(MR_TriangleSegmentIntersectResult *_this)
MRC_API MR_Vector3f MR_findTriangleSegmentIntersectionPrecise(const MR_Vector3f *a, const MR_Vector3f *b, const MR_Vector3f *c, const MR_Vector3f *d, const MR_Vector3f *e, const MR_CoordinateConverters *converters)
MRC_API MR_ConvertToIntVector * MR_ConvertToIntVector_OffsetMutablePtr(MR_ConvertToIntVector *ptr, ptrdiff_t i)
MRC_API bool MR_orient3d_1_const_MR_PreciseVertCoords_ptr(const MR_PreciseVertCoords *vs)
Generated from function MR::orient3d.
struct MR_ConvertToFloatVector MR_ConvertToFloatVector
Definition MRPrecisePredicates3.h:40
MRC_API MR_PreciseVertCoords * MR_PreciseVertCoords_ConstructFrom(MR_VertId id, MR_Vector3i pt)
MRC_API MR_ConvertToFloatVector * MR_ConvertToFloatVector_DefaultConstructArray(size_t num_elems)
MRC_API void MR_PreciseVertCoords_DestroyArray(const MR_PreciseVertCoords *_this)
Destroys a heap-allocated array of MR_PreciseVertCoords. Does nothing if the pointer is null.
struct MR_TriangleSegmentIntersectResult MR_TriangleSegmentIntersectResult
Definition MRPrecisePredicates3.h:30
MRC_API MR_ConvertToIntVector * MR_ConvertToIntVector_ConstructFromAnother(const MR_ConvertToIntVector *_other)
MRC_API void MR_PreciseVertCoords_Destroy(const MR_PreciseVertCoords *_this)
Destroys a heap-allocated instance of MR_PreciseVertCoords. Does nothing if the pointer is null.
MRC_API void MR_CoordinateConverters_DestroyArray(const MR_CoordinateConverters *_this)
Destroys a heap-allocated array of MR_CoordinateConverters. Does nothing if the pointer is null.
MRC_API MR_TriangleSegmentIntersectResult * MR_doTriangleSegmentIntersect(const MR_std_array_MR_PreciseVertCoords_5 *vs)
MRC_API MR_ConvertToFloatVector * MR_getToFloatConverter(const MR_Box3d *box)
MRC_API MR_VertId * MR_PreciseVertCoords_GetMutable_id(MR_PreciseVertCoords *_this)
MRC_API MR_TriangleSegmentIntersectResult * MR_TriangleSegmentIntersectResult_ConstructFromAnother(const MR_TriangleSegmentIntersectResult *_other)
MRC_API MR_TriangleSegmentIntersectResult * MR_TriangleSegmentIntersectResult_ConstructFrom(bool doIntersect, bool dIsLeftFromABC)
MRC_API bool MR_orient3d_1_std_array_MR_PreciseVertCoords_4(const MR_std_array_MR_PreciseVertCoords_4 *vs)
MRC_API void MR_TriangleSegmentIntersectResult_DestroyArray(const MR_TriangleSegmentIntersectResult *_this)
Destroys a heap-allocated array of MR_TriangleSegmentIntersectResult. Does nothing if the pointer is ...
MRC_API MR_ConvertToFloatVector * MR_ConvertToFloatVector_AssignFromAnother(MR_ConvertToFloatVector *_this, const MR_ConvertToFloatVector *_other)
struct MR_std_optional_MR_Vector3i MR_std_optional_MR_Vector3i
Definition MRPrecisePredicates3.h:21
MRC_API void MR_TriangleSegmentIntersectResult_Destroy(const MR_TriangleSegmentIntersectResult *_this)
Destroys a heap-allocated instance of MR_TriangleSegmentIntersectResult. Does nothing if the pointer ...
MRC_API const MR_TriangleSegmentIntersectResult * MR_TriangleSegmentIntersectResult_OffsetPtr(const MR_TriangleSegmentIntersectResult *ptr, ptrdiff_t i)
MRC_API void MR_ConvertToFloatVector_Destroy(const MR_ConvertToFloatVector *_this)
Destroys a heap-allocated instance of MR_ConvertToFloatVector. Does nothing if the pointer is null.
MRC_API MR_Vector3f MR_ConvertToFloatVector_call(const MR_ConvertToFloatVector *_this, const MR_Vector3i *v)
MRC_API MR_CoordinateConverters * MR_CoordinateConverters_OffsetMutablePtr(MR_CoordinateConverters *ptr, ptrdiff_t i)
MRC_API void MR_CoordinateConverters_Destroy(const MR_CoordinateConverters *_this)
Destroys a heap-allocated instance of MR_CoordinateConverters. Does nothing if the pointer is null.
MRC_API MR_PreciseVertCoords * MR_PreciseVertCoords_AssignFromAnother(MR_PreciseVertCoords *_this, const MR_PreciseVertCoords *_other)
MRC_API const double * MR_ConvertToIntVector_Get_invRange(const MR_ConvertToIntVector *_this)
MRC_API MR_ConvertToFloatVector * MR_ConvertToFloatVector_OffsetMutablePtr(MR_ConvertToFloatVector *ptr, ptrdiff_t i)
MRC_API bool MR_orient3d_4(const MR_Vector3i *a, const MR_Vector3i *b, const MR_Vector3i *c, const MR_Vector3i *d)
MRC_API MR_ConvertToIntVector * MR_ConvertToIntVector_DefaultConstruct(void)
MRC_API MR_TriangleSegmentIntersectResult * MR_TriangleSegmentIntersectResult_AssignFromAnother(MR_TriangleSegmentIntersectResult *_this, const MR_TriangleSegmentIntersectResult *_other)
struct MR_std_array_MR_PreciseVertCoords_8 MR_std_array_MR_PreciseVertCoords_8
Definition MRPrecisePredicates3.h:20
MRC_API MR_Vector3i * MR_PreciseVertCoords_GetMutable_pt(MR_PreciseVertCoords *_this)
MRC_API void MR_TriangleSegmentIntersectResult_Set_doIntersect(MR_TriangleSegmentIntersectResult *_this, bool value)
MRC_API MR_ConvertToFloatVector * MR_CoordinateConverters_GetMutable_toFloat(MR_CoordinateConverters *_this)
MRC_API const MR_Vector3d * MR_ConvertToIntVector_Get_center(const MR_ConvertToIntVector *_this)
MRC_API MR_ConvertToIntVector * MR_ConvertToIntVector_DefaultConstructArray(size_t num_elems)
MRC_API MR_Vector3d MR_ConvertToFloatVector_convert(const MR_ConvertToFloatVector *_this, const MR_Vector3i *v)
MRC_API MR_ConvertToFloatVector * MR_ConvertToFloatVector_ConstructFromAnother(const MR_ConvertToFloatVector *_other)
MRC_API MR_CoordinateConverters * MR_CoordinateConverters_AssignFromAnother(MR_CoordinateConverters *_this, const MR_CoordinateConverters *_other)
MRC_API const MR_Vector3d * MR_ConvertToFloatVector_Get_center(const MR_ConvertToFloatVector *_this)
MRC_API void MR_ConvertToFloatVector_Set_range(MR_ConvertToFloatVector *_this, double value)
MRC_API void MR_ConvertToIntVector_DestroyArray(const MR_ConvertToIntVector *_this)
Destroys a heap-allocated array of MR_ConvertToIntVector. Does nothing if the pointer is null.
MRC_API void MR_ConvertToIntVector_Set_invRange(MR_ConvertToIntVector *_this, double value)
MRC_API const MR_ConvertToIntVector * MR_CoordinateConverters_Get_toInt(const MR_CoordinateConverters *_this)
MRC_API const bool * MR_TriangleSegmentIntersectResult_Get_doIntersect(const MR_TriangleSegmentIntersectResult *_this)
MRC_API bool MR_TriangleSegmentIntersectResult_ConvertTo_bool(const MR_TriangleSegmentIntersectResult *_this)
MRC_API void MR_PreciseVertCoords_Set_pt(MR_PreciseVertCoords *_this, MR_Vector3i value)
MRC_API MR_Vector3i MR_ConvertToIntVector_call_MR_Vector3f(const MR_ConvertToIntVector *_this, const MR_Vector3f *p)
MRC_API const bool * MR_TriangleSegmentIntersectResult_Get_dIsLeftFromABC(const MR_TriangleSegmentIntersectResult *_this)
MRC_API bool MR_orient3d_3(const MR_Vector3i *a, const MR_Vector3i *b, const MR_Vector3i *c)
MRC_API int MR_ConvertToIntVector_scaleOnly(const MR_ConvertToIntVector *_this, double v)
MRC_API MR_Vector_MR_Vector3i_MR_VertId * MR_computeIntCoords(const MR_ConvertToIntVector *conv, const MR_VertCoords *points, const MR_VertBitSet *valid)
MRC_API const MR_ConvertToFloatVector * MR_ConvertToFloatVector_OffsetPtr(const MR_ConvertToFloatVector *ptr, ptrdiff_t i)
MRC_API MR_CoordinateConverters * MR_CoordinateConverters_DefaultConstructArray(size_t num_elems)
MRC_API MR_CoordinateConverters * MR_CoordinateConverters_ConstructFromAnother(const MR_CoordinateConverters *_other)
MRC_API MR_VertCoords * MR_computeFloatCoords(const MR_ConvertToFloatVector *conv, const MR_Vector_MR_Vector3i_MR_VertId *intCoords, const MR_VertBitSet *valid)
MRC_API void MR_TriangleSegmentIntersectResult_Set_dIsLeftFromABC(MR_TriangleSegmentIntersectResult *_this, bool value)
MRC_API MR_ConvertToIntVector * MR_ConvertToIntVector_AssignFromAnother(MR_ConvertToIntVector *_this, const MR_ConvertToIntVector *_other)
MRC_API MR_PreciseVertCoords * MR_PreciseVertCoords_OffsetMutablePtr(MR_PreciseVertCoords *ptr, ptrdiff_t i)
struct MR_PreciseVertCoords MR_PreciseVertCoords
Definition MRPrecisePredicates3.h:26
MRC_API MR_TriangleSegmentIntersectResult * MR_TriangleSegmentIntersectResult_DefaultConstructArray(size_t num_elems)
MRC_API const MR_VertId * MR_PreciseVertCoords_Get_id(const MR_PreciseVertCoords *_this)
MRC_API MR_CoordinateConverters * MR_CoordinateConverters_DefaultConstruct(void)
MRC_API double * MR_ConvertToIntVector_GetMutable_invRange(MR_ConvertToIntVector *_this)
MRC_API MR_Vector3d * MR_ConvertToFloatVector_GetMutable_center(MR_ConvertToFloatVector *_this)
MRC_API const MR_ConvertToFloatVector * MR_CoordinateConverters_Get_toFloat(const MR_CoordinateConverters *_this)
MRC_API MR_ConvertToIntVector * MR_CoordinateConverters_GetMutable_toInt(MR_CoordinateConverters *_this)
MRC_API MR_ConvertToFloatVector * MR_ConvertToFloatVector_ConstructFrom(double range, MR_Vector3d center)
MRC_API MR_TriangleSegmentIntersectResult * MR_TriangleSegmentIntersectResult_OffsetMutablePtr(MR_TriangleSegmentIntersectResult *ptr, ptrdiff_t i)
MRC_API MR_PreciseVertCoords * MR_PreciseVertCoords_DefaultConstruct(void)
MRC_API void MR_PreciseVertCoords_Set_id(MR_PreciseVertCoords *_this, MR_VertId value)
MRC_API void MR_ConvertToIntVector_Set_center(MR_ConvertToIntVector *_this, MR_Vector3d value)
MRC_API MR_CoordinateConverters * MR_CoordinateConverters_ConstructFrom(const MR_ConvertToIntVector *toInt, const MR_ConvertToFloatVector *toFloat)
MRC_API double * MR_ConvertToFloatVector_GetMutable_range(MR_ConvertToFloatVector *_this)
MRC_API void MR_ConvertToFloatVector_Set_center(MR_ConvertToFloatVector *_this, MR_Vector3d value)
MRC_API MR_PreciseVertCoords * MR_PreciseVertCoords_DefaultConstructArray(size_t num_elems)
MRC_API void MR_CoordinateConverters_Set_toFloat(MR_CoordinateConverters *_this, const MR_ConvertToFloatVector *value)
MRC_API bool MR_segmentIntersectionOrder_std_array_MR_PreciseVertCoords_8(const MR_std_array_MR_PreciseVertCoords_8 *vs)
MRC_API MR_TriangleSegmentIntersectResult * MR_TriangleSegmentIntersectResult_DefaultConstruct(void)
MRC_API MR_ConvertToIntVector * MR_ConvertToIntVector_ConstructFrom(MR_Vector3d center, double invRange)
MRC_API MR_ConvertToFloatVector * MR_ConvertToFloatVector_DefaultConstruct(void)
MRC_API const double * MR_ConvertToFloatVector_Get_range(const MR_ConvertToFloatVector *_this)
MRC_API MR_std_optional_MR_Vector3i * MR_findTwoSegmentsIntersection(const MR_Vector3i *ai, const MR_Vector3i *bi, const MR_Vector3i *ci, const MR_Vector3i *di)
MRC_API MR_Vector3d * MR_ConvertToIntVector_GetMutable_center(MR_ConvertToIntVector *_this)
MRC_API void MR_CoordinateConverters_Set_toInt(MR_CoordinateConverters *_this, const MR_ConvertToIntVector *value)
#define MRC_API
Definition include/MRCMisc/exports.h:11
Definition MRBox.h:115
Generated from class MR::Vector3d.
Definition MRVector3.h:55
Generated from class MR::Vector3f.
Definition MRVector3.h:47
Generated from class MR::Vector3i.
Definition MRVector3.h:63
Definition MRId.h:41