#include <MRCMesh/MRVector3.h>#include <MRCMisc/exports.h>#include <MRCMisc/std_array_MR_Vector3d_3.h>#include <MRCMisc/std_array_MR_Vector3f_3.h>#include <stdbool.h>Go to the source code of this file.
Typedefs | |
| typedef struct MR_std_optional_MR_Plane3d | MR_std_optional_MR_Plane3d |
| typedef struct MR_std_optional_MR_Plane3f | MR_std_optional_MR_Plane3f |
| typedef struct MR_std_optional_MR_Vector2d | MR_std_optional_MR_Vector2d |
| typedef struct MR_std_optional_MR_Vector3d | MR_std_optional_MR_Vector3d |
| typedef struct MR_std_optional_MR_Plane3d MR_std_optional_MR_Plane3d |
Stores either a single MR::Plane3d or nothing. 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).
| typedef struct MR_std_optional_MR_Plane3f MR_std_optional_MR_Plane3f |
Stores either a single MR::Plane3f or nothing. 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).
| typedef struct MR_std_optional_MR_Vector2d MR_std_optional_MR_Vector2d |
Stores either a single MR::Vector2d or nothing. 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).
| typedef struct MR_std_optional_MR_Vector3d MR_std_optional_MR_Vector3d |
Stores either a single MR::Vector3d or nothing. 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).
| MRC_API double MR_area_double_MR_Vector2d | ( | const MR_Vector2d * | p, |
| const MR_Vector2d * | q, | ||
| const MR_Vector2d * | r ) |
computes twice the area of given triangle Generated from function MR::area<double>. Parameter p can not be null. It is a single object. Parameter q can not be null. It is a single object. Parameter r can not be null. It is a single object.
| MRC_API double MR_area_double_MR_Vector3d | ( | const MR_Vector3d * | p, |
| const MR_Vector3d * | q, | ||
| const MR_Vector3d * | r ) |
computes twice the area of given triangle Generated from function MR::area<double>. Parameter p can not be null. It is a single object. Parameter q can not be null. It is a single object. Parameter r can not be null. It is a single object.
| MRC_API float MR_area_float_MR_Vector2f | ( | const MR_Vector2f * | p, |
| const MR_Vector2f * | q, | ||
| const MR_Vector2f * | r ) |
computes twice the area of given triangle Generated from function MR::area<float>. Parameter p can not be null. It is a single object. Parameter q can not be null. It is a single object. Parameter r can not be null. It is a single object.
| MRC_API float MR_area_float_MR_Vector3f | ( | const MR_Vector3f * | p, |
| const MR_Vector3f * | q, | ||
| const MR_Vector3f * | r ) |
computes twice the area of given triangle Generated from function MR::area<float>. Parameter p can not be null. It is a single object. Parameter q can not be null. It is a single object. Parameter r can not be null. It is a single object.
| MRC_API bool MR_circumballCenters_double | ( | const MR_Vector3d * | a, |
| const MR_Vector3d * | b, | ||
| const MR_Vector3d * | c, | ||
| double | radius, | ||
| MR_Vector3d * | centerPos, | ||
| MR_Vector3d * | centerNeg ) |
Given triangle ABC and ball radius, finds two centers of balls each touching all 3 triangle's vertices;
| MRC_API bool MR_circumballCenters_float | ( | const MR_Vector3f * | a, |
| const MR_Vector3f * | b, | ||
| const MR_Vector3f * | c, | ||
| float | radius, | ||
| MR_Vector3f * | centerPos, | ||
| MR_Vector3f * | centerNeg ) |
Given triangle ABC and ball radius, finds two centers of balls each touching all 3 triangle's vertices;
| MRC_API MR_Vector3d MR_circumcircleCenter_double_2 | ( | const MR_Vector3d * | a, |
| const MR_Vector3d * | b ) |
Computes the center of the the triangle's 0AB circumcircle Generated from function MR::circumcircleCenter<double>. Parameter a can not be null. It is a single object. Parameter b can not be null. It is a single object.
| MRC_API MR_Vector3d MR_circumcircleCenter_double_3 | ( | const MR_Vector3d * | a, |
| const MR_Vector3d * | b, | ||
| const MR_Vector3d * | c ) |
Computes the center of the the triangle's ABC circumcircle Generated from function MR::circumcircleCenter<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.
| MRC_API MR_Vector3f MR_circumcircleCenter_float_2 | ( | const MR_Vector3f * | a, |
| const MR_Vector3f * | b ) |
Computes the center of the the triangle's 0AB circumcircle Generated from function MR::circumcircleCenter<float>. Parameter a can not be null. It is a single object. Parameter b can not be null. It is a single object.
| MRC_API MR_Vector3f MR_circumcircleCenter_float_3 | ( | const MR_Vector3f * | a, |
| const MR_Vector3f * | b, | ||
| const MR_Vector3f * | c ) |
Computes the center of the the triangle's ABC circumcircle Generated from function MR::circumcircleCenter<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.
| MRC_API double MR_circumcircleDiameter_double | ( | const MR_Vector3d * | a, |
| const MR_Vector3d * | b, | ||
| const MR_Vector3d * | c ) |
Computes the diameter of the triangle's ABC circumcircle Generated from function MR::circumcircleDiameter<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.
| MRC_API float MR_circumcircleDiameter_float | ( | const MR_Vector3f * | a, |
| const MR_Vector3f * | b, | ||
| const MR_Vector3f * | c ) |
Computes the diameter of the triangle's ABC circumcircle Generated from function MR::circumcircleDiameter<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.
| MRC_API double MR_circumcircleDiameterSq_double | ( | const MR_Vector3d * | a, |
| const MR_Vector3d * | b, | ||
| const MR_Vector3d * | c ) |
Computes the squared diameter of the triangle's ABC circumcircle; Generated from function MR::circumcircleDiameterSq<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.
| MRC_API float MR_circumcircleDiameterSq_float | ( | const MR_Vector3f * | a, |
| const MR_Vector3f * | b, | ||
| const MR_Vector3f * | c ) |
Computes the squared diameter of the triangle's ABC circumcircle; Generated from function MR::circumcircleDiameterSq<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.
| MRC_API double MR_cotan_double_2 | ( | const MR_std_array_MR_Vector3d_3 * | t, |
| const double * | absMaxVal ) |
given triangle by its three vertices: t[0], t[1], t[2], returns the cotangent of the angle at t[2], but not larger by magnitude than absMaxVal Generated from function MR::cotan<double>. Parameter t can not be null. It is a single object. Parameter absMaxVal has a default argument: std::numeric_limits<double>::max(), pass a null pointer to use it.
| MRC_API double MR_cotan_double_3 | ( | double | a, |
| double | b, | ||
| double | c ) |
given (a, b, c) - the side lengths of a triangle, returns the cotangent of the angle opposite the side with length a see "An Algorithm for the Construction of Intrinsic Delaunay Triangulations with Applications to Digital Geometry Processing". https://page.math.tu-berlin.de/~bobenko/papers/InDel.pdf Generated from function MR::cotan<double>.
| MRC_API float MR_cotan_float_2 | ( | const MR_std_array_MR_Vector3f_3 * | t, |
| const float * | absMaxVal ) |
given triangle by its three vertices: t[0], t[1], t[2], returns the cotangent of the angle at t[2], but not larger by magnitude than absMaxVal Generated from function MR::cotan<float>. Parameter t can not be null. It is a single object. Parameter absMaxVal has a default argument: std::numeric_limits<float>::max(), pass a null pointer to use it.
| MRC_API float MR_cotan_float_3 | ( | float | a, |
| float | b, | ||
| float | c ) |
given (a, b, c) - the side lengths of a triangle, returns the cotangent of the angle opposite the side with length a see "An Algorithm for the Construction of Intrinsic Delaunay Triangulations with Applications to Digital Geometry Processing". https://page.math.tu-berlin.de/~bobenko/papers/InDel.pdf Generated from function MR::cotan<float>.
| MRC_API double MR_dblArea_double_1 | ( | const MR_std_array_MR_Vector3d_3 * | t | ) |
computes twice the area of given triangle Generated from function MR::dblArea<double>. Parameter t can not be null. It is a single object.
| MRC_API double MR_dblArea_double_3_MR_Vector2d | ( | const MR_Vector2d * | p, |
| const MR_Vector2d * | q, | ||
| const MR_Vector2d * | r ) |
computes twice the area of given triangle Generated from function MR::dblArea<double>. Parameter p can not be null. It is a single object. Parameter q can not be null. It is a single object. Parameter r can not be null. It is a single object.
| MRC_API double MR_dblArea_double_3_MR_Vector3d | ( | const MR_Vector3d * | p, |
| const MR_Vector3d * | q, | ||
| const MR_Vector3d * | r ) |
computes twice the area of given triangle Generated from function MR::dblArea<double>. Parameter p can not be null. It is a single object. Parameter q can not be null. It is a single object. Parameter r can not be null. It is a single object.
| MRC_API float MR_dblArea_float_1 | ( | const MR_std_array_MR_Vector3f_3 * | t | ) |
computes twice the area of given triangle Generated from function MR::dblArea<float>. Parameter t can not be null. It is a single object.
| MRC_API float MR_dblArea_float_3_MR_Vector2f | ( | const MR_Vector2f * | p, |
| const MR_Vector2f * | q, | ||
| const MR_Vector2f * | r ) |
computes twice the area of given triangle Generated from function MR::dblArea<float>. Parameter p can not be null. It is a single object. Parameter q can not be null. It is a single object. Parameter r can not be null. It is a single object.
| MRC_API float MR_dblArea_float_3_MR_Vector3f | ( | const MR_Vector3f * | p, |
| const MR_Vector3f * | q, | ||
| const MR_Vector3f * | r ) |
computes twice the area of given triangle Generated from function MR::dblArea<float>. Parameter p can not be null. It is a single object. Parameter q can not be null. It is a single object. Parameter r can not be null. It is a single object.
| MRC_API double MR_dblAreaSq_double | ( | const MR_Vector3d * | p, |
| const MR_Vector3d * | q, | ||
| const MR_Vector3d * | r ) |
computes the square of double area of given triangle Generated from function MR::dblAreaSq<double>. Parameter p can not be null. It is a single object. Parameter q can not be null. It is a single object. Parameter r can not be null. It is a single object.
| MRC_API float MR_dblAreaSq_float | ( | const MR_Vector3f * | p, |
| const MR_Vector3f * | q, | ||
| const MR_Vector3f * | r ) |
computes the square of double area of given triangle Generated from function MR::dblAreaSq<float>. Parameter p can not be null. It is a single object. Parameter q can not be null. It is a single object. Parameter r can not be null. It is a single object.
| MRC_API double MR_dihedralAngle_double | ( | const MR_Vector3d * | leftNorm, |
| const MR_Vector3d * | rightNorm, | ||
| const MR_Vector3d * | edgeVec ) |
given an edge direction between two faces with given normals (not necessary of unit length), computes the dihedral angle between the faces: 0 if both faces are in the same plane, positive if the faces form convex surface, negative if the faces form concave surface; please consider the usage of faster dihedralAngleSin(e) and dihedralAngleCos(e) Generated from function MR::dihedralAngle<double>. Parameter leftNorm can not be null. It is a single object. Parameter rightNorm can not be null. It is a single object. Parameter edgeVec can not be null. It is a single object.
| MRC_API float MR_dihedralAngle_float | ( | const MR_Vector3f * | leftNorm, |
| const MR_Vector3f * | rightNorm, | ||
| const MR_Vector3f * | edgeVec ) |
given an edge direction between two faces with given normals (not necessary of unit length), computes the dihedral angle between the faces: 0 if both faces are in the same plane, positive if the faces form convex surface, negative if the faces form concave surface; please consider the usage of faster dihedralAngleSin(e) and dihedralAngleCos(e) Generated from function MR::dihedralAngle<float>. Parameter leftNorm can not be null. It is a single object. Parameter rightNorm can not be null. It is a single object. Parameter edgeVec can not be null. It is a single object.
| MRC_API double MR_dihedralAngleCos_double | ( | const MR_Vector3d * | leftNorm, |
| const MR_Vector3d * | rightNorm ) |
given two face normals, computes cosine of dihedral angle between the faces: 1 if both faces are in the same plane, 0 if the surface makes right angle turn at the edge, -1 if the faces overlap one another Generated from function MR::dihedralAngleCos<double>. Parameter leftNorm can not be null. It is a single object. Parameter rightNorm can not be null. It is a single object.
| MRC_API float MR_dihedralAngleCos_float | ( | const MR_Vector3f * | leftNorm, |
| const MR_Vector3f * | rightNorm ) |
given two face normals, computes cosine of dihedral angle between the faces: 1 if both faces are in the same plane, 0 if the surface makes right angle turn at the edge, -1 if the faces overlap one another Generated from function MR::dihedralAngleCos<float>. Parameter leftNorm can not be null. It is a single object. Parameter rightNorm can not be null. It is a single object.
| MRC_API double MR_dihedralAngleSin_double | ( | const MR_Vector3d * | leftNorm, |
| const MR_Vector3d * | rightNorm, | ||
| const MR_Vector3d * | edgeVec ) |
given an edge direction between two faces with given normals, computes sine of dihedral angle between the faces: 0 if both faces are in the same plane, positive if the faces form convex surface, negative if the faces form concave surface Generated from function MR::dihedralAngleSin<double>. Parameter leftNorm can not be null. It is a single object. Parameter rightNorm can not be null. It is a single object. Parameter edgeVec can not be null. It is a single object.
| MRC_API float MR_dihedralAngleSin_float | ( | const MR_Vector3f * | leftNorm, |
| const MR_Vector3f * | rightNorm, | ||
| const MR_Vector3f * | edgeVec ) |
given an edge direction between two faces with given normals, computes sine of dihedral angle between the faces: 0 if both faces are in the same plane, positive if the faces form convex surface, negative if the faces form concave surface Generated from function MR::dihedralAngleSin<float>. Parameter leftNorm can not be null. It is a single object. Parameter rightNorm can not be null. It is a single object. Parameter edgeVec can not be null. It is a single object.
| MRC_API MR_Vector3d MR_dirDblArea_double_1 | ( | const MR_std_array_MR_Vector3d_3 * | t | ) |
computes directed double area of given triangle Generated from function MR::dirDblArea<double>. Parameter t can not be null. It is a single object.
| MRC_API MR_Vector3d MR_dirDblArea_double_2 | ( | const MR_Vector3d * | q, |
| const MR_Vector3d * | r ) |
computes directed double area of triangle 0QR Generated from function MR::dirDblArea<double>. Parameter q can not be null. It is a single object. Parameter r can not be null. It is a single object.
| MRC_API MR_Vector3d MR_dirDblArea_double_3 | ( | const MR_Vector3d * | p, |
| const MR_Vector3d * | q, | ||
| const MR_Vector3d * | r ) |
computes directed double area of triangle PQR Generated from function MR::dirDblArea<double>. Parameter p can not be null. It is a single object. Parameter q can not be null. It is a single object. Parameter r can not be null. It is a single object.
| MRC_API MR_Vector3f MR_dirDblArea_float_1 | ( | const MR_std_array_MR_Vector3f_3 * | t | ) |
computes directed double area of given triangle Generated from function MR::dirDblArea<float>. Parameter t can not be null. It is a single object.
| MRC_API MR_Vector3f MR_dirDblArea_float_2 | ( | const MR_Vector3f * | q, |
| const MR_Vector3f * | r ) |
computes directed double area of triangle 0QR Generated from function MR::dirDblArea<float>. Parameter q can not be null. It is a single object. Parameter r can not be null. It is a single object.
| MRC_API MR_Vector3f MR_dirDblArea_float_3 | ( | const MR_Vector3f * | p, |
| const MR_Vector3f * | q, | ||
| const MR_Vector3f * | r ) |
computes directed double area of triangle PQR Generated from function MR::dirDblArea<float>. Parameter p can not be null. It is a single object. Parameter q can not be null. It is a single object. Parameter r can not be null. It is a single object.
| MRC_API MR_std_optional_double * MR_findTriExitPos_double | ( | const MR_Vector3d * | b, |
| const MR_Vector3d * | c, | ||
| const MR_Vector3d * | grad ) |
Generated from function MR::findTriExitPos<double>. Parameter b can not be null. It is a single object. Parameter c can not be null. It is a single object. Parameter grad can not be null. It is a single object. Never returns null. Returns an instance allocated on the heap! Must call MR_std_optional_double_Destroy() to free it when you're done using it.
| MRC_API MR_std_optional_float * MR_findTriExitPos_float | ( | const MR_Vector3f * | b, |
| const MR_Vector3f * | c, | ||
| const MR_Vector3f * | grad ) |
Generated from function MR::findTriExitPos<float>. Parameter b can not be null. It is a single object. Parameter c can not be null. It is a single object. Parameter grad can not be null. It is a single object. Never returns null. Returns an instance allocated on the heap! Must call MR_std_optional_float_Destroy() to free it when you're done using it.
| MRC_API MR_std_optional_MR_Vector3d * MR_gradientInTri_double_4 | ( | const MR_Vector3d * | b, |
| const MR_Vector3d * | c, | ||
| double | vb, | ||
| double | vc ) |
Consider triangle 0BC, where a linear scalar field is defined in all 3 vertices: v(0) = 0, v(b) = vb, v(c) = vc; returns field gradient in the triangle or std::nullopt if the triangle is degenerate Generated from function MR::gradientInTri<double>. Parameter b can not be null. It is a single object. Parameter c can not be null. It is a single object. Never returns null. Returns an instance allocated on the heap! Must call MR_std_optional_MR_Vector3d_Destroy() to free it when you're done using it.
| MRC_API MR_std_optional_MR_Vector3d * MR_gradientInTri_double_6 | ( | const MR_Vector3d * | a, |
| const MR_Vector3d * | b, | ||
| const MR_Vector3d * | c, | ||
| double | va, | ||
| double | vb, | ||
| double | vc ) |
Consider triangle ABC, where a linear scalar field is defined in all 3 vertices: v(a) = va, v(b) = vb, v(c) = vc; returns field gradient in the triangle or std::nullopt if the triangle is degenerate Generated from function MR::gradientInTri<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. Never returns null. Returns an instance allocated on the heap! Must call MR_std_optional_MR_Vector3d_Destroy() to free it when you're done using it.
| MRC_API MR_std_optional_MR_Vector3f * MR_gradientInTri_float_4 | ( | const MR_Vector3f * | b, |
| const MR_Vector3f * | c, | ||
| float | vb, | ||
| float | vc ) |
Consider triangle 0BC, where a linear scalar field is defined in all 3 vertices: v(0) = 0, v(b) = vb, v(c) = vc; returns field gradient in the triangle or std::nullopt if the triangle is degenerate Generated from function MR::gradientInTri<float>. Parameter b can not be null. It is a single object. Parameter c can not be null. It is a single object. Never returns null. Returns an instance allocated on the heap! Must call MR_std_optional_MR_Vector3f_Destroy() to free it when you're done using it.
| MRC_API MR_std_optional_MR_Vector3f * MR_gradientInTri_float_6 | ( | const MR_Vector3f * | a, |
| const MR_Vector3f * | b, | ||
| const MR_Vector3f * | c, | ||
| float | va, | ||
| float | vb, | ||
| float | vc ) |
Consider triangle ABC, where a linear scalar field is defined in all 3 vertices: v(a) = va, v(b) = vb, v(c) = vc; returns field gradient in the triangle or std::nullopt if the triangle is degenerate Generated from function MR::gradientInTri<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. Never returns null. Returns an instance allocated on the heap! Must call MR_std_optional_MR_Vector3f_Destroy() to free it when you're done using it.
| MRC_API MR_std_array_MR_Vector3d_3 MR_makeDegenerate_double | ( | const MR_std_array_MR_Vector3d_3 * | t | ) |
make degenerate triangle (all 3 points on a line) that maximally resembles the input one and has the same centroid Generated from function MR::makeDegenerate<double>. Parameter t can not be null. It is a single object.
| MRC_API MR_std_array_MR_Vector3f_3 MR_makeDegenerate_float | ( | const MR_std_array_MR_Vector3f_3 * | t | ) |
make degenerate triangle (all 3 points on a line) that maximally resembles the input one and has the same centroid Generated from function MR::makeDegenerate<float>. Parameter t can not be null. It is a single object.
| MRC_API double MR_mincircleDiameterSq_double | ( | const MR_Vector3d * | a, |
| const MR_Vector3d * | b, | ||
| const MR_Vector3d * | c ) |
Computes the squared diameter of the smallest enclosed circle around ABC; For acute triangles it is the same as circumcircle, for obtuse triangles - the circle with the longest triangle's edge as a diameter Generated from function MR::mincircleDiameterSq<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.
| MRC_API float MR_mincircleDiameterSq_float | ( | const MR_Vector3f * | a, |
| const MR_Vector3f * | b, | ||
| const MR_Vector3f * | c ) |
Computes the squared diameter of the smallest enclosed circle around ABC; For acute triangles it is the same as circumcircle, for obtuse triangles - the circle with the longest triangle's edge as a diameter Generated from function MR::mincircleDiameterSq<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.
| MRC_API double MR_minTriangleAngle_double | ( | const MR_Vector3d * | a, |
| const MR_Vector3d * | b, | ||
| const MR_Vector3d * | c ) |
Generated from function MR::minTriangleAngle<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.
| MRC_API float MR_minTriangleAngle_float | ( | const MR_Vector3f * | a, |
| const MR_Vector3f * | b, | ||
| const MR_Vector3f * | c ) |
Generated from function MR::minTriangleAngle<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.
| MRC_API double MR_minTriangleAngleSin_double | ( | const MR_Vector3d * | a, |
| const MR_Vector3d * | b, | ||
| const MR_Vector3d * | c ) |
Computes sine of minimal angle in ABC triangle, which is equal to ratio of minimal edge length to circumcircle diameter Generated from function MR::minTriangleAngleSin<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.
| MRC_API float MR_minTriangleAngleSin_float | ( | const MR_Vector3f * | a, |
| const MR_Vector3f * | b, | ||
| const MR_Vector3f * | c ) |
Computes sine of minimal angle in ABC triangle, which is equal to ratio of minimal edge length to circumcircle diameter Generated from function MR::minTriangleAngleSin<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.
| MRC_API MR_Vector3d MR_normal_double_1 | ( | const MR_std_array_MR_Vector3d_3 * | t | ) |
computes unit normal of the given triangle Generated from function MR::normal<double>. Parameter t can not be null. It is a single object.
| MRC_API MR_Vector3d MR_normal_double_2 | ( | const MR_Vector3d * | q, |
| const MR_Vector3d * | r ) |
computes unit normal of triangle 0QR Generated from function MR::normal<double>. Parameter q can not be null. It is a single object. Parameter r can not be null. It is a single object.
| MRC_API MR_Vector3d MR_normal_double_3 | ( | const MR_Vector3d * | p, |
| const MR_Vector3d * | q, | ||
| const MR_Vector3d * | r ) |
computes unit normal of triangle PQR Generated from function MR::normal<double>. Parameter p can not be null. It is a single object. Parameter q can not be null. It is a single object. Parameter r can not be null. It is a single object.
| MRC_API MR_Vector3f MR_normal_float_1 | ( | const MR_std_array_MR_Vector3f_3 * | t | ) |
computes unit normal of the given triangle Generated from function MR::normal<float>. Parameter t can not be null. It is a single object.
| MRC_API MR_Vector3f MR_normal_float_2 | ( | const MR_Vector3f * | q, |
| const MR_Vector3f * | r ) |
computes unit normal of triangle 0QR Generated from function MR::normal<float>. Parameter q can not be null. It is a single object. Parameter r can not be null. It is a single object.
| MRC_API MR_Vector3f MR_normal_float_3 | ( | const MR_Vector3f * | p, |
| const MR_Vector3f * | q, | ||
| const MR_Vector3f * | r ) |
computes unit normal of triangle PQR Generated from function MR::normal<float>. Parameter p can not be null. It is a single object. Parameter q can not be null. It is a single object. Parameter r can not be null. It is a single object.
| MRC_API MR_std_optional_MR_Vector2d * MR_posFromTriEdgeLengths_double | ( | double | a, |
| double | b, | ||
| double | c ) |
given the lengths of 3 edges of triangle ABC, and assuming that point B has coordinates (0,0); point A - (0,c); computes the coordinates of point C (where c.x >= 0) or returns std::nullopt if input lengths are invalid for a triangle Generated from function MR::posFromTriEdgeLengths<double>. Never returns null. Returns an instance allocated on the heap! Must call MR_std_optional_MR_Vector2d_Destroy() to free it when you're done using it.
| MRC_API MR_std_optional_MR_Vector2f * MR_posFromTriEdgeLengths_float | ( | float | a, |
| float | b, | ||
| float | c ) |
given the lengths of 3 edges of triangle ABC, and assuming that point B has coordinates (0,0); point A - (0,c); computes the coordinates of point C (where c.x >= 0) or returns std::nullopt if input lengths are invalid for a triangle Generated from function MR::posFromTriEdgeLengths<float>. Never returns null. Returns an instance allocated on the heap! Must call MR_std_optional_MR_Vector2f_Destroy() to free it when you're done using it.
| MRC_API MR_std_optional_double * MR_quadrangleOtherDiagonal_double | ( | double | a, |
| double | b, | ||
| double | c, | ||
| double | a1, | ||
| double | b1 ) |
given two triangles on same plane sharing one side, with edge lengths in same order: (a, b, c) and (b1, a1, c); they can be considered as a quadrangle with a diagonal of length (c); and the lengths of consecutive edges (a, b, b1, a1); returns the length of the other quadrangle's diagonal if the quadrangle is valid and convex or std::nullopt otherwise Generated from function MR::quadrangleOtherDiagonal<double>. Never returns null. Returns an instance allocated on the heap! Must call MR_std_optional_double_Destroy() to free it when you're done using it.
| MRC_API MR_std_optional_float * MR_quadrangleOtherDiagonal_float | ( | float | a, |
| float | b, | ||
| float | c, | ||
| float | a1, | ||
| float | b1 ) |
given two triangles on same plane sharing one side, with edge lengths in same order: (a, b, c) and (b1, a1, c); they can be considered as a quadrangle with a diagonal of length (c); and the lengths of consecutive edges (a, b, b1, a1); returns the length of the other quadrangle's diagonal if the quadrangle is valid and convex or std::nullopt otherwise Generated from function MR::quadrangleOtherDiagonal<float>. Never returns null. Returns an instance allocated on the heap! Must call MR_std_optional_float_Destroy() to free it when you're done using it.
| MRC_API MR_std_optional_MR_Vector3d * MR_tangentPlaneNormalToSpheres_double | ( | const MR_Vector3d * | b, |
| const MR_Vector3d * | c, | ||
| double | rb, | ||
| double | rc ) |
Given 3 spheres: 1) sphere with center at b and radius rb 2) sphere with center at c and radius rc 3) sphere with center at the origin and zero radius (actually point); finds the plane touching all 3 spheres: dot(n,x) = 0, such that cross( n, b, c ) > 0 (to select one of two planes) returns n or std::nullopt if no touch plane exists Generated from function MR::tangentPlaneNormalToSpheres<double>. Parameter b can not be null. It is a single object. Parameter c can not be null. It is a single object. Never returns null. Returns an instance allocated on the heap! Must call MR_std_optional_MR_Vector3d_Destroy() to free it when you're done using it.
| MRC_API MR_std_optional_MR_Vector3f * MR_tangentPlaneNormalToSpheres_float | ( | const MR_Vector3f * | b, |
| const MR_Vector3f * | c, | ||
| float | rb, | ||
| float | rc ) |
Given 3 spheres: 1) sphere with center at b and radius rb 2) sphere with center at c and radius rc 3) sphere with center at the origin and zero radius (actually point); finds the plane touching all 3 spheres: dot(n,x) = 0, such that cross( n, b, c ) > 0 (to select one of two planes) returns n or std::nullopt if no touch plane exists Generated from function MR::tangentPlaneNormalToSpheres<float>. Parameter b can not be null. It is a single object. Parameter c can not be null. It is a single object. Never returns null. Returns an instance allocated on the heap! Must call MR_std_optional_MR_Vector3f_Destroy() to free it when you're done using it.
| MRC_API MR_std_optional_MR_Plane3d * MR_tangentPlaneToSpheres_double | ( | const MR_Vector3d * | a, |
| const MR_Vector3d * | b, | ||
| const MR_Vector3d * | c, | ||
| double | ra, | ||
| double | rb, | ||
| double | rc ) |
Given 3 spheres: 1) sphere with center at a and radius ra 2) sphere with center at b and radius rb 3) sphere with center at c and radius rc finds the plane touching all 3 spheres: dot(n,x) = d, such that cross( n, b-a, c-a ) > 0 (to select one of two planes) returns found plane or std::nullopt if no touch plane exists Generated from function MR::tangentPlaneToSpheres<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. Never returns null. Returns an instance allocated on the heap! Must call MR_std_optional_MR_Plane3d_Destroy() to free it when you're done using it.
| MRC_API MR_std_optional_MR_Plane3f * MR_tangentPlaneToSpheres_float | ( | const MR_Vector3f * | a, |
| const MR_Vector3f * | b, | ||
| const MR_Vector3f * | c, | ||
| float | ra, | ||
| float | rb, | ||
| float | rc ) |
Given 3 spheres: 1) sphere with center at a and radius ra 2) sphere with center at b and radius rb 3) sphere with center at c and radius rc finds the plane touching all 3 spheres: dot(n,x) = d, such that cross( n, b-a, c-a ) > 0 (to select one of two planes) returns found plane or std::nullopt if no touch plane exists Generated from function MR::tangentPlaneToSpheres<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. Never returns null. Returns an instance allocated on the heap! Must call MR_std_optional_MR_Plane3f_Destroy() to free it when you're done using it.
| MRC_API double MR_tanSqOfHalfAngle_double | ( | double | a, |
| double | b, | ||
| double | c ) |
given (a, b, c) - the side lengths of a triangle, returns the squared tangent of half angle opposite the side with length (a) see "An Algorithm for the Construction of Intrinsic Delaunay Triangulations with Applications to Digital Geometry Processing". https://page.math.tu-berlin.de/~bobenko/papers/InDel.pdf Generated from function MR::tanSqOfHalfAngle<double>.
| MRC_API float MR_tanSqOfHalfAngle_float | ( | float | a, |
| float | b, | ||
| float | c ) |
given (a, b, c) - the side lengths of a triangle, returns the squared tangent of half angle opposite the side with length (a) see "An Algorithm for the Construction of Intrinsic Delaunay Triangulations with Applications to Digital Geometry Processing". https://page.math.tu-berlin.de/~bobenko/papers/InDel.pdf Generated from function MR::tanSqOfHalfAngle<float>.
| MRC_API double MR_triangleAspectRatio_double | ( | const MR_Vector3d * | a, |
| const MR_Vector3d * | b, | ||
| const MR_Vector3d * | c ) |
Aspect ratio of a triangle is the ratio of the circum-radius to twice its in-radius Generated from function MR::triangleAspectRatio<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.
| MRC_API float MR_triangleAspectRatio_float | ( | const MR_Vector3f * | a, |
| const MR_Vector3f * | b, | ||
| const MR_Vector3f * | c ) |
Aspect ratio of a triangle is the ratio of the circum-radius to twice its in-radius Generated from function MR::triangleAspectRatio<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.
| MRC_API MR_std_array_MR_Vector3d_3 MR_triangleWithNormal_double | ( | const MR_std_array_MR_Vector3d_3 * | t, |
| const MR_Vector3d * | n ) |
project given triangle on a plane passing via its centroid and having unit normal (n); if after projection triangle normal turns out to be inversed, then collapses the triangle into degenerate line segment Generated from function MR::triangleWithNormal<double>. Parameter t can not be null. It is a single object. Parameter n can not be null. It is a single object.
| MRC_API MR_std_array_MR_Vector3f_3 MR_triangleWithNormal_float | ( | const MR_std_array_MR_Vector3f_3 * | t, |
| const MR_Vector3f * | n ) |
project given triangle on a plane passing via its centroid and having unit normal (n); if after projection triangle normal turns out to be inversed, then collapses the triangle into degenerate line segment Generated from function MR::triangleWithNormal<float>. Parameter t can not be null. It is a single object. Parameter n can not be null. It is a single object.