31 #if defined(DigitalConvexity_RECURSES)
32 #error Recursive header files inclusion detected in DigitalConvexity.h
33 #else // defined(DigitalConvexity_RECURSES)
35 #define DigitalConvexity_RECURSES
37 #if !defined DigitalConvexity_h
39 #define DigitalConvexity_h
47 #include <unordered_set>
48 #include "DGtal/base/Common.h"
49 #include "DGtal/base/Clone.h"
50 #include "DGtal/topology/CCellularGridSpaceND.h"
51 #include "DGtal/topology/KhalimskySpaceND.h"
52 #include "DGtal/geometry/volumes/BoundedLatticePolytope.h"
53 #include "DGtal/geometry/volumes/BoundedRationalPolytope.h"
54 #include "DGtal/geometry/volumes/CellGeometry.h"
74 template <
typename TKSpace >
155 template <
typename Po
intIterator>
183 template <
typename Po
intIterator>
186 PointIterator itB, PointIterator itE );
210 template <
typename Po
intIterator>
242 template <
typename Po
intIterator>
265 template <
typename Po
intIterator>
267 void displaySimplex( std::ostream& out, PointIterator itB, PointIterator itE );
277 void displaySimplex( std::ostream& out, std::initializer_list<Point> l );
322 template <
typename Po
intIterator>
406 bool safe =
false )
const;
617 template <
typename TKSpace>
629 #include "DigitalConvexity.ih"
634 #endif // !defined DigitalConvexity_h
636 #undef DigitalConvexity_RECURSES
637 #endif // else defined(DigitalConvexity_RECURSES)
Aim: This class encapsulates its parameter class to indicate that the given parameter is required to ...
DigitalConvexity< TKSpace > Self
static LatticePolytope makeSimplex(PointIterator itB, PointIterator itE)
KSpace myK
The cellular grid space where computations are done.
SimplexType
The possible types for simplices.
static void displaySimplex(std::ostream &out, PointIterator itB, PointIterator itE)
static SimplexType simplexType(PointIterator itB, PointIterator itE)
void selfDisplay(std::ostream &out) const
Aim: This concept describes a cellular grid space in nD. In these spaces obtained by cartesian produc...
std::vector< Point > PointRange
bool is0Convex(const PointRange &X, bool safe=false) const
DGtal::uint32_t Dimension
static RationalPolytope makeRationalSimplex(Integer d, PointIterator itB, PointIterator itE)
std::ostream & operator<<(std::ostream &out, const ATu0v1< TKSpace, TLinearAlgebra > &object)
static PointRange insidePoints(const LatticePolytope &polytope)
std::unordered_set< Point > PointSet
static const constexpr Dimension dimension
DGtal::CellGeometry< KSpace > CellGeometry
@ DEGENERATED
When the points of the simplex are not in general position.
DGtal is the top-level namespace which contains all DGtal functions and types.
Self & operator=(const Self &other)=default
bool isKSubconvex(const LatticePolytope &P, const CellGeometry &C, const Dimension k) const
@ UNITARY
When its edges form a unit parallelotope (det = +/- 1)
DGtal::BoundedRationalPolytope< Space > RationalPolytope
DGtal::BoundedLatticePolytope< Space > LatticePolytope
bool isKConvex(const LatticePolytope &P, const Dimension k) const
bool isFullySubconvex(const LatticePolytope &P, const CellGeometry &C) const
LatticePolytope makePolytope(const PointRange &X, bool safe=false) const
static const Dimension dimension
Aim: Represents an nD rational polytope, i.e. a convex polyhedron bounded by vertices with rational c...
static bool isSimplexFullDimensional(PointIterator itB, PointIterator itE)
@ INVALID
When there are not the right number of vertices.
~DigitalConvexity()=default
CellGeometry makeCellCover(PointIterator itB, PointIterator itE, Dimension i=0, Dimension k=KSpace::dimension) const
PointRange U(Dimension i, const PointRange &X) const
TInteger Integer
Arithmetic ring induced by (+,-,*) and Integer numbers.
Aim: Represents an nD lattice polytope, i.e. a convex polyhedron bounded with vertices with integer c...
DGtal::BoundedLatticePolytope< Space > Polytope
static PointRange interiorPoints(const LatticePolytope &polytope)
Aim: A helper class to build polytopes from digital sets and to check digital k-convexity and full co...
DigitalConvexity()=default
bool isFullyConvex(const PointRange &X, bool convex0=false, bool safe=false) const
const KSpace & space() const
BOOST_CONCEPT_ASSERT((concepts::CCellularGridSpaceND< TKSpace >))