Aim: a geometric kernel to compute the Delaunay triangulation of a range of floating points with integer-only arithmetic. Floating points are approximated with rational points with fixed precision (a given number of bits), which are cast in a higher dimensional space and lifted onto the "norm" paraboloid, as classically done when computing a Delaunay triangulation from a convex hull. All remaining computations are exact, as long as there is no overflow.
More...
|
| typedef ConvexHullCommonKernel< dim+1, TCoordinateInteger, TInternalInteger > | Base |
| typedef DelaunayRationalKernel< dim, TCoordinateInteger, TInternalInteger > | Self |
| typedef DelaunayRationalKernel< dim-1, TCoordinateInteger, TInternalInteger > | LowerSelf |
| typedef DGtal::int64_t | CoordinateInteger |
| typedef DGtal::int64_t | InternalInteger |
| typedef CoordinateInteger | CoordinateScalar |
| typedef InternalInteger | InternalScalar |
| typedef DGtal::PointVector< dim, CoordinateInteger > | CoordinatePoint |
| typedef DGtal::PointVector< dim, CoordinateInteger > | CoordinateVector |
| typedef DGtal::PointVector< dim, InternalInteger > | InternalPoint |
| typedef DGtal::PointVector< dim, InternalInteger > | InternalVector |
| typedef std::size_t | Size |
| typedef Size | Index |
| typedef std::vector< Index > | IndexRange |
| typedef std::array< Index, dim > | CombinatorialPlaneSimplex |
| typedef ConvexHullCommonKernel< dim, DGtal::int64_t, DGtal::int64_t > | Self |
| typedef ConvexHullCommonKernel< dim-1, DGtal::int64_t, DGtal::int64_t > | LowerSelf |
| typedef IntegerConverter< dim, CoordinateInteger > | Outer |
| | Converter to outer coordinate integers or lattice points / vector.
|
| typedef IntegerConverter< dim, InternalInteger > | Inner |
| | Converter to inner internal integers or lattice points / vector.
|
|
| | DelaunayRationalKernel (double aPrecision=1024.) |
| bool | hasInfiniteFacets () const |
| bool | isHalfSpaceFacetInfinite (const HalfSpace &hs) const |
| template<typename InputPoint> |
| void | makeInput (std::vector< CoordinatePoint > &processed_points, IndexRange &input2comp, IndexRange &comp2input, const std::vector< InputPoint > &input_points, bool remove_duplicates) |
| template<typename OutputPoint> |
| void | convertPointTo (const CoordinatePoint &p, OutputPoint &out_p) const |
| HalfSpace | compute (const std::vector< CoordinatePoint > &vpoints, const CombinatorialPlaneSimplex &simplex, Index idx_below) |
| HalfSpace | compute (const std::vector< CoordinatePoint > &vpoints, const CombinatorialPlaneSimplex &simplex) |
| CoordinateVector | normal (const HalfSpace &H) const |
| CoordinateScalar | intercept (const HalfSpace &H) const |
| InternalScalar | dot (const HalfSpace &H1, const HalfSpace &H2) const |
| bool | equal (const HalfSpace &H1, const HalfSpace &H2) const |
| InternalScalar | height (const HalfSpace &H, const CoordinatePoint &p) const |
| InternalScalar | volume (const HalfSpace &H, const CoordinatePoint &p) const |
| bool | above (const HalfSpace &H, const CoordinatePoint &p) const |
| bool | aboveOrOn (const HalfSpace &H, const CoordinatePoint &p) const |
| bool | on (const HalfSpace &H, const CoordinatePoint &p) const |
| | BOOST_CONCEPT_ASSERT ((concepts::CInteger< DGtal::int64_t >)) |
| | ConvexHullCommonKernel ()=default |
| | Default constructor.
|
| HalfSpace | compute (const std::vector< CoordinatePoint > &vpoints, const CombinatorialPlaneSimplex &simplex, Index idx_below) |
| CoordinateVector | normal (const HalfSpace &H) const |
| CoordinateScalar | intercept (const HalfSpace &H) const |
| InternalScalar | dot (const HalfSpace &H1, const HalfSpace &H2) const |
| bool | equal (const HalfSpace &H1, const HalfSpace &H2) const |
| InternalScalar | height (const HalfSpace &H, const CoordinatePoint &p) const |
| InternalScalar | volume (const HalfSpace &H, const CoordinatePoint &p) const |
| bool | above (const HalfSpace &H, const CoordinatePoint &p) const |
| bool | aboveOrOn (const HalfSpace &H, const CoordinatePoint &p) const |
| bool | on (const HalfSpace &H, const CoordinatePoint &p) const |
template<
Dimension dim, typename TCoordinateInteger = DGtal::int64_t, typename TInternalInteger = DGtal::int64_t>
struct DGtal::DelaunayRationalKernel< dim, TCoordinateInteger, TInternalInteger >
Aim: a geometric kernel to compute the Delaunay triangulation of a range of floating points with integer-only arithmetic. Floating points are approximated with rational points with fixed precision (a given number of bits), which are cast in a higher dimensional space and lifted onto the "norm" paraboloid, as classically done when computing a Delaunay triangulation from a convex hull. All remaining computations are exact, as long as there is no overflow.
Description of template class 'DelaunayRationalKernel'
Each floating point input coordinate x is converted to an integer through the following formula (Integer) round( x * precision ), where precision is the floating point value given at instanciation of the kernel.
Each output floating point coordinate is built from integer coordinates a through the formula ( (double) a ) / precision, where precision is the floating point value given at instanciation of the kernel.
- See also
- QuickHull algorithm in arbitrary dimension for convex hull and Delaunay cell complex computation
- Template Parameters
-
| dim | the dimension of the space of processed points. |
| TCoordinateInteger | the integer type that represents coordinates of lattice points, a model of concepts::CInteger. |
| TInternalInteger | the integer type that is used for internal computations of above/below plane tests, a model of concepts::CInteger. Must be at least as precise as TCoordinateInteger. |
Definition at line 828 of file QuickHullKernels.h.