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

Go to the source code of this file.

Typedefs

typedef struct MR_std_array_MR_PreciseVertCoords_4 MR_std_array_MR_PreciseVertCoords_4
typedef enum MR_InSphereResult MR_InSphereResult
 the result of inSphere predicates
typedef struct MR_InSphereTester_float MR_InSphereTester_float
typedef struct MR_InSphereTester_double MR_InSphereTester_double
typedef struct MR_InSphereTester_int MR_InSphereTester_int
typedef struct MR_InSphereTesterSoS MR_InSphereTesterSoS
typedef struct MR_FastInSphereTesterSoS MR_FastInSphereTesterSoS

Enumerations

enum  MR_InSphereResult { MR_InSphereResult_NoSphere = 0 , MR_InSphereResult_Outside = 1 , MR_InSphereResult_OnSphere = 2 , MR_InSphereResult_Inside = 3 }
 the result of inSphere predicates More...

Functions

MRC_API MR_InSphereResult MR_inSphere_5 (const MR_Vector3i *a, const MR_Vector3i *b, const MR_Vector3i *c, const MR_Vector3i *d, int64_t rSq)
MRC_API MR_InSphereResult MR_inSphere_2 (const MR_std_array_MR_PreciseVertCoords_4 *vs, int64_t rSq)
MRC_API MR_InSphereTester_floatMR_InSphereTester_float_DefaultConstruct (void)
MRC_API MR_InSphereTester_floatMR_InSphereTester_float_DefaultConstructArray (size_t num_elems)
MRC_API const MR_InSphereTester_floatMR_InSphereTester_float_OffsetPtr (const MR_InSphereTester_float *ptr, ptrdiff_t i)
MRC_API MR_InSphereTester_floatMR_InSphereTester_float_OffsetMutablePtr (MR_InSphereTester_float *ptr, ptrdiff_t i)
MRC_API MR_InSphereTester_floatMR_InSphereTester_float_ConstructFromAnother (const MR_InSphereTester_float *_other)
MRC_API void MR_InSphereTester_float_Destroy (const MR_InSphereTester_float *_this)
 Destroys a heap-allocated instance of MR_InSphereTester_float. Does nothing if the pointer is null.
MRC_API void MR_InSphereTester_float_DestroyArray (const MR_InSphereTester_float *_this)
 Destroys a heap-allocated array of MR_InSphereTester_float. Does nothing if the pointer is null.
MRC_API MR_InSphereTester_floatMR_InSphereTester_float_AssignFromAnother (MR_InSphereTester_float *_this, const MR_InSphereTester_float *_other)
MRC_API bool MR_InSphereTester_float_reset (MR_InSphereTester_float *_this, const MR_Vector3f *va, const MR_Vector3f *vb, const MR_Vector3f *vc, float sqRadius)
MRC_API void MR_InSphereTester_float_flip (MR_InSphereTester_float *_this)
MRC_API MR_InSphereResult MR_InSphereTester_float_call (const MR_InSphereTester_float *_this, const MR_Vector3f *d)
MRC_API MR_InSphereTester_doubleMR_InSphereTester_double_DefaultConstruct (void)
MRC_API MR_InSphereTester_doubleMR_InSphereTester_double_DefaultConstructArray (size_t num_elems)
MRC_API const MR_InSphereTester_doubleMR_InSphereTester_double_OffsetPtr (const MR_InSphereTester_double *ptr, ptrdiff_t i)
MRC_API MR_InSphereTester_doubleMR_InSphereTester_double_OffsetMutablePtr (MR_InSphereTester_double *ptr, ptrdiff_t i)
MRC_API MR_InSphereTester_doubleMR_InSphereTester_double_ConstructFromAnother (const MR_InSphereTester_double *_other)
MRC_API void MR_InSphereTester_double_Destroy (const MR_InSphereTester_double *_this)
 Destroys a heap-allocated instance of MR_InSphereTester_double. Does nothing if the pointer is null.
MRC_API void MR_InSphereTester_double_DestroyArray (const MR_InSphereTester_double *_this)
 Destroys a heap-allocated array of MR_InSphereTester_double. Does nothing if the pointer is null.
MRC_API MR_InSphereTester_doubleMR_InSphereTester_double_AssignFromAnother (MR_InSphereTester_double *_this, const MR_InSphereTester_double *_other)
MRC_API bool MR_InSphereTester_double_reset (MR_InSphereTester_double *_this, const MR_Vector3d *va, const MR_Vector3d *vb, const MR_Vector3d *vc, double sqRadius)
MRC_API void MR_InSphereTester_double_flip (MR_InSphereTester_double *_this)
MRC_API MR_InSphereResult MR_InSphereTester_double_call (const MR_InSphereTester_double *_this, const MR_Vector3d *d)
MRC_API MR_InSphereTester_intMR_InSphereTester_int_DefaultConstruct (void)
MRC_API MR_InSphereTester_intMR_InSphereTester_int_DefaultConstructArray (size_t num_elems)
MRC_API const MR_InSphereTester_intMR_InSphereTester_int_OffsetPtr (const MR_InSphereTester_int *ptr, ptrdiff_t i)
MRC_API MR_InSphereTester_intMR_InSphereTester_int_OffsetMutablePtr (MR_InSphereTester_int *ptr, ptrdiff_t i)
MRC_API MR_InSphereTester_intMR_InSphereTester_int_ConstructFromAnother (const MR_InSphereTester_int *_other)
MRC_API void MR_InSphereTester_int_Destroy (const MR_InSphereTester_int *_this)
 Destroys a heap-allocated instance of MR_InSphereTester_int. Does nothing if the pointer is null.
MRC_API void MR_InSphereTester_int_DestroyArray (const MR_InSphereTester_int *_this)
 Destroys a heap-allocated array of MR_InSphereTester_int. Does nothing if the pointer is null.
