31#if defined(ConvexityHelper_RECURSES)
32#error Recursive header files inclusion detected in ConvexityHelper.h
35#define ConvexityHelper_RECURSES
37#if !defined ConvexityHelper_h
39#define ConvexityHelper_h
46#include "DGtal/base/Common.h"
47#include "DGtal/kernel/CInteger.h"
48#include "DGtal/kernel/SpaceND.h"
49#include "DGtal/geometry/tools/QuickHull.h"
50#include "DGtal/geometry/volumes/BoundedLatticePolytope.h"
51#include "DGtal/geometry/volumes/BoundedRationalPolytope.h"
52#include "DGtal/geometry/volumes/ConvexCellComplex.h"
53#include "DGtal/shapes/PolygonalSurface.h"
69 template <
typename TIntegerCoordinate,
bool safe >
71 typedef TIntegerCoordinate
Type;
105#ifdef WITH_BIGINTEGER
122#ifdef WITH_BIGINTEGER
131 template <
bool safe >
220 bool remove_duplicates =
true,
221 bool make_minkowski_summable =
false );
238 bool remove_duplicates =
true );
262 template <
typename TSurfaceMesh >
267 bool remove_duplicates =
true );
290 bool remove_duplicates =
true );
311 bool remove_duplicates =
true );
336 bool remove_duplicates =
true );
411 bool remove_duplicates =
true );
445 bool remove_duplicates =
true,
446 bool make_minkowski_summable =
false );
474 template <
typename TSurfaceMesh >
478 const std::vector< RealPoint >& input_points,
479 double precision = 1024.0,
480 bool remove_duplicates =
true );
505 const std::vector< RealPoint >& input_points,
506 double precision = 1024.0,
507 bool remove_duplicates =
true );
532 const std::vector< RealPoint >& input_points,
533 double precision = 1024.0,
534 bool remove_duplicates =
true );
568 const std::vector< RealPoint >& input_points,
569 double precision = 1024.0,
570 bool remove_duplicates =
true );
594 template <
typename QHull >
598 std::vector< IndexRange >& cell_vertices,
599 std::map< typename QHull::Ridge, Index >& r2f,
600 std::vector< IndexRange >& face_vertices );
611#include "ConvexityHelper.ih"
618#undef ConvexityHelper_RECURSES
Aim: Represents an nD lattice polytope, i.e. a convex polyhedron bounded with vertices with integer c...
Aim: Represents an nD rational polytope, i.e. a convex polyhedron bounded by vertices with rational c...
Aim: Represents a polygon mesh, i.e. a 2-dimensional combinatorial surface whose faces are (topologic...
DGtal is the top-level namespace which contains all DGtal functions and types.
boost::int64_t int64_t
signed 94-bit integer.
DGtal::uint32_t Dimension
boost::int32_t int32_t
signed 32-bit integer.
mpz_class BigInteger
Multi-precision integer with GMP implementation.
Aim: represents a d-dimensional complex in a d-dimensional space with the following properties and re...
Aim: a geometric kernel to compute the convex hull of digital points with integer-only arithmetic.
Aim: a geometric kernel to compute the convex hull of floating points with integer-only arithmetic....
Aim: Provides a set of functions to facilitate the computation of convex hulls and polytopes,...
static PointRange computeConvexHullVertices(const PointRange &input_points, bool remove_duplicates=true)
static bool computeDelaunayCellComplex(ConvexCellComplex< Point > &cell_complex, const PointRange &input_points, bool remove_duplicates=true)
static void computeFacetAndRidgeVertices(const QHull &hull, std::vector< IndexRange > &cell_vertices, std::map< typename QHull::Ridge, Index > &r2f, std::vector< IndexRange > &face_vertices)
TInternalInteger InternalInteger
static bool computeDelaunayCellComplex(ConvexCellComplex< RealPoint > &cell_complex, const std::vector< RealPoint > &input_points, double precision=1024.0, bool remove_duplicates=true)
static bool computeConvexHullBoundary(PolygonalSurface< RealPoint > &polysurf, const std::vector< RealPoint > &input_points, double precision=1024.0, bool remove_duplicates=true)
static LatticePolytope computeSimplex(const PointRange &input_points, bool remove_duplicates=true)
DelaunayIntegralKernel< dim, Integer, InternalInteger > LatticeDelaunayKernel
static PointRange computeDegeneratedConvexHullVertices(PointRange &input_points)
BOOST_STATIC_ASSERT(dim > 1)
BOOST_CONCEPT_ASSERT((concepts::CInteger< TInteger >))
Space::RealPoint RealPoint
Space::RealVector RealVector
static const Dimension dimension
BoundedRationalPolytope< Space > RationalPolytope
ConvexHullRationalKernel< dim, Integer, InternalInteger > RealConvexHullKernel
static RationalPolytope computeRationalPolytope(const std::vector< RealPoint > &input_points, Integer denominator, bool remove_duplicates=true, bool make_minkowski_summable=false)
static bool computeConvexHullCellComplex(ConvexCellComplex< Point > &cell_complex, const PointRange &input_points, bool remove_duplicates=true)
static LatticePolytope computeDegeneratedLatticePolytope(PointRange &input_points)
static bool computeConvexHullBoundary(PolygonalSurface< Point > &polysurf, const PointRange &input_points, bool remove_duplicates=true)
static bool computeConvexHullBoundary(TSurfaceMesh &mesh, const std::vector< RealPoint > &input_points, double precision=1024.0, bool remove_duplicates=true)
ConvexHullIntegralKernel< dim, Integer, InternalInteger > LatticeConvexHullKernel
std::vector< Index > IndexRange
BOOST_CONCEPT_ASSERT((concepts::CInteger< TInternalInteger >))
static bool computeConvexHullBoundary(TSurfaceMesh &mesh, const PointRange &input_points, bool remove_duplicates=true)
BoundedLatticePolytope< Space > LatticePolytope
DelaunayRationalKernel< dim, Integer, InternalInteger > RealDelaunayKernel
static LatticePolytope computeLatticePolytope(const PointRange &input_points, bool remove_duplicates=true, bool make_minkowski_summable=false)
std::vector< Point > PointRange
static bool computeConvexHullCellComplex(ConvexCellComplex< RealPoint > &cell_complex, const std::vector< RealPoint > &input_points, double precision=1024.0, bool remove_duplicates=true)
SpaceND< dim, Integer > Space
Aim: a geometric kernel to compute the Delaunay triangulation of digital points with integer-only ari...
Aim: a geometric kernel to compute the Delaunay triangulation of a range of floating points with inte...
Aim: Concept checking for Integer Numbers. More precisely, this concept is a refinement of both CEucl...