#include <MRCMesh/MRId.h>#include <MRCMesh/MRVector3.h>#include <MRCMisc/exports.h>#include <stdbool.h>#include <stddef.h>Go to the source code of this file.
| Typedefs | |
| typedef struct MR_AABBTree | MR_AABBTree | 
| typedef struct MR_Dipoles | MR_Dipoles | 
| typedef struct MR_Mesh | MR_Mesh | 
| typedef struct MR_Dipole | MR_Dipole | 
| Functions | |
| MRC_API const MR_Vector3f * | MR_Dipole_Get_pos (const MR_Dipole *_this) | 
| MRC_API void | MR_Dipole_Set_pos (MR_Dipole *_this, MR_Vector3f value) | 
| MRC_API MR_Vector3f * | MR_Dipole_GetMutable_pos (MR_Dipole *_this) | 
| MRC_API const float * | MR_Dipole_Get_area (const MR_Dipole *_this) | 
| MRC_API void | MR_Dipole_Set_area (MR_Dipole *_this, float value) | 
| MRC_API float * | MR_Dipole_GetMutable_area (MR_Dipole *_this) | 
| MRC_API const MR_Vector3f * | MR_Dipole_Get_dirArea (const MR_Dipole *_this) | 
| MRC_API void | MR_Dipole_Set_dirArea (MR_Dipole *_this, MR_Vector3f value) | 
| MRC_API MR_Vector3f * | MR_Dipole_GetMutable_dirArea (MR_Dipole *_this) | 
| MRC_API const float * | MR_Dipole_Get_rr (const MR_Dipole *_this) | 
| MRC_API void | MR_Dipole_Set_rr (MR_Dipole *_this, float value) | 
| MRC_API float * | MR_Dipole_GetMutable_rr (MR_Dipole *_this) | 
| MRC_API MR_Dipole * | MR_Dipole_DefaultConstruct (void) | 
| MRC_API MR_Dipole * | MR_Dipole_DefaultConstructArray (size_t num_elems) | 
| MRC_API MR_Dipole * | MR_Dipole_ConstructFrom (MR_Vector3f pos, float area, MR_Vector3f dirArea, float rr) | 
| MRC_API const MR_Dipole * | MR_Dipole_OffsetPtr (const MR_Dipole *ptr, ptrdiff_t i) | 
| Offsets a pointer to an array element by ipositions (not bytes). Use only if you're certain that the pointer points to an array element. | |
| MRC_API MR_Dipole * | MR_Dipole_OffsetMutablePtr (MR_Dipole *ptr, ptrdiff_t i) | 
| Offsets a pointer to an array element by ipositions (not bytes). Use only if you're certain that the pointer points to an array element. | |
| MRC_API MR_Dipole * | MR_Dipole_ConstructFromAnother (const MR_Dipole *_other) | 
| MRC_API void | MR_Dipole_Destroy (const MR_Dipole *_this) | 
| Destroys a heap-allocated instance of MR_Dipole. Does nothing if the pointer is null. | |
| MRC_API void | MR_Dipole_DestroyArray (const MR_Dipole *_this) | 
| Destroys a heap-allocated array of MR_Dipole. Does nothing if the pointer is null. | |
| MRC_API MR_Dipole * | MR_Dipole_AssignFromAnother (MR_Dipole *_this, const MR_Dipole *_other) | 
| MRC_API bool | MR_Dipole_addIfGoodApprox (const MR_Dipole *_this, const MR_Vector3f *q, float betaSq, float *addTo) | 
| MRC_API void | MR_calcDipoles_3 (MR_Dipoles *dipoles, const MR_AABBTree *tree, const MR_Mesh *mesh) | 
| MRC_API MR_Dipoles * | MR_calcDipoles_2 (const MR_AABBTree *tree, const MR_Mesh *mesh) | 
| MRC_API float | MR_calcFastWindingNumber (const MR_Dipoles *dipoles, const MR_AABBTree *tree, const MR_Mesh *mesh, const MR_Vector3f *q, float beta, MR_FaceId skipFace) | 
| typedef struct MR_AABBTree MR_AABBTree | 
Single oriented point or two oppositely charged points close together, representing a mesh part (one or more triangles) https://www.dgp.toronto.edu/projects/fast-winding-numbers/fast-winding-numbers-for-soups-and-clouds-siggraph-2018-barill-et-al.pdf Generated from class MR::Dipole. 
| typedef struct MR_Dipoles MR_Dipoles | 
| MRC_API MR_Dipoles * MR_calcDipoles_2 | ( | const MR_AABBTree * | tree, | 
| const MR_Mesh * | mesh ) | 
Generated from function MR::calcDipoles. Parameter tree can not be null. It is a single object. Parameter mesh can not be null. It is a single object. Never returns null. Returns an instance allocated on the heap! Must call MR_Dipoles_Destroy() to free it when you're done using it. 
| MRC_API void MR_calcDipoles_3 | ( | MR_Dipoles * | dipoles, | 
| const MR_AABBTree * | tree, | ||
| const MR_Mesh * | mesh ) | 
calculates dipoles for given mesh and AABB-tree Generated from function MR::calcDipoles. Parameter dipoles can not be null. It is a single object. Parameter tree can not be null. It is a single object. Parameter mesh can not be null. It is a single object. 
| MRC_API float MR_calcFastWindingNumber | ( | const MR_Dipoles * | dipoles, | 
| const MR_AABBTree * | tree, | ||
| const MR_Mesh * | mesh, | ||
| const MR_Vector3f * | q, | ||
| float | beta, | ||
| MR_FaceId | skipFace ) | 
compute approximate winding number at
| q; | |
| beta | determines the precision of the approximation: the more the better, recommended value 2 or more; if distance from q to the center of some triangle group is more than beta times the distance from the center to most distance triangle in the group then we use approximate formula | 
| skipFace | this triangle (if it is close to | 
| q) | will be skipped from summation Generated from function MR::calcFastWindingNumber. Parameterdipolescan not be null. It is a single object. Parametertreecan not be null. It is a single object. Parametermeshcan not be null. It is a single object. Parameterqcan not be null. It is a single object. | 
| MRC_API bool MR_Dipole_addIfGoodApprox | ( | const MR_Dipole * | _this, | 
| const MR_Vector3f * | q, | ||
| float | betaSq, | ||
| float * | addTo ) | 
returns true if this dipole is good approximation for a point
| q; | and adds the contribution of this dipole to the winding number at point | 
| q | to | 
| addTo | Generated from a method of class MR::DipolenamedaddIfGoodApprox. Parameter_thiscan not be null. It is a single object. Parameterqcan not be null. It is a single object. ParameteraddTocan not be null. It is a single object. | 
Generated from a method of class MR::Dipole named operator=. Parameter _this can not be null. It is a single object. Parameter _other can not be null. It is a single object. The returned pointer will never be null. It is non-owning, do NOT destroy it. 
| MRC_API MR_Dipole * MR_Dipole_ConstructFrom | ( | MR_Vector3f | pos, | 
| float | area, | ||
| MR_Vector3f | dirArea, | ||
| float | rr ) | 
Constructs MR::Dipole elementwise. Never returns null. Returns an instance allocated on the heap! Must call MR_Dipole_Destroy() to free it when you're done using it. 
Generated from a constructor of class MR::Dipole. Parameter _other can not be null. It is a single object. Never returns null. Returns an instance allocated on the heap! Must call MR_Dipole_Destroy() to free it when you're done using it. 
Constructs an empty (default-constructed) instance. Never returns null. Returns an instance allocated on the heap! Must call MR_Dipole_Destroy() to free it when you're done using it. 
Constructs an array of empty (default-constructed) instances, of the specified size. Will never return null. The array must be destroyed using MR_Dipole_DestroyArray(). Use MR_Dipole_OffsetMutablePtr() and MR_Dipole_OffsetPtr() to access the array elements. 
Destroys a heap-allocated instance of MR_Dipole. Does nothing if the pointer is null. 
Destroys a heap-allocated array of MR_Dipole. Does nothing if the pointer is null. 
Returns a pointer to a member variable of class MR::Dipole named area. Parameter _this can not be null. It is a single object. The returned pointer will never be null. It is non-owning, do NOT destroy it. 
| MRC_API const MR_Vector3f * MR_Dipole_Get_dirArea | ( | const MR_Dipole * | _this | ) | 
Returns a pointer to a member variable of class MR::Dipole named dirArea. Parameter _this can not be null. It is a single object. The returned pointer will never be null. It is non-owning, do NOT destroy it. 
| MRC_API const MR_Vector3f * MR_Dipole_Get_pos | ( | const MR_Dipole * | _this | ) | 
Returns a pointer to a member variable of class MR::Dipole named pos. Parameter _this can not be null. It is a single object. The returned pointer will never be null. It is non-owning, do NOT destroy it. 
Returns a pointer to a member variable of class MR::Dipole named rr. Parameter _this can not be null. It is a single object. The returned pointer will never be null. It is non-owning, do NOT destroy it. 
Returns a mutable pointer to a member variable of class MR::Dipole named area. Parameter _this can not be null. It is a single object. The returned pointer will never be null. It is non-owning, do NOT destroy it. 
| MRC_API MR_Vector3f * MR_Dipole_GetMutable_dirArea | ( | MR_Dipole * | _this | ) | 
Returns a mutable pointer to a member variable of class MR::Dipole named dirArea. Parameter _this can not be null. It is a single object. The returned pointer will never be null. It is non-owning, do NOT destroy it. 
| MRC_API MR_Vector3f * MR_Dipole_GetMutable_pos | ( | MR_Dipole * | _this | ) | 
Returns a mutable pointer to a member variable of class MR::Dipole named pos. Parameter _this can not be null. It is a single object. The returned pointer will never be null. It is non-owning, do NOT destroy it. 
Returns a mutable pointer to a member variable of class MR::Dipole named rr. Parameter _this can not be null. It is a single object. The returned pointer will never be null. It is non-owning, do NOT destroy it. 
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. 
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. 
Modifies a member variable of class MR::Dipole named area. Parameter _this can not be null. It is a single object. 
| MRC_API void MR_Dipole_Set_dirArea | ( | MR_Dipole * | _this, | 
| MR_Vector3f | value ) | 
Modifies a member variable of class MR::Dipole named dirArea. Parameter _this can not be null. It is a single object. 
| MRC_API void MR_Dipole_Set_pos | ( | MR_Dipole * | _this, | 
| MR_Vector3f | value ) | 
Modifies a member variable of class MR::Dipole named pos. Parameter _this can not be null. It is a single object. 
Modifies a member variable of class MR::Dipole named rr. Parameter _this can not be null. It is a single object.