MRC_API MR_InSphereTester_intMR_InSphereTester_int_AssignFromAnother (MR_InSphereTester_int *_this, const MR_InSphereTester_int *_other)
MRC_API bool MR_InSphereTester_int_reset (MR_InSphereTester_int *_this, const MR_Vector3i *a, const MR_Vector3i *b, const MR_Vector3i *c, int64_t rSq)
MRC_API void MR_InSphereTester_int_flip (MR_InSphereTester_int *_this)
MRC_API MR_InSphereResult MR_InSphereTester_int_call (const MR_InSphereTester_int *_this, const MR_Vector3i *d)
MRC_API MR_InSphereTesterSoSMR_InSphereTesterSoS_DefaultConstruct (void)
MRC_API MR_InSphereTesterSoSMR_InSphereTesterSoS_DefaultConstructArray (size_t num_elems)
MRC_API const MR_InSphereTesterSoSMR_InSphereTesterSoS_OffsetPtr (const MR_InSphereTesterSoS *ptr, ptrdiff_t i)
MRC_API MR_InSphereTesterSoSMR_InSphereTesterSoS_OffsetMutablePtr (MR_InSphereTesterSoS *ptr, ptrdiff_t i)
MRC_API const MR_InSphereTester_intMR_InSphereTesterSoS_UpcastTo_MR_InSphereTester_int (const MR_InSphereTesterSoS *object)
MRC_API MR_InSphereTester_intMR_InSphereTesterSoS_MutableUpcastTo_MR_InSphereTester_int (MR_InSphereTesterSoS *object)
MRC_API const MR_InSphereTesterSoSMR_InSphereTesterSoS_StaticDowncastFrom_MR_InSphereTester_int (const MR_InSphereTester_int *object)
MRC_API MR_InSphereTesterSoSMR_InSphereTesterSoS_MutableStaticDowncastFrom_MR_InSphereTester_int (MR_InSphereTester_int *object)
MRC_API MR_InSphereTesterSoSMR_InSphereTesterSoS_ConstructFromAnother (const MR_InSphereTesterSoS *_other)
MRC_API void MR_InSphereTesterSoS_Destroy (const MR_InSphereTesterSoS *_this)
 Destroys a heap-allocated instance of MR_InSphereTesterSoS. Does nothing if the pointer is null.
MRC_API void MR_InSphereTesterSoS_DestroyArray (const MR_InSphereTesterSoS *_this)
 Destroys a heap-allocated array of MR_InSphereTesterSoS. Does nothing if the pointer is null.
MRC_API MR_InSphereTesterSoSMR_InSphereTesterSoS_AssignFromAnother (MR_InSphereTesterSoS *_this, const MR_InSphereTesterSoS *_other)
MRC_API bool MR_InSphereTesterSoS_reset (MR_InSphereTesterSoS *_this, const MR_PreciseVertCoords *a, const MR_PreciseVertCoords *b, const MR_PreciseVertCoords *c, int64_t rSq)
MRC_API void MR_InSphereTesterSoS_flip (MR_InSphereTesterSoS *_this)
MRC_API MR_InSphereResult MR_InSphereTesterSoS_call (const MR_InSphereTesterSoS *_this, const MR_PreciseVertCoords *d)
MRC_API bool MR_InSphereTesterSoS_degenerateTriangle (const MR_InSphereTesterSoS *_this)
MRC_API MR_FastInSphereTesterSoSMR_FastInSphereTesterSoS_DefaultConstruct (void)
MRC_API MR_FastInSphereTesterSoSMR_FastInSphereTesterSoS_DefaultConstructArray (size_t num_elems)
MRC_API const MR_FastInSphereTesterSoSMR_FastInSphereTesterSoS_OffsetPtr (const MR_FastInSphereTesterSoS *ptr, ptrdiff_t i)
MRC_API MR_FastInSphereTesterSoSMR_FastInSphereTesterSoS_OffsetMutablePtr (MR_FastInSphereTesterSoS *ptr, ptrdiff_t i)
MRC_API const MR_InSphereTester_intMR_FastInSphereTesterSoS_UpcastTo_MR_InSphereTester_int (const MR_FastInSphereTesterSoS *object)
MRC_API MR_InSphereTester_intMR_FastInSphereTesterSoS_MutableUpcastTo_MR_InSphereTester_int (MR_FastInSphereTesterSoS *object)
MRC_API const MR_FastInSphereTesterSoSMR_FastInSphereTesterSoS_StaticDowncastFrom_MR_InSphereTester_int (const MR_InSphereTester_int *object)
MRC_API MR_FastInSphereTesterSoSMR_FastInSphereTesterSoS_MutableStaticDowncastFrom_MR_InSphereTester_int (MR_InSphereTester_int *object)
MRC_API const MR_InSphereTesterSoSMR_FastInSphereTesterSoS_UpcastTo_MR_InSphereTesterSoS (const MR_FastInSphereTesterSoS *object)
MRC_API MR_InSphereTesterSoSMR_FastInSphereTesterSoS_MutableUpcastTo_MR_InSphereTesterSoS (MR_FastInSphereTesterSoS *object)
MRC_API const MR_FastInSphereTesterSoSMR_FastInSphereTesterSoS_StaticDowncastFrom_MR_InSphereTesterSoS (const MR_InSphereTesterSoS *object)
MRC_API MR_FastInSphereTesterSoSMR_FastInSphereTesterSoS_MutableStaticDowncastFrom_MR_InSphereTesterSoS (MR_InSphereTesterSoS *object)
MRC_API MR_FastInSphereTesterSoSMR_FastInSphereTesterSoS_ConstructFromAnother (const MR_FastInSphereTesterSoS *_other)
MRC_API void MR_FastInSphereTesterSoS_Destroy (const MR_FastInSphereTesterSoS *_this)
 Destroys a heap-allocated instance of MR_FastInSphereTesterSoS. Does nothing if the pointer is null.
MRC_API void MR_FastInSphereTesterSoS_DestroyArray (const MR_FastInSphereTesterSoS *_this)
 Destroys a heap-allocated array of MR_FastInSphereTesterSoS. Does nothing if the pointer is null.
MRC_API MR_FastInSphereTesterSoSMR_FastInSphereTesterSoS_AssignFromAnother (MR_FastInSphereTesterSoS *_this, const MR_FastInSphereTesterSoS *_other)
MRC_API bool MR_FastInSphereTesterSoS_reset (MR_FastInSphereTesterSoS *_this, const MR_PreciseVertCoords *a, const MR_PreciseVertCoords *b, const MR_PreciseVertCoords *c, int64_t rSq)
MRC_API void MR_FastInSphereTesterSoS_flip (MR_FastInSphereTesterSoS *_this)
MRC_API MR_InSphereResult MR_FastInSphereTesterSoS_call (const MR_FastInSphereTesterSoS *_this, const MR_PreciseVertCoords *d)
MRC_API bool MR_FastInSphereTesterSoS_outsideBothSpheres (const MR_FastInSphereTesterSoS *_this, const MR_Vector3i *d)
MRC_API bool MR_FastInSphereTesterSoS_degenerateTriangle (const MR_FastInSphereTesterSoS *_this)
MRC_API MR_InSphereResult MR_inSphere_float (const MR_Vector3f *a, const MR_Vector3f *b, const MR_Vector3f *c, const MR_Vector3f *d, float rSq)
MRC_API MR_InSphereResult MR_inSphere_double (const MR_Vector3d *a, const MR_Vector3d *b, const MR_Vector3d *c, const MR_Vector3d *d, double rSq)

Typedef Documentation

◆ MR_FastInSphereTesterSoS

gives exactly the same answers as InSphereTesterSoS, only faster: the sphere's center is also computed in floating point during reset(), and every query point far enough from the sphere's surface is answered by it alone, leaving the exact predicates for the points close to it Generated from class MR::FastInSphereTesterSoS. Base classes: Direct: (non-virtual) MR::InSphereTesterSoS Indirect: (non-virtual) MR::InSphereTester<int> Supported MR_PassBy modes: MR_PassBy_DefaultConstruct, MR_PassBy_Copy, MR_PassBy_Move (and MR_PassBy_DefaultArgument and MR_PassBy_NoObject if supported by the callee).

