MeshLib C++ Docs
Loading...
Searching...
No Matches
MRPrecisePredicates3Poly.h File Reference
#include "MRPrecisePredicates3.h"
#include "MRInt64Mul128.h"
#include "MRMacros.h"
#include "MRSparsePolynomial.h"
#include <algorithm>
#include <array>
#include <cassert>
#include <limits>
#include <type_traits>
#include <vector>

Go to the source code of this file.

Classes

struct  MR::detail::PointDegree
 a point with the degree of its perturbation: its coordinates z, y, x get eps^d, eps^(3*d), eps^(9*d) More...
class  MR::detail::PerturbationStagesOf< N, Bounded >
 segmentIntersectionTriPlaneOrder: it reaches the polynomial path with all three largest ids in the plane More...

Namespaces

namespace  MR
 Only strictly necessary for the bindings (to make MR::MeshIntersectionResult a complete type).
namespace  MR::detail
 for internal use: namespace detail is not bound to other languages

Typedefs

using MR::detail::PerturbationStages = PerturbationStagesOf<cMaxPerturbedPoints, false>
 the stages of at most cMaxPerturbedPoints points, whose degrees the caller makes fit in int64
template<std::int64_t M>
using MR::detail::VolumePoly = SparsePolynomial<FastInt128, std::int64_t, M>

Functions

MR_FORCE_INLINE FastInt128 MR::detail::orient3dVolume (const Vector3i &a, const Vector3i &b, const Vector3i &c, const Vector3i &d)
template<int N = cMaxPerturbedPoints, bool Bounded = false>
MR_FORCE_INLINE int MR::detail::getPointDegrees (const PreciseVertCoords *vs, const std::int64_t *radices, int n, PointDegree *res, std::int64_t *places=nullptr)
template<std::int64_t M>
VolumePoly< M > MR::detail::orient3dPoly (const PointDegree &a, const PointDegree &b, const PointDegree &c, const PointDegree &d)
 the volume of tetrahedron abcd (see orient3dVolume) of the perturbed points as a polynomial of eps, without the terms of degrees above M

Variables

constexpr int MR::detail::cMaxPerturbedPoints = 16
 the largest number of points of one predicate that getPointDegrees and PerturbationStages take by default
constexpr std::int64_t MR::detail::cMaxPolyDAll = std::numeric_limits<std::int64_t>::max()
 the largest degree that no term exceeds: a polynomial with it keeps all its terms
constexpr std::int64_t MR::detail::cMaxPolyDTriTri = 15'943'959
constexpr std::int64_t MR::detail::cMaxPolyDTriPlane = 430'486'893
 segmentIntersectionOrder