MeshLib C++ Docs
Loading...
Searching...
No Matches
MRTriMath.h File Reference
#include "MRVector2.h"
#include "MRVector3.h"
#include "MRPch/MRBindingMacros.h"
#include <algorithm>
#include <cassert>
#include <cmath>
#include <limits>
#include <optional>

Go to the source code of this file.

Namespaces

namespace  MR
 only for bindings generation

Functions

template<typename T>
MR::circumcircleDiameterSq (const Vector3< T > &a, const Vector3< T > &b, const Vector3< T > &c)
 MR::MR_BIND_TEMPLATE (float circumcircleDiameterSq(const Vector3f &a, const Vector3f &b, const Vector3f &c))
 MR::MR_BIND_TEMPLATE (double circumcircleDiameterSq(const Vector3d &a, const Vector3d &b, const Vector3d &c))
template<typename T>
MR::circumcircleDiameter (const Vector3< T > &a, const Vector3< T > &b, const Vector3< T > &c)
template<typename T>
MR::mincircleDiameterSq (const Vector3< T > &a, const Vector3< T > &b, const Vector3< T > &c)
template<typename T>
Vector3< T > MR::circumcircleCenter (const Vector3< T > &a, const Vector3< T > &b)
 Computes the center of the the triangle's 0AB circumcircle.
 MR::MR_BIND_TEMPLATE (Vector3f circumcircleCenter(const Vector3f &a, const Vector3f &b))
 MR::MR_BIND_TEMPLATE (Vector3d circumcircleCenter(const Vector3d &a, const Vector3d &b))
template<typename T>
Vector3< T > MR::circumcircleCenter (const Vector3< T > &a, const Vector3< T > &b, const Vector3< T > &c)
 Computes the center of the the triangle's ABC circumcircle.
 MR::MR_BIND_TEMPLATE (Vector3f circumcircleCenter(const Vector3f &a, const Vector3f &b, const Vector3f &c))
 MR::MR_BIND_TEMPLATE (Vector3d circumcircleCenter(const Vector3d &a, const Vector3d &b, const Vector3d &c))
template<typename T>
bool MR::circumballCenters (const Vector3< T > &a, const Vector3< T > &b, const Vector3< T > &c, T radius, Vector3< T > &centerPos, Vector3< T > &centerNeg)
 ball's center from the negative side of triangle
 MR::MR_BIND_TEMPLATE (bool circumballCenters(const Vector3f &a, const Vector3f &b, const Vector3f &c, float radius, Vector3f &centerPos, Vector3f &centerNeg))
 MR::MR_BIND_TEMPLATE (bool circumballCenters(const Vector3d &a, const Vector3d &b, const Vector3d &c, double radius, Vector3d &centerPos, Vector3d &centerNeg))
template<typename T>
MR::minTriangleAngleSin (const Vector3< T > &a, const Vector3< T > &b, const Vector3< T > &c)
template<typename T>
MR::minTriangleAngle (const Vector3< T > &a, const Vector3< T > &b, const Vector3< T > &c)
template<typename T>
MR::triangleAspectRatio (const Vector3< T > &a, const Vector3< T > &b, const Vector3< T > &c)
template<typename T>
Vector3< T > MR::dirDblArea (const Triangle3< T > &t)
 computes directed double area of given triangle
 MR::MR_BIND_TEMPLATE (Vector3f dirDblArea(const Triangle3f &t))
 MR::MR_BIND_TEMPLATE (Vector3d dirDblArea(const Triangle3d &t))
template<typename T>
Vector3< T > MR::dirDblArea (const Vector3< T > &q, const Vector3< T > &r)
 computes directed double area of triangle 0QR
template<typename T>
Vector3< T > MR::dirDblArea (const Vector3< T > &p, const Vector3< T > &q, const Vector3< T > &r)
 computes directed double area of triangle PQR
template<typename T>
Vector3< T > MR::normal (const Vector3< T > &q, const Vector3< T > &r)
 computes unit normal of triangle 0QR
template<typename T>
Vector3< T > MR::normal (const Vector3< T > &p, const Vector3< T > &q, const Vector3< T > &r)
 computes unit normal of triangle PQR
template<typename T>
Vector3< T > MR::normal (const Triangle3< T > &t)
 computes unit normal of the given triangle
template<typename T>
MR::dblAreaSq (const Vector3< T > &p, const Vector3< T > &q, const Vector3< T > &r)
 computes the square of double area of given triangle
template<typename T>
MR::dblArea (const Triangle3< T > &t)
 computes twice the area of given triangle
 MR::MR_BIND_TEMPLATE (float dblArea(const Triangle3f &t))
 MR::MR_BIND_TEMPLATE (double dblArea(const Triangle3d &t))
template<typename T>
MR::dblArea (const Vector3< T > &p, const Vector3< T > &q, const Vector3< T > &r)
 computes twice the area of given triangle
template<typename T>
MR::area (const Vector3< T > &p, const Vector3< T > &q, const Vector3< T > &r)
 computes twice the area of given triangle
template<typename T>
MR::dblArea (const Vector2< T > &p, const Vector2< T > &q, const Vector2< T > &r)
 computes twice the area of given triangle
 MR::MR_BIND_TEMPLATE (float dblArea(const Vector2f &a, const Vector2f &b, const Vector2f &c))
 MR::MR_BIND_TEMPLATE (double dblArea(const Vector2d &a, const Vector2d &b, const Vector2d &c))