◆ MR_InSphereResult

the result of inSphere predicates

◆ MR_InSphereTester_double

accelerates testing of many query points against one sphere given by the same three points and radius, pre-computing all the point-independent quantities once; the primary template works for floating-point T with the same case analysis as the precise specialization for int below, so the answers for the query points near the sphere's surface are subject to rounding errors, and OnSphere is returned only on the exact equality in the comparisons; the products inside have degree 16 in coordinates, so to avoid overflows any difference of two given points' coordinates as well as sqrt(rSq) must be below ~100 for T=float and ~1e18 for T=double; the one-call inSphere functions are implemented via this class Generated from class MR::InSphereTester<double>. Supported MR_PassBy modes: MR_PassBy_DefaultConstruct, MR_PassBy_Copy, MR_PassBy_Move (and MR_PassBy_DefaultArgument and MR_PassBy_NoObject if supported by the callee).

◆ MR_InSphereTester_float

accelerates testing of many query points against one sphere given by the same three points and radius, pre-computing all the point-independent quantities once; the primary template works for floating-point T with the same case analysis as the precise specialization for int below, so the answers for the query points near the sphere's surface are subject to rounding errors, and OnSphere is returned only on the exact equality in the comparisons; the products inside have degree 16 in coordinates, so to avoid overflows any difference of two given points' coordinates as well as sqrt(rSq) must be below ~100 for T=float and ~1e18 for T=double; the one-call inSphere functions are implemented via this class Generated from class MR::InSphereTester<float>. Supported MR_PassBy modes: MR_PassBy_DefaultConstruct, MR_PassBy_Copy, MR_PassBy_Move (and MR_PassBy_DefaultArgument and MR_PassBy_NoObject if supported by the callee).

◆ MR_InSphereTester_int

the specialization implementing the precise integer predicate, exact for any input; rSq must be given in the same integer grid units as the point coordinates Generated from class MR::InSphereTester<int>. Derived classes: Direct: (non-virtual) MR::InSphereTesterSoS Indirect: (non-virtual) MR::FastInSphereTesterSoS Supported MR_PassBy modes: MR_PassBy_DefaultConstruct, MR_PassBy_Copy, MR_PassBy_Move (and MR_PassBy_DefaultArgument and MR_PassBy_NoObject if supported by the callee).

◆ MR_InSphereTesterSoS

the precise tester with simulation-of-simplicity resolution of "exactly on the sphere" ties, which reuses all the geometric machinery of InSphereTester<int> and adds only the vertex ids Generated from class MR::InSphereTesterSoS. Base classes: Direct: (non-virtual) MR::InSphereTester<int> Derived classes: Direct: (non-virtual) MR::FastInSphereTesterSoS Supported MR_PassBy modes: MR_PassBy_DefaultConstruct, MR_PassBy_Copy, MR_PassBy_Move (and MR_PassBy_DefaultArgument and MR_PassBy_NoObject if supported by the callee).

◆ MR_std_array_MR_PreciseVertCoords_4

A fixed-size array of MR::PreciseVertCoords of size 4. Supported MR_PassBy modes: MR_PassBy_DefaultConstruct, MR_PassBy_Copy, MR_PassBy_Move (and MR_PassBy_DefaultArgument and MR_PassBy_NoObject if supported by the callee).

Enumeration Type Documentation

◆ MR_InSphereResult

the result of inSphere predicates

Enumerator
MR_InSphereResult_NoSphere 

the sphere is not defined: the points A, B, C are collinear or coincident, or rSq is less than the squared circumradius of triangle ABC

MR_InSphereResult_Outside 

the sphere exists, and the point D is strictly outside

MR_InSphereResult_OnSphere 

the sphere exists, and the point D is exactly on it; never returned by the simulation-of-simplicity overload, which resolves such ties into Inside or Outside

MR_InSphereResult_Inside 

the sphere exists, and the point D is strictly inside

Function Documentation

◆ MR_FastInSphereTesterSoS_AssignFromAnother()

MRC_API MR_FastInSphereTesterSoS * MR_FastInSphereTesterSoS_AssignFromAnother ( MR_FastInSphereTesterSoS * _this,
const MR_FastInSphereTesterSoS * _other )

Generated from method MR::FastInSphereTesterSoS::operator=. Parameter _this can not be null. It is a single object. Parameter _other can not be null. It is a single object. The reference to things referred to by the parameter _other (if any) might be preserved in this object. The returned pointer will never be null. It is non-owning, do NOT destroy it. When this function is called, this object will drop any object references it held previously.

◆ MR_FastInSphereTesterSoS_call()

MRC_API MR_InSphereResult MR_FastInSphereTesterSoS_call ( const MR_FastInSphereTesterSoS * _this,
const MR_PreciseVertCoords * d )

returns the position of the point d.pt relative to the sphere, with the ties resolved by simulation-of-simplicity exactly as InSphereTesterSoS does (never OnSphere or NoSphere); shall be called only after reset() returned true, and all four ids must be distinct Generated from method MR::FastInSphereTesterSoS::operator(). Parameter _this can not be null. It is a single object. Parameter d can not be null. It is a single object.

◆ MR_FastInSphereTesterSoS_ConstructFromAnother()

MRC_API MR_FastInSphereTesterSoS * MR_FastInSphereTesterSoS_ConstructFromAnother ( const MR_FastInSphereTesterSoS * _other)

Generated from constructor MR::FastInSphereTesterSoS::FastInSphereTesterSoS. Parameter _other can not be null. It is a single object. The reference to things referred to by the parameter _other (if any) might be preserved in the constructed object. Never returns null. Returns an instance allocated on the heap! Must call MR_FastInSphereTesterSoS_Destroy() to free it when you're done using it.

◆ MR_FastInSphereTesterSoS_DefaultConstruct()

MRC_API MR_FastInSphereTesterSoS * MR_FastInSphereTesterSoS_DefaultConstruct ( void )

Constructs an empty (default-constructed) instance. Never returns null. Returns an instance allocated on the heap! Must call MR_FastInSphereTesterSoS_Destroy() to free it when you're done using it.

◆ MR_FastInSphereTesterSoS_DefaultConstructArray()

MRC_API MR_FastInSphereTesterSoS * MR_FastInSphereTesterSoS_DefaultConstructArray ( size_t num_elems)

Constructs an array of empty (default-constructed) instances, of the specified size. Will never return null. The array must be destroyed using MR_FastInSphereTesterSoS_DestroyArray(). Use MR_FastInSphereTesterSoS_OffsetMutablePtr() and MR_FastInSphereTesterSoS_OffsetPtr() to access the array elements.

◆ MR_FastInSphereTesterSoS_degenerateTriangle()

