#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 | |