template<typename T>
MR::area (const Vector2< T > &p, const Vector2< T > &q, const Vector2< T > &r)
 computes twice the area of given triangle
template<typename T>
Triangle3< T > MR::makeDegenerate (const Triangle3< T > &t)
 make degenerate triangle (all 3 points on a line) that maximally resembles the input one and has the same centroid
 MR::MR_BIND_TEMPLATE (Triangle3f makeDegenerate(const Triangle3f &t))
 MR::MR_BIND_TEMPLATE (Triangle3d makeDegenerate(const Triangle3d &t))
template<typename T>
Triangle3< T > MR::triangleWithNormal (const Triangle3< T > &t, const Vector3< T > &n)
 MR::MR_BIND_TEMPLATE (Triangle3f triangleWithNormal(const Triangle3f &t, const Vector3f &n))
 MR::MR_BIND_TEMPLATE (Triangle3d triangleWithNormal(const Triangle3d &t, const Vector3d &n))
template<typename T>
MR::dihedralAngleSin (const Vector3< T > &leftNorm, const Vector3< T > &rightNorm, const Vector3< T > &edgeVec)
 MR::MR_BIND_TEMPLATE (float dihedralAngleSin(const Vector3f &, const Vector3f &, const Vector3f &))
 MR::MR_BIND_TEMPLATE (double dihedralAngleSin(const Vector3d &, const Vector3d &, const Vector3d &))
template<typename T>
MR::dihedralAngleCos (const Vector3< T > &leftNorm, const Vector3< T > &rightNorm)
 MR::MR_BIND_TEMPLATE (float dihedralAngleCos(const Vector3f &, const Vector3f &))
 MR::MR_BIND_TEMPLATE (double dihedralAngleCos(const Vector3d &, const Vector3d &))
template<typename T>
MR::dihedralAngle (const Vector3< T > &leftNorm, const Vector3< T > &rightNorm, const Vector3< T > &edgeVec)
template<typename T>
std::optional< Vector2< T > > MR::posFromTriEdgeLengths (T a, T b, T c)
 MR::MR_BIND_TEMPLATE (std::optional< Vector2f > posFromTriEdgeLengths(float, float, float))
 MR::MR_BIND_TEMPLATE (std::optional< Vector2d > posFromTriEdgeLengths(double, double, double))
template<typename T>
std::optional< T > MR::quadrangleOtherDiagonal (T a, T b, T c, T a1, T b1)
 MR::MR_BIND_TEMPLATE (std::optional< float > quadrangleOtherDiagonal(float, float, float, float, float))
 MR::MR_BIND_TEMPLATE (std::optional< double > quadrangleOtherDiagonal(double, double, double, double, double))
template<typename T>
MR::tanSqOfHalfAngle (T a, T b, T c)
 MR::MR_BIND_TEMPLATE (float tanSqOfHalfAngle(float, float, float))
 MR::MR_BIND_TEMPLATE (double tanSqOfHalfAngle(double, double, double))
template<typename T>
MR::cotan (const Triangle3< T > &t, T absMaxVal=std::numeric_limits< T >::max())
 MR::MR_BIND_TEMPLATE (float cotan(const Triangle3f &, float))
 MR::MR_BIND_TEMPLATE (double cotan(const Triangle3d &, double))
template<typename T>
MR::cotan (T a, T b, T c)
template<typename T>
std::optional< Vector3< T > > MR::gradientInTri (const Vector3< T > &b, const Vector3< T > &c, T vb, T vc)
 MR::MR_BIND_TEMPLATE (std::optional< Vector3f > gradientInTri(const Vector3f &, const Vector3f &, float, float))
 MR::MR_BIND_TEMPLATE (std::optional< Vector3d > gradientInTri(const Vector3d &, const Vector3d &, double, double))
template<typename T>
std::optional< Vector3< T > > MR::gradientInTri (const Vector3< T > &a, const Vector3< T > &b, const Vector3< T > &c, T va, T vb, T vc)
 MR::MR_BIND_TEMPLATE (std::optional< Vector3f > gradientInTri(const Vector3f &, const Vector3f &, const Vector3f &, float, float, float))
 MR::MR_BIND_TEMPLATE (std::optional< Vector3d > gradientInTri(const Vector3d &, const Vector3d &, const Vector3d &, double, double, double))
template<typename T>
std::optional< T > MR::findTriExitPos (const Vector3< T > &b, const Vector3< T > &c, const Vector3< T > &grad)
 MR::MR_BIND_TEMPLATE (std::optional< float > findTriExitPos(const Vector3f &, const Vector3f &, const Vector3f &))
 MR::MR_BIND_TEMPLATE (std::optional< double > findTriExitPos(const Vector3d &, const Vector3d &, const Vector3d &))
template<typename T>
std::optional< Vector3< T > > MR::tangentPlaneNormalToSpheres (const Vector3< T > &b, const Vector3< T > &c, T rb, T rc)
template<typename T>
std::optional< Plane3< T > > MR::tangentPlaneToSpheres (const Vector3< T > &a, const Vector3< T > &b, const Vector3< T > &c, T ra, T rb, T rc)
 MR::MR_BIND_TEMPLATE (std::optional< Plane3f > tangentPlaneToSpheres(const Vector3f &, const Vector3f &, const Vector3f &, float, float, float))
 MR::MR_BIND_TEMPLATE (std::optional< Plane3d > tangentPlaneToSpheres(const Vector3d &, const Vector3d &, const Vector3d &, double, double, double))