MRC_API bool MR_FastInSphereTesterSoS_degenerateTriangle ( const MR_FastInSphereTesterSoS * _this)

whether the last successful reset() got a degenerate triangle (two coincident points), where only the symbolically perturbed sphere exists; the exact sphere quantities of the base class are not valid then Generated from method MR::FastInSphereTesterSoS::degenerateTriangle. Parameter _this can not be null. It is a single object.

◆ MR_FastInSphereTesterSoS_Destroy()

MRC_API void MR_FastInSphereTesterSoS_Destroy ( const MR_FastInSphereTesterSoS * _this)

Destroys a heap-allocated instance of MR_FastInSphereTesterSoS. Does nothing if the pointer is null.

◆ MR_FastInSphereTesterSoS_DestroyArray()

MRC_API void MR_FastInSphereTesterSoS_DestroyArray ( const MR_FastInSphereTesterSoS * _this)

Destroys a heap-allocated array of MR_FastInSphereTesterSoS. Does nothing if the pointer is null.

◆ MR_FastInSphereTesterSoS_flip()

MRC_API void MR_FastInSphereTesterSoS_flip ( MR_FastInSphereTesterSoS * _this)

selects the mirror sphere as the base class does, moving the floating-point center as well; this hides the flip of the base class, which would leave the center on the wrong side Generated from method MR::FastInSphereTesterSoS::flip. Parameter _this can not be null. It is a single object.

◆ MR_FastInSphereTesterSoS_MutableStaticDowncastFrom_MR_InSphereTester_int()

MRC_API MR_FastInSphereTesterSoS * MR_FastInSphereTesterSoS_MutableStaticDowncastFrom_MR_InSphereTester_int ( MR_InSphereTester_int * object)

Downcasts an instance of MR::InSphereTester<int> to a derived class MR::FastInSphereTesterSoS. This is a static downcast, it trusts the programmer that the target type is correct. Results in UB and returns an invalid pointer otherwise. The reference to the parameter object might be preserved in the return value.

◆ MR_FastInSphereTesterSoS_MutableStaticDowncastFrom_MR_InSphereTesterSoS()

MRC_API MR_FastInSphereTesterSoS * MR_FastInSphereTesterSoS_MutableStaticDowncastFrom_MR_InSphereTesterSoS ( MR_InSphereTesterSoS * object)

Downcasts an instance of MR::InSphereTesterSoS to a derived class MR::FastInSphereTesterSoS. This is a static downcast, it trusts the programmer that the target type is correct. Results in UB and returns an invalid pointer otherwise. The reference to the parameter object might be preserved in the return value.

◆ MR_FastInSphereTesterSoS_MutableUpcastTo_MR_InSphereTester_int()

MRC_API MR_InSphereTester_int * MR_FastInSphereTesterSoS_MutableUpcastTo_MR_InSphereTester_int ( MR_FastInSphereTesterSoS * object)

Upcasts an instance of MR::FastInSphereTesterSoS to its base class MR::InSphereTester<int>. The reference to the parameter object might be preserved in the return value.

◆ MR_FastInSphereTesterSoS_MutableUpcastTo_MR_InSphereTesterSoS()

MRC_API MR_InSphereTesterSoS * MR_FastInSphereTesterSoS_MutableUpcastTo_MR_InSphereTesterSoS ( MR_FastInSphereTesterSoS * object)

Upcasts an instance of MR::FastInSphereTesterSoS to its base class MR::InSphereTesterSoS. The reference to the parameter object might be preserved in the return value.

◆ MR_FastInSphereTesterSoS_OffsetMutablePtr()

MRC_API MR_FastInSphereTesterSoS * MR_FastInSphereTesterSoS_OffsetMutablePtr ( MR_FastInSphereTesterSoS * ptr,
ptrdiff_t i )

Offsets a pointer to an array element by i positions (not bytes). Use only if you're certain that the pointer points to an array element. The reference to the parameter ptr might be preserved in the return value.

◆ MR_FastInSphereTesterSoS_OffsetPtr()

MRC_API const MR_FastInSphereTesterSoS * MR_FastInSphereTesterSoS_OffsetPtr ( const MR_FastInSphereTesterSoS * ptr,
ptrdiff_t i )

Offsets a pointer to an array element by i positions (not bytes). Use only if you're certain that the pointer points to an array element. The reference to the parameter ptr might be preserved in the return value.

◆ MR_FastInSphereTesterSoS_outsideBothSpheres()

MRC_API bool MR_FastInSphereTesterSoS_outsideBothSpheres ( const MR_FastInSphereTesterSoS * _this,
const MR_Vector3i * d )

whether d is strictly outside both spheres of the given radius passing via the three points of reset(): the selected one and its mirror in the plane of the triangle; the answer is exact, and a point lying on either of them is not strictly outside, so no tie arises and no simulation-of-simplicity is involved; filtered in floating point as the query above, and equally exact; for a degenerate triangle, where only the perturbed spheres exist and the answer would need the id of d, returns false conservatively (never prunes) Generated from method MR::FastInSphereTesterSoS::outsideBothSpheres. Parameter _this can not be null. It is a single object. Parameter d can not be null. It is a single object.

◆ MR_FastInSphereTesterSoS_reset()

MRC_API bool MR_FastInSphereTesterSoS_reset ( MR_FastInSphereTesterSoS * _this,
const MR_PreciseVertCoords * a,
const MR_PreciseVertCoords * b,
const MR_PreciseVertCoords * c,
int64_t rSq )

prepares the tester as InSphereTesterSoS::reset does, and additionally computes the floating-point center of the sphere and the tolerance of the tests below; this hides the reset of the base class, which would leave the center stale Generated from method MR::FastInSphereTesterSoS::reset. Parameter _this can not be null. It is a single object. Parameter a can not be null. It is a single object. Parameter b can not be null. It is a single object. Parameter c can not be null. It is a single object.

◆ MR_FastInSphereTesterSoS_StaticDowncastFrom_MR_InSphereTester_int()

MRC_API const MR_FastInSphereTesterSoS * MR_FastInSphereTesterSoS_StaticDowncastFrom_MR_InSphereTester_int ( const MR_InSphereTester_int * object)

Downcasts an instance of MR::InSphereTester<int> to a derived class MR::FastInSphereTesterSoS. This is a static downcast, it trusts the programmer that the target type is correct. Results in UB and returns an invalid pointer otherwise. This version is acting on mutable pointers. The reference to the parameter object might be preserved in the return value.

◆ MR_FastInSphereTesterSoS_StaticDowncastFrom_MR_InSphereTesterSoS()

MRC_API const MR_FastInSphereTesterSoS * MR_FastInSphereTesterSoS_StaticDowncastFrom_MR_InSphereTesterSoS ( const MR_InSphereTesterSoS * object)

Downcasts an instance of MR::InSphereTesterSoS to a derived class MR::FastInSphereTesterSoS. This is a static downcast, it trusts the programmer that the target type is correct. Results in UB and returns an invalid pointer otherwise. This version is acting on mutable pointers. The reference to the parameter object might be preserved in the return value.

◆ MR_FastInSphereTesterSoS_UpcastTo_MR_InSphereTester_int()

MRC_API const MR_InSphereTester_int * MR_FastInSphereTesterSoS_UpcastTo_MR_InSphereTester_int ( const MR_FastInSphereTesterSoS * object)

Upcasts an instance of MR::FastInSphereTesterSoS to its base class MR::InSphereTester<int>. This version is acting on mutable pointers. The reference to the parameter object might be preserved in the return value.

◆ MR_FastInSphereTesterSoS_UpcastTo_MR_InSphereTesterSoS()

MRC_API const MR_InSphereTesterSoS * MR_FastInSphereTesterSoS_UpcastTo_MR_InSphereTesterSoS ( const MR_FastInSphereTesterSoS * object)

Upcasts an instance of MR::FastInSphereTesterSoS to its base class MR::InSphereTesterSoS. This version is acting on mutable pointers. The reference to the parameter object might be preserved in the return value.

◆ MR_inSphere_2()

MRC_API MR_InSphereResult MR_inSphere_2 ( const MR_std_array_MR_PreciseVertCoords_4 * vs,
int64_t rSq )

checks whether the point vs[3] is strictly inside the sphere of radius sqrt(rSq) passing via points vs[0], vs[1], vs[2], with the center located on the positive side of plane vs[0]vs[1]vs[2] (same convention as in the overload above); full simulation-of-simplicity semantics: the answer equals the answer of the plain predicate on the symbolically perturbed points, where the point with rank r among the four (by ascending ids) receives +eps^(9*L^r) to x, +eps^(3*L^r) to y, +eps^(L^r) to z with L = 128, eps -> +0 (z gets the largest perturbation as in getPointDegrees, but the ladder between the ranks is 128: it exceeds the maximal degree-weight of one point in the predicate polynomials, which makes the resolution independent of whether the ranks are computed among 3 or among all 4 points); consequently:

  • "vs[3] exactly on the sphere" resolves into Inside or Outside by the ids;
  • rSq exactly equal to the squared circumradius: the perturbation decides the sphere's existence, so the answer can be NoSphere even for vs[3] strictly inside;
  • three coincident or distinct collinear triangle points always give NoSphere: the perturbed triangle is needle-like (the perturbation magnitudes differ vastly) and its circumradius diverges as eps -> +0;
  • two coincident triangle points: the sphere exists iff 4*rSq*(Vx^2+Vy^2) > |V|^4 at the leading order (the pair separates along z), V = the third point minus the pair Generated from function MR::inSphere. Parameter vs can not be null. It is a single object.

◆ MR_inSphere_5()

MRC_API MR_InSphereResult MR_inSphere_5 ( const MR_Vector3i * a,
const MR_Vector3i * b,
const MR_Vector3i * c,
const MR_Vector3i * d,
int64_t rSq )

checks whether the point D is strictly inside the sphere of radius sqrt(rSq) passing via points A, B, C, whose center is located on the positive side of plane ABC (in the half-space pointed at by cross( b - a, c - a ) from the plane); returns OnSphere when D is exactly on the sphere; cyclic permutations of (A, B, C) do not change the result, a swap of two of them selects the mirror sphere; rSq must be given in the same integer grid units as the point coordinates Generated from function MR::inSphere. Parameter a can not be null. It is a single object. Parameter b can not be null. It is a single object. Parameter c can not be null. It is a single object. Parameter d can not be null. It is a single object.

◆ MR_inSphere_double()

MRC_API MR_InSphereResult MR_inSphere_double ( const MR_Vector3d * a,
const MR_Vector3d * b,
const MR_Vector3d * c,
const MR_Vector3d * d,
double rSq )

checks whether the point d is strictly inside the sphere of radius sqrt(rSq) passing via points a, b, c, whose center is located on the positive side of plane abc, in floating-point; see the comment on InSphereTester above for the limitations Generated from function MR::inSphere<double>. Parameter a can not be null. It is a single object. Parameter b can not be null. It is a single object. Parameter c can not be null. It is a single object. Parameter d can not be null. It is a single object.

◆ MR_inSphere_float()

MRC_API MR_InSphereResult MR_inSphere_float ( const MR_Vector3f * a,
const MR_Vector3f * b,
const MR_Vector3f * c,
const MR_Vector3f * d,
float rSq )

checks whether the point d is strictly inside the sphere of radius sqrt(rSq) passing via points a, b, c, whose center is located on the positive side of plane abc, in floating-point; see the comment on InSphereTester above for the limitations Generated from function MR::inSphere<float>. Parameter a can not be null. It is a single object. Parameter b can not be null. It is a single object. Parameter c can not be null. It is a single object. Parameter d can not be null. It is a single object.

◆ MR_InSphereTester_double_AssignFromAnother()

MRC_API MR_InSphereTester_double * MR_InSphereTester_double_AssignFromAnother ( MR_InSphereTester_double * _this,
const MR_InSphereTester_double * _other )

Generated from method MR::InSphereTester<double>::operator=. Parameter _this can not be null. It is a single object. Parameter _other can not be null. It is a single object. The reference to things referred to by the parameter _other (if any) might be preserved in this object. The returned pointer will never be null. It is non-owning, do NOT destroy it. When this function is called, this object will drop any object references it held previously.

◆ MR_InSphereTester_double_call()

MRC_API MR_InSphereResult MR_InSphereTester_double_call ( const MR_InSphereTester_double * _this,
const MR_Vector3d * d )

returns the position of the point d relative to the sphere (never NoSphere); shall be called only after reset() returned true Generated from method MR::InSphereTester<double>::operator(). Parameter _this can not be null. It is a single object. Parameter d can not be null. It is a single object.

◆ MR_InSphereTester_double_ConstructFromAnother()

MRC_API MR_InSphereTester_double * MR_InSphereTester_double_ConstructFromAnother ( const MR_InSphereTester_double * _other)

Generated from constructor MR::InSphereTester<double>::InSphereTester. Parameter _other can not be null. It is a single object. The reference to things referred to by the parameter _other (if any) might be preserved in the constructed object. Never returns null. Returns an instance allocated on the heap! Must call MR_InSphereTester_double_Destroy() to free it when you're done using it.

◆ MR_InSphereTester_double_DefaultConstruct()

MRC_API MR_InSphereTester_double * MR_InSphereTester_double_DefaultConstruct ( void )

Constructs an empty (default-constructed) instance. Never returns null. Returns an instance allocated on the heap! Must call MR_InSphereTester_double_Destroy() to free it when you're done using it.

◆ MR_InSphereTester_double_DefaultConstructArray()

MRC_API MR_InSphereTester_double * MR_InSphereTester_double_DefaultConstructArray ( size_t num_elems)

Constructs an array of empty (default-constructed) instances, of the specified size. Will never return null. The array must be destroyed using MR_InSphereTester_double_DestroyArray(). Use MR_InSphereTester_double_OffsetMutablePtr() and MR_InSphereTester_double_OffsetPtr() to access the array elements.

◆ MR_InSphereTester_double_Destroy()

MRC_API void MR_InSphereTester_double_Destroy ( const MR_InSphereTester_double * _this)

Destroys a heap-allocated instance of MR_InSphereTester_double. Does nothing if the pointer is null.

◆ MR_InSphereTester_double_DestroyArray()

MRC_API void MR_InSphereTester_double_DestroyArray ( const MR_InSphereTester_double * _this)

Destroys a heap-allocated array of MR_InSphereTester_double. Does nothing if the pointer is null.

◆ MR_InSphereTester_double_flip()

MRC_API void MR_InSphereTester_double_flip ( MR_InSphereTester_double * _this)

swaps the points b and c, which selects the mirror sphere with the center on the other side of plane abc, and gives exactly the state of reset( a, c, b, rSq ) without recomputing anything: only the normal w changes there, and W, M, E are symmetric in b and c; shall be called only after reset() returned true Generated from method MR::InSphereTester<double>::flip. Parameter _this can not be null. It is a single object.

◆ MR_InSphereTester_double_OffsetMutablePtr()

MRC_API MR_InSphereTester_double * MR_InSphereTester_double_OffsetMutablePtr ( MR_InSphereTester_double * ptr,
ptrdiff_t i )

Offsets a pointer to an array element by i positions (not bytes). Use only if you're certain that the pointer points to an array element. The reference to the parameter ptr might be preserved in the return value.

◆ MR_InSphereTester_double_OffsetPtr()

MRC_API const MR_InSphereTester_double * MR_InSphereTester_double_OffsetPtr ( const MR_InSphereTester_double * ptr,
ptrdiff_t i )

Offsets a pointer to an array element by i positions (not bytes). Use only if you're certain that the pointer points to an array element. The reference to the parameter ptr might be preserved in the return value.

◆ MR_InSphereTester_double_reset()

MRC_API bool MR_InSphereTester_double_reset ( MR_InSphereTester_double * _this,
const MR_Vector3d * va,
const MR_Vector3d * vb,
const MR_Vector3d * vc,
double sqRadius )

prepares the tester for the sphere of radius sqrt(rSq) passing via points a, b, c, with the center located on the positive side of plane abc (in the half-space pointed at by cross( b - a, c - a ) from the plane); returns false if no such sphere exists: the points are collinear or coincident, or rSq is less than the squared circumradius of triangle abc Generated from method MR::InSphereTester<double>::reset. Parameter _this can not be null. It is a single object. Parameter va can not be null. It is a single object. Parameter vb can not be null. It is a single object. Parameter vc can not be null. It is a single object.

◆ MR_InSphereTester_float_AssignFromAnother()

MRC_API MR_InSphereTester_float * MR_InSphereTester_float_AssignFromAnother ( MR_InSphereTester_float * _this,
const MR_InSphereTester_float * _other )

Generated from method MR::InSphereTester<float>::operator=. Parameter _this can not be null. It is a single object. Parameter _other can not be null. It is a single object. The reference to things referred to by the parameter _other (if any) might be preserved in this object. The returned pointer will never be null. It is non-owning, do NOT destroy it. When this function is called, this object will drop any object references it held previously.

◆ MR_InSphereTester_float_call()

MRC_API MR_InSphereResult MR_InSphereTester_float_call ( const MR_InSphereTester_float * _this,
const MR_Vector3f * d )

returns the position of the point d relative to the sphere (never NoSphere); shall be called only after reset() returned true Generated from method MR::InSphereTester<float>::operator(). Parameter _this can not be null. It is a single object. Parameter d can not be null. It is a single object.

◆ MR_InSphereTester_float_ConstructFromAnother()

MRC_API MR_InSphereTester_float * MR_InSphereTester_float_ConstructFromAnother ( const MR_InSphereTester_float * _other)

Generated from constructor MR::InSphereTester<float>::InSphereTester. Parameter _other can not be null. It is a single object. The reference to things referred to by the parameter _other (if any) might be preserved in the constructed object. Never returns null. Returns an instance allocated on the heap! Must call MR_InSphereTester_float_Destroy() to free it when you're done using it.

◆ MR_InSphereTester_float_DefaultConstruct()

MRC_API MR_InSphereTester_float * MR_InSphereTester_float_DefaultConstruct ( void )

Constructs an empty (default-constructed) instance. Never returns null. Returns an instance allocated on the heap! Must call MR_InSphereTester_float_Destroy() to free it when you're done using it.

◆ MR_InSphereTester_float_DefaultConstructArray()

MRC_API MR_InSphereTester_float * MR_InSphereTester_float_DefaultConstructArray ( size_t num_elems)

Constructs an array of empty (default-constructed) instances, of the specified size. Will never return null. The array must be destroyed using MR_InSphereTester_float_DestroyArray(). Use MR_InSphereTester_float_OffsetMutablePtr() and MR_InSphereTester_float_OffsetPtr() to access the array elements.

◆ MR_InSphereTester_float_Destroy()

MRC_API void MR_InSphereTester_float_Destroy ( const MR_InSphereTester_float * _this)

Destroys a heap-allocated instance of MR_InSphereTester_float. Does nothing if the pointer is null.

◆ MR_InSphereTester_float_DestroyArray()

MRC_API void MR_InSphereTester_float_DestroyArray ( const MR_InSphereTester_float * _this)

Destroys a heap-allocated array of MR_InSphereTester_float. Does nothing if the pointer is null.

◆ MR_InSphereTester_float_flip()

MRC_API void MR_InSphereTester_float_flip ( MR_InSphereTester_float * _this)

swaps the points b and c, which selects the mirror sphere with the center on the other side of plane abc, and gives exactly the state of reset( a, c, b, rSq ) without recomputing anything: only the normal w changes there, and W, M, E are symmetric in b and c; shall be called only after reset() returned true Generated from method MR::InSphereTester<float>::flip. Parameter _this can not be null. It is a single object.

◆ MR_InSphereTester_float_OffsetMutablePtr()

MRC_API MR_InSphereTester_float * MR_InSphereTester_float_OffsetMutablePtr ( MR_InSphereTester_float * ptr,
ptrdiff_t i )

Offsets a pointer to an array element by i positions (not bytes). Use only if you're certain that the pointer points to an array element. The reference to the parameter ptr might be preserved in the return value.

◆ MR_InSphereTester_float_OffsetPtr()

MRC_API const MR_InSphereTester_float * MR_InSphereTester_float_OffsetPtr ( const MR_InSphereTester_float * ptr,
ptrdiff_t i )

Offsets a pointer to an array element by i positions (not bytes). Use only if you're certain that the pointer points to an array element. The reference to the parameter ptr might be preserved in the return value.

◆ MR_InSphereTester_float_reset()

MRC_API bool MR_InSphereTester_float_reset ( MR_InSphereTester_float * _this,
const MR_Vector3f * va,
const MR_Vector3f * vb,
const MR_Vector3f * vc,
float sqRadius )

prepares the tester for the sphere of radius sqrt(rSq) passing via points a, b, c, with the center located on the positive side of plane abc (in the half-space pointed at by cross( b - a, c - a ) from the plane); returns false if no such sphere exists: the points are collinear or coincident, or rSq is less than the squared circumradius of triangle abc Generated from method MR::InSphereTester<float>::reset. Parameter _this can not be null. It is a single object. Parameter va can not be null. It is a single object. Parameter vb can not be null. It is a single object. Parameter vc can not be null. It is a single object.

◆ MR_InSphereTester_int_AssignFromAnother()

MRC_API MR_InSphereTester_int * MR_InSphereTester_int_AssignFromAnother ( MR_InSphereTester_int * _this,
const MR_InSphereTester_int * _other )

Generated from method MR::InSphereTester<int>::operator=. Parameter _this can not be null. It is a single object. Parameter _other can not be null. It is a single object. The reference to things referred to by the parameter _other (if any) might be preserved in this object. The returned pointer will never be null. It is non-owning, do NOT destroy it. When this function is called, this object will drop any object references it held previously.

◆ MR_InSphereTester_int_call()

MRC_API MR_InSphereResult MR_InSphereTester_int_call ( const MR_InSphereTester_int * _this,
const MR_Vector3i * d )

returns the position of the point d relative to the sphere (never NoSphere); shall be called only after reset() returned true Generated from method MR::InSphereTester<int>::operator(). Parameter _this can not be null. It is a single object. Parameter d can not be null. It is a single object.

◆ MR_InSphereTester_int_ConstructFromAnother()

MRC_API MR_InSphereTester_int * MR_InSphereTester_int_ConstructFromAnother ( const MR_InSphereTester_int * _other)

Generated from constructor MR::InSphereTester<int>::InSphereTester. Parameter _other can not be null. It is a single object. The reference to things referred to by the parameter _other (if any) might be preserved in the constructed object. Never returns null. Returns an instance allocated on the heap! Must call MR_InSphereTester_int_Destroy() to free it when you're done using it.

◆ MR_InSphereTester_int_DefaultConstruct()

MRC_API MR_InSphereTester_int * MR_InSphereTester_int_DefaultConstruct ( void )

Constructs an empty (default-constructed) instance. Never returns null. Returns an instance allocated on the heap! Must call MR_InSphereTester_int_Destroy() to free it when you're done using it.

◆ MR_InSphereTester_int_DefaultConstructArray()

MRC_API MR_InSphereTester_int * MR_InSphereTester_int_DefaultConstructArray ( size_t num_elems)

Constructs an array of empty (default-constructed) instances, of the specified size. Will never return null. The array must be destroyed using MR_InSphereTester_int_DestroyArray(). Use MR_InSphereTester_int_OffsetMutablePtr() and MR_InSphereTester_int_OffsetPtr() to access the array elements.

◆ MR_InSphereTester_int_Destroy()

MRC_API void MR_InSphereTester_int_Destroy ( const MR_InSphereTester_int * _this)

Destroys a heap-allocated instance of MR_InSphereTester_int. Does nothing if the pointer is null.

◆ MR_InSphereTester_int_DestroyArray()

MRC_API void MR_InSphereTester_int_DestroyArray ( const MR_InSphereTester_int * _this)

Destroys a heap-allocated array of MR_InSphereTester_int. Does nothing if the pointer is null.

◆ MR_InSphereTester_int_flip()

MRC_API void MR_InSphereTester_int_flip ( MR_InSphereTester_int * _this)

swaps the points b and c, which selects the mirror sphere with the center on the other side of plane abc, and gives exactly the state of reset( a, c, b, rSq ) without recomputing anything: only the normal w changes there, and W, M, E are symmetric in b and c; shall be called only after reset() returned true Generated from method MR::InSphereTester<int>::flip. Parameter _this can not be null. It is a single object.

◆ MR_InSphereTester_int_OffsetMutablePtr()

MRC_API MR_InSphereTester_int * MR_InSphereTester_int_OffsetMutablePtr ( MR_InSphereTester_int * ptr,
ptrdiff_t i )

Offsets a pointer to an array element by i positions (not bytes). Use only if you're certain that the pointer points to an array element. The reference to the parameter ptr might be preserved in the return value.

◆ MR_InSphereTester_int_OffsetPtr()

MRC_API const MR_InSphereTester_int * MR_InSphereTester_int_OffsetPtr ( const MR_InSphereTester_int * ptr,
ptrdiff_t i )

Offsets a pointer to an array element by i positions (not bytes). Use only if you're certain that the pointer points to an array element. The reference to the parameter ptr might be preserved in the return value.

◆ MR_InSphereTester_int_reset()

MRC_API bool MR_InSphereTester_int_reset ( MR_InSphereTester_int * _this,
const MR_Vector3i * a,
const MR_Vector3i * b,
const MR_Vector3i * c,
int64_t rSq )

prepares the tester for the sphere of radius sqrt(rSq) passing via points a, b, c, with the center located on the positive side of plane abc (in the half-space pointed at by cross( b - a, c - a ) from the plane); returns false if no such sphere exists: the points are collinear or coincident, or rSq is less than the squared circumradius of triangle abc Generated from method MR::InSphereTester<int>::reset. Parameter _this can not be null. It is a single object. Parameter a can not be null. It is a single object. Parameter b can not be null. It is a single object. Parameter c can not be null. It is a single object.

◆ MR_InSphereTesterSoS_AssignFromAnother()

MRC_API MR_InSphereTesterSoS * MR_InSphereTesterSoS_AssignFromAnother ( MR_InSphereTesterSoS * _this,
const MR_InSphereTesterSoS * _other )

Generated from method MR::InSphereTesterSoS::operator=. Parameter _this can not be null. It is a single object. Parameter _other can not be null. It is a single object. The reference to things referred to by the parameter _other (if any) might be preserved in this object. The returned pointer will never be null. It is non-owning, do NOT destroy it. When this function is called, this object will drop any object references it held previously.

◆ MR_InSphereTesterSoS_call()

MRC_API MR_InSphereResult MR_InSphereTesterSoS_call ( const MR_InSphereTesterSoS * _this,
const MR_PreciseVertCoords * d )

returns the position of the point d.pt relative to the sphere, resolving "exactly on the sphere" ties into Inside or Outside by simulation-of-simplicity as described at the inSphere overload above, using the ids of d and of the points given in reset() (never returns OnSphere or NoSphere); shall be called only after reset() returned true, and all four ids must be distinct Generated from method MR::InSphereTesterSoS::operator(). Parameter _this can not be null. It is a single object. Parameter d can not be null. It is a single object.

◆ MR_InSphereTesterSoS_ConstructFromAnother()

MRC_API MR_InSphereTesterSoS * MR_InSphereTesterSoS_ConstructFromAnother ( const MR_InSphereTesterSoS * _other)

Generated from constructor MR::InSphereTesterSoS::InSphereTesterSoS. Parameter _other can not be null. It is a single object. The reference to things referred to by the parameter _other (if any) might be preserved in the constructed object. Never returns null. Returns an instance allocated on the heap! Must call MR_InSphereTesterSoS_Destroy() to free it when you're done using it.

◆ MR_InSphereTesterSoS_DefaultConstruct()

MRC_API MR_InSphereTesterSoS * MR_InSphereTesterSoS_DefaultConstruct ( void )

Constructs an empty (default-constructed) instance. Never returns null. Returns an instance allocated on the heap! Must call MR_InSphereTesterSoS_Destroy() to free it when you're done using it.

◆ MR_InSphereTesterSoS_DefaultConstructArray()

MRC_API MR_InSphereTesterSoS * MR_InSphereTesterSoS_DefaultConstructArray ( size_t num_elems)

Constructs an array of empty (default-constructed) instances, of the specified size. Will never return null. The array must be destroyed using MR_InSphereTesterSoS_DestroyArray(). Use MR_InSphereTesterSoS_OffsetMutablePtr() and MR_InSphereTesterSoS_OffsetPtr() to access the array elements.

◆ MR_InSphereTesterSoS_degenerateTriangle()

MRC_API bool MR_InSphereTesterSoS_degenerateTriangle ( const MR_InSphereTesterSoS * _this)

whether the last successful reset() got a degenerate triangle (two coincident points), where only the symbolically perturbed sphere exists; the exact sphere quantities of the base class are not valid then Generated from method MR::InSphereTesterSoS::degenerateTriangle. Parameter _this can not be null. It is a single object.

◆ MR_InSphereTesterSoS_Destroy()

MRC_API void MR_InSphereTesterSoS_Destroy ( const MR_InSphereTesterSoS * _this)

Destroys a heap-allocated instance of MR_InSphereTesterSoS. Does nothing if the pointer is null.

◆ MR_InSphereTesterSoS_DestroyArray()

MRC_API void MR_InSphereTesterSoS_DestroyArray ( const MR_InSphereTesterSoS * _this)

Destroys a heap-allocated array of MR_InSphereTesterSoS. Does nothing if the pointer is null.

◆ MR_InSphereTesterSoS_flip()

MRC_API void MR_InSphereTesterSoS_flip ( MR_InSphereTesterSoS * _this)

swaps the points b and c together with their ids, which selects the mirror sphere as in the base class, and gives exactly the state of reset( a, c, b, rSq ); this hides the id-less flip of the base class, which would leave stale ids Generated from method MR::InSphereTesterSoS::flip. Parameter _this can not be null. It is a single object.

◆ MR_InSphereTesterSoS_MutableStaticDowncastFrom_MR_InSphereTester_int()

MRC_API MR_InSphereTesterSoS * MR_InSphereTesterSoS_MutableStaticDowncastFrom_MR_InSphereTester_int ( MR_InSphereTester_int * object)

Downcasts an instance of MR::InSphereTester<int> to a derived class MR::InSphereTesterSoS. This is a static downcast, it trusts the programmer that the target type is correct. Results in UB and returns an invalid pointer otherwise. The reference to the parameter object might be preserved in the return value.

◆ MR_InSphereTesterSoS_MutableUpcastTo_MR_InSphereTester_int()

MRC_API MR_InSphereTester_int * MR_InSphereTesterSoS_MutableUpcastTo_MR_InSphereTester_int ( MR_InSphereTesterSoS * object)

Upcasts an instance of MR::InSphereTesterSoS to its base class MR::InSphereTester<int>. The reference to the parameter object might be preserved in the return value.

◆ MR_InSphereTesterSoS_OffsetMutablePtr()

MRC_API MR_InSphereTesterSoS * MR_InSphereTesterSoS_OffsetMutablePtr ( MR_InSphereTesterSoS * ptr,
ptrdiff_t i )

Offsets a pointer to an array element by i positions (not bytes). Use only if you're certain that the pointer points to an array element. The reference to the parameter ptr might be preserved in the return value.

◆ MR_InSphereTesterSoS_OffsetPtr()

MRC_API const MR_InSphereTesterSoS * MR_InSphereTesterSoS_OffsetPtr ( const MR_InSphereTesterSoS * ptr,
ptrdiff_t i )

Offsets a pointer to an array element by i positions (not bytes). Use only if you're certain that the pointer points to an array element. The reference to the parameter ptr might be preserved in the return value.

◆ MR_InSphereTesterSoS_reset()

MRC_API bool MR_InSphereTesterSoS_reset ( MR_InSphereTesterSoS * _this,
const MR_PreciseVertCoords * a,
const MR_PreciseVertCoords * b,
const MR_PreciseVertCoords * c,
int64_t rSq )

prepares the tester for the sphere of radius sqrt(rSq) passing via points a.pt, b.pt, c.pt, with the center located on the positive side of their plane (in the half-space pointed at by cross( b.pt - a.pt, c.pt - a.pt ) from the plane), remembering the ids for the queries; returns false if no such sphere exists for the symbolically perturbed points (see the simulation-of-simplicity inSphere above): in particular, coincident and collinear triangle points are resolved by the perturbation here, and rSq exactly equal to the squared circumradius gives false whenever the perturbation of these ids breaks the existence; this hides the id-less reset of the base class, which would leave stale ids Generated from method MR::InSphereTesterSoS::reset. Parameter _this can not be null. It is a single object. Parameter a can not be null. It is a single object. Parameter b can not be null. It is a single object. Parameter c can not be null. It is a single object.

◆ MR_InSphereTesterSoS_StaticDowncastFrom_MR_InSphereTester_int()

MRC_API const MR_InSphereTesterSoS * MR_InSphereTesterSoS_StaticDowncastFrom_MR_InSphereTester_int ( const MR_InSphereTester_int * object)

Downcasts an instance of MR::InSphereTester<int> to a derived class MR::InSphereTesterSoS. This is a static downcast, it trusts the programmer that the target type is correct. Results in UB and returns an invalid pointer otherwise. This version is acting on mutable pointers. The reference to the parameter object might be preserved in the return value.

◆ MR_InSphereTesterSoS_UpcastTo_MR_InSphereTester_int()

MRC_API const MR_InSphereTester_int * MR_InSphereTesterSoS_UpcastTo_MR_InSphereTester_int ( const MR_InSphereTesterSoS * object)

Upcasts an instance of MR::InSphereTesterSoS to its base class MR::InSphereTester<int>. This version is acting on mutable pointers. The reference to the parameter object might be preserved in the return value.