DGtal  1.1.0
BoundedLatticePolytope.h
1 
17 #pragma once
18 
31 #if defined(BoundedLatticePolytope_RECURSES)
32 #error Recursive header files inclusion detected in BoundedLatticePolytope.h
33 #else // defined(BoundedLatticePolytope_RECURSES)
34 
35 #define BoundedLatticePolytope_RECURSES
36 
37 #if !defined BoundedLatticePolytope_h
38 
39 #define BoundedLatticePolytope_h
40 
42 // Inclusions
43 #include <iostream>
44 #include <list>
45 #include <vector>
46 #include <string>
47 #include "DGtal/base/Common.h"
48 #include "DGtal/kernel/CSpace.h"
49 #include "DGtal/kernel/domains/HyperRectDomain.h"
50 #include "DGtal/arithmetic/IntegerComputer.h"
51 #include "DGtal/arithmetic/ClosedIntegerHalfPlane.h"
53 
54 namespace DGtal
55 {
56 
58  // template class BoundedLatticePolytope
73  template < typename TSpace >
75  {
77 
78  public:
80  typedef TSpace Space;
81  typedef typename Space::Integer Integer;
82  typedef typename Space::Point Point;
83  typedef typename Space::Vector Vector;
84  typedef std::vector<Vector> InequalityMatrix;
85  typedef std::vector<Integer> InequalityVector;
88 #ifdef WITH_BIGINTEGER
90 #else
91  typedef DGtal::int64_t BigInteger;
92 #endif
94 
99  struct UnitSegment {
101  UnitSegment( Dimension d ) : k( d ) {}
102  };
103 
111  };
112 
120  };
121 
127  struct UnitCell {
128  std::vector<Dimension> dims;
129  UnitCell( std::initializer_list<Dimension> l )
130  : dims( l.begin(), l.end() ) {}
131 
138  friend std::ostream&
139  operator<< ( std::ostream & out,
140  const UnitCell & object )
141  {
142  out << "{";
143  for ( Dimension i = 0; i < object.dims.size(); ++i ) out << object.dims[ i ];
144  out << "}";
145  return out;
146  }
147  };
148 
155  std::vector<Dimension> dims;
156  RightStrictUnitCell( std::initializer_list<Dimension> l )
157  : dims( l.begin(), l.end() ) {}
158 
165  friend std::ostream&
166  operator<< ( std::ostream & out,
167  const RightStrictUnitCell & object )
168  {
169  out << "{";
170  for ( Dimension i = 0; i < object.dims.size(); ++i ) out << object.dims[ i ];
171  out << "}";
172  return out;
173  }
174  };
175 
182  std::vector<Dimension> dims;
183  LeftStrictUnitCell( std::initializer_list<Dimension> l )
184  : dims( l.begin(), l.end() ) {}
185 
192  friend std::ostream&
193  operator<< ( std::ostream & out,
194  const LeftStrictUnitCell & object )
195  {
196  out << "{";
197  for ( Dimension i = 0; i < object.dims.size(); ++i ) out << object.dims[ i ];
198  out << "}";
199  return out;
200  }
201  };
202 
205 
210 
215 
220  BoundedLatticePolytope ( const Self & other ) = default;
221 
222 
229  BoundedLatticePolytope( std::initializer_list<Point> l );
230 
239  template <typename PointIterator>
240  BoundedLatticePolytope( PointIterator itB, PointIterator itE );
241 
255  template <typename HalfSpaceIterator>
257  HalfSpaceIterator itB, HalfSpaceIterator itE,
258  bool valid_edge_constraints = false );
259 
273  template <typename HalfSpaceIterator>
274  void init( const Domain& domain,
275  HalfSpaceIterator itB, HalfSpaceIterator itE,
276  bool valid_edge_constraints = false );
277 
278 
291  template <typename PointIterator>
292  bool init( PointIterator itB, PointIterator itE );
293 
299  Self & operator= ( const Self & other ) = default;
300 
302  void clear();
303 
305 
306  // ----------------------- Accessor services ------------------------------
307  public:
310 
312  const Domain& getDomain() const;
313 
315  unsigned int nbHalfSpaces() const;
316 
322  const Vector& getA( unsigned int i ) const;
323 
329  Integer getB( unsigned int i ) const;
330 
336  bool isLarge( unsigned int i ) const;
337 
339  const InequalityMatrix& getA() const;
340 
342  const InequalityVector& getB() const;
346  const std::vector<bool>& getI() const;
347 
352  bool canBeSummed() const;
353 
355 
356  // ----------------------- Check point services ------------------------------
357  public:
358 
361 
366  bool isInside( const Point& p ) const;
367 
374  bool isDomainPointInside( const Point& p ) const;
375 
380  bool isInterior( const Point& p ) const;
381 
386  bool isBoundary( const Point& p ) const;
387 
389 
390  // ----------------------- Modification services ------------------------------
391  public:
392 
395 
399 
412  unsigned int cut( Dimension k, bool pos, Integer b, bool large = true );
413 
431  unsigned int cut( const Vector& a, Integer b, bool large = true,
432  bool valid_edge_constraint = false );
433 
450  unsigned int cut( const HalfSpace & hs, bool large = true,
451  bool valid_edge_constraint = false );
452 
457  void swap( BoundedLatticePolytope & other );
458 
459 
466 
474 
482 
490 
498 
506 
515 
516  // ----------------------- Enumeration services ------------------------------
517  public:
518 
521 
529  Integer count() const;
530 
542 
554 
565  Integer countWithin( Point low, Point hi ) const;
566 
584 
593  void getPoints( std::vector<Point>& pts ) const;
594 
603  void getInteriorPoints( std::vector<Point>& pts ) const;
604 
613  void getBoundaryPoints( std::vector<Point>& pts ) const;
614 
625  template <typename PointSet>
626  void insertPoints( PointSet& pts_set ) const;
627 
629 
630 
631  // ----------------------- Interface --------------------------------------
632  public:
635 
640  void selfDisplay ( std::ostream & out ) const;
641 
648  bool isValid() const;
649 
653  std::string className() const;
654 
656 
657  // ------------------------- Protected Datas ------------------------------
658  protected:
666  std::vector<bool> I;
669 
670  // ------------------------- Private Datas --------------------------------
671  private:
672 
673 
674  // ------------------------- Internals ------------------------------------
675  private:
683 
690 
697 
698  }; // end of class BoundedLatticePolytope
699 
700  namespace detail {
709  template <DGtal::Dimension N, typename TInteger>
711  typedef TInteger Integer;
713  typedef typename Space::Point Point;
714  typedef typename Space::Vector Vector;
717 
730  static void
731  addEdgeConstraint( Polytope& , unsigned int , unsigned int ,
732  const std::vector<Point>& )
733  {
734  trace.error() << "[BoundedLatticePolytopeHelper::addEdgeConstraint]"
735  << " this method is only implemented in 3D." << std::endl;
736  }
737 
740  static
741  Vector crossProduct( const Vector& , const Vector& )
742  {
743  trace.error() << "[BoundedLatticePolytopeHelper::crossProduct]"
744  << " this method is only implemented in 3D." << std::endl;
745  return Vector::zero;
746  }
747  };
748 
756  template <typename TInteger>
757  struct BoundedLatticePolytopeSpecializer<3, TInteger> {
758  typedef TInteger Integer;
760  typedef typename Space::Point Point;
761  typedef typename Space::Vector Vector;
764 
774  static void
775  addEdgeConstraint( Polytope& P, unsigned int i, unsigned int j,
776  const std::vector<Point>& pts )
777  {
778  Vector ab = pts[ i ] - pts[ j ];
779  for ( int s = 0; s < 2; s++ )
780  for ( Dimension k = 0; k < dimension; ++k )
781  {
782  Vector n = ab.crossProduct( Point::base( k, (s == 0) ? 1 : -1 ) );
783  Integer b = n.dot( pts[ i ] );
784  int nb_in = 0;
785  for ( auto p : pts ) {
786  Integer v = n.dot( p );
787  if ( v < b ) nb_in++;
788  }
789  if ( nb_in == pts.size() - 2 ) {
790  P.cut( n, b, true, true );
791  }
792  }
793  }
798  static
799  Vector crossProduct( const Vector& v1, const Vector& v2 )
800  {
801  return v1.crossProduct( v2 );
802  }
803  };
804  }
805 
808 
815  template <typename TSpace>
816  std::ostream&
817  operator<< ( std::ostream & out,
818  const BoundedLatticePolytope<TSpace> & object );
819 
820 
826  template <typename TSpace>
829  const BoundedLatticePolytope<TSpace> & P );
830 
831 
839  template <typename TSpace>
843 
851  template <typename TSpace>
855 
863  template <typename TSpace>
867 
875  template <typename TSpace>
879 
887  template <typename TSpace>
891 
899  template <typename TSpace>
903 
905 
906 } // namespace DGtal
907 
908 
910 // Includes inline functions.
911 #include "BoundedLatticePolytope.ih"
912 
913 // //
915 
916 #endif // !defined BoundedLatticePolytope_h
917 
918 #undef BoundedLatticePolytope_RECURSES
919 #endif // else defined(BoundedLatticePolytope_RECURSES)
DGtal::BigInteger
mpz_class BigInteger
Multi-precision integer with GMP implementation.
Definition: BasicTypes.h:79
DGtal::BoundedLatticePolytope::UnitCell::UnitCell
UnitCell(std::initializer_list< Dimension > l)
Definition: BoundedLatticePolytope.h:129
DGtal::BoundedLatticePolytope::operator+=
Self & operator+=(LeftStrictUnitCell c)
DGtal::BoundedLatticePolytope::Point
Space::Point Point
Definition: BoundedLatticePolytope.h:82
DGtal::detail::BoundedLatticePolytopeSpecializer< 3, TInteger >::Polytope
BoundedLatticePolytope< Space > Polytope
Definition: BoundedLatticePolytope.h:762
DGtal::PointVector< dim, Integer >::zero
static Self zero
Static const for zero PointVector.
Definition: PointVector.h:1590
DGtal::detail::BoundedLatticePolytopeSpecializer< 3, TInteger >::addEdgeConstraint
static void addEdgeConstraint(Polytope &P, unsigned int i, unsigned int j, const std::vector< Point > &pts)
Definition: BoundedLatticePolytope.h:775
DGtal::BoundedLatticePolytope::countBoundary
Integer countBoundary() const
DGtal::BoundedLatticePolytope::insertPoints
void insertPoints(PointSet &pts_set) const
DGtal::detail::BoundedLatticePolytopeSpecializer::addEdgeConstraint
static void addEdgeConstraint(Polytope &, unsigned int, unsigned int, const std::vector< Point > &)
Definition: BoundedLatticePolytope.h:731
DGtal::BoundedLatticePolytope::countInterior
Integer countInterior() const
DGtal::HyperRectDomain< Space >
DGtal::detail::BoundedLatticePolytopeSpecializer::Space
SpaceND< N, Integer > Space
Definition: BoundedLatticePolytope.h:712
DGtal::BoundedLatticePolytope::Self
BoundedLatticePolytope< TSpace > Self
Definition: BoundedLatticePolytope.h:79
DGtal::concepts::CSpace
Aim: Defines the concept describing a digital space, ie a cartesian product of integer lines.
Definition: CSpace.h:106
DGtal::BoundedLatticePolytope::isDomainPointInside
bool isDomainPointInside(const Point &p) const
DGtal::detail::BoundedLatticePolytopeSpecializer::dimension
static const Dimension dimension
Definition: BoundedLatticePolytope.h:716
DGtal::BoundedLatticePolytope::canBeSummed
bool canBeSummed() const
max
int max(int a, int b)
Definition: testArithmeticalDSS.cpp:1108
DGtal::BoundedLatticePolytope::HalfSpace
ClosedIntegerHalfPlane< Space > HalfSpace
Definition: BoundedLatticePolytope.h:87
DGtal::BoundedLatticePolytope::myValidEdgeConstraints
bool myValidEdgeConstraints
Indicates if Minkowski sums with segments will be valid.
Definition: BoundedLatticePolytope.h:668
DGtal::Trace::error
std::ostream & error()
DGtal::BoundedLatticePolytope::D
Domain D
Tight bounded box.
Definition: BoundedLatticePolytope.h:664
DGtal::BoundedLatticePolytope::getPoints
void getPoints(std::vector< Point > &pts) const
DGtal::BoundedLatticePolytope::countUpTo
Integer countUpTo(Integer max) const
DGtal::BoundedLatticePolytope::I
std::vector< bool > I
Are inequalities large ?
Definition: BoundedLatticePolytope.h:666
DGtal::BoundedLatticePolytope::UnitSegment
Definition: BoundedLatticePolytope.h:99
DGtal::BoundedLatticePolytope::cut
unsigned int cut(const HalfSpace &hs, bool large=true, bool valid_edge_constraint=false)
DGtal::BoundedLatticePolytope::getB
Integer getB(unsigned int i) const
DGtal::BoundedLatticePolytope::getA
const Vector & getA(unsigned int i) const
DGtal::BoundedLatticePolytope::interiorPolytope
BoundedLatticePolytope interiorPolytope() const
DGtal::BoundedLatticePolytope::RightStrictUnitCell::dims
std::vector< Dimension > dims
Definition: BoundedLatticePolytope.h:155
DGtal::trace
Trace trace
Definition: Common.h:150
DGtal::Dimension
DGtal::uint32_t Dimension
Definition: Common.h:133
DGtal::detail::BoundedLatticePolytopeSpecializer::Integer
TInteger Integer
Definition: BoundedLatticePolytope.h:711
DGtal::BoundedLatticePolytope::LeftStrictUnitCell::operator<<
friend std::ostream & operator<<(std::ostream &out, const LeftStrictUnitCell &object)
Definition: BoundedLatticePolytope.h:193
DGtal::BoundedLatticePolytope::BoundedLatticePolytope
BoundedLatticePolytope(PointIterator itB, PointIterator itE)
DGtal::BoundedLatticePolytope::RightStrictUnitCell
Definition: BoundedLatticePolytope.h:154
DGtal::BoundedLatticePolytope::LeftStrictUnitCell
Definition: BoundedLatticePolytope.h:181
DGtal::detail::BoundedLatticePolytopeSpecializer
Aim: It is just a helper class for BoundedLatticePolytope to add dimension specific static methods.
Definition: BoundedLatticePolytope.h:710
DGtal::BoundedLatticePolytope::cut
unsigned int cut(Dimension k, bool pos, Integer b, bool large=true)
DGtal::BoundedLatticePolytope::clear
void clear()
Clears the polytope.
DGtal::BoundedLatticePolytope::getBoundaryPoints
void getBoundaryPoints(std::vector< Point > &pts) const
DGtal::BoundedLatticePolytope::operator+=
Self & operator+=(UnitCell c)
DGtal::detail::BoundedLatticePolytopeSpecializer< 3, TInteger >::Vector
Space::Vector Vector
Definition: BoundedLatticePolytope.h:761
DGtal::BoundedLatticePolytope::internalInitFromSegment3D
bool internalInitFromSegment3D(Point a, Point b)
DGtal::BoundedLatticePolytope::BoundedLatticePolytope
BoundedLatticePolytope(const Self &other)=default
DGtal::BoundedLatticePolytope::Vector
Space::Vector Vector
Definition: BoundedLatticePolytope.h:83
DGtal::BoundedLatticePolytope::init
void init(const Domain &domain, HalfSpaceIterator itB, HalfSpaceIterator itE, bool valid_edge_constraints=false)
DGtal::BoundedLatticePolytope::selfDisplay
void selfDisplay(std::ostream &out) const
DGtal::PointVector< dim, Integer >::base
static Self base(Dimension k, Component val=1)
DGtal::SpaceND
Definition: SpaceND.h:96
DGtal::detail::BoundedLatticePolytopeSpecializer< 3, TInteger >::Space
SpaceND< 3, Integer > Space
Definition: BoundedLatticePolytope.h:759
DGtal::PointVector::crossProduct
auto crossProduct(const PointVector< dim, OtherComponent, OtherStorage > &v) const -> decltype(DGtal::crossProduct(*this, v))
Cross product with a PointVector.
DGtal::BoundedLatticePolytope::countWithin
Integer countWithin(Point low, Point hi) const
DGtal::BoundedLatticePolytope::Domain
HyperRectDomain< Space > Domain
Definition: BoundedLatticePolytope.h:86
DGtal::BoundedLatticePolytope::LeftStrictUnitSegment::k
Dimension k
Definition: BoundedLatticePolytope.h:118
DGtal::BoundedLatticePolytope::isInside
bool isInside(const Point &p) const
DGtal::BoundedLatticePolytope::operator+=
Self & operator+=(LeftStrictUnitSegment s)
DGtal::BoundedLatticePolytope::BoundedLatticePolytope
BoundedLatticePolytope(std::initializer_list< Point > l)
DGtal::BoundedLatticePolytope::RightStrictUnitSegment::k
Dimension k
Definition: BoundedLatticePolytope.h:109
DGtal::operator+
Circulator< TIterator > operator+(typename IteratorCirculatorTraits< TIterator >::Difference d, Circulator< TIterator > &object)
Definition: Circulator.h:453
DGtal::BoundedLatticePolytope::BigInteger
DGtal::BigInteger BigInteger
Definition: BoundedLatticePolytope.h:89
DGtal::BoundedLatticePolytope::B
InequalityVector B
The vector B in the polytope representation .
Definition: BoundedLatticePolytope.h:662
DGtal::BoundedLatticePolytope::InequalityVector
std::vector< Integer > InequalityVector
Definition: BoundedLatticePolytope.h:85
DGtal::BoundedLatticePolytope::operator*=
Self & operator*=(Integer t)
DGtal
DGtal is the top-level namespace which contains all DGtal functions and types.
Definition: ClosedIntegerHalfPlane.h:49
DGtal::BoundedLatticePolytope::UnitSegment::k
Dimension k
Definition: BoundedLatticePolytope.h:100
DGtal::BoundedLatticePolytope::dimension
static const Dimension dimension
Definition: BoundedLatticePolytope.h:93
DGtal::BoundedLatticePolytope::BoundedLatticePolytope
BoundedLatticePolytope(const Domain &domain, HalfSpaceIterator itB, HalfSpaceIterator itE, bool valid_edge_constraints=false)
DGtal::BoundedLatticePolytope::LeftStrictUnitSegment::LeftStrictUnitSegment
LeftStrictUnitSegment(Dimension d)
Definition: BoundedLatticePolytope.h:119
DGtal::BoundedLatticePolytope::LeftStrictUnitSegment
Definition: BoundedLatticePolytope.h:117
DGtal::BoundedLatticePolytope::internalInitFromTriangle3D
bool internalInitFromTriangle3D(Point a, Point b, Point c)
DGtal::detail::BoundedLatticePolytopeSpecializer::crossProduct
static Vector crossProduct(const Vector &, const Vector &)
Definition: BoundedLatticePolytope.h:741
DGtal::SpaceND::dimension
static const Dimension dimension
static constants to store the dimension.
Definition: SpaceND.h:132
DGtal::BoundedLatticePolytope::~BoundedLatticePolytope
~BoundedLatticePolytope()=default
DGtal::detail::BoundedLatticePolytopeSpecializer< 3, TInteger >::Point
Space::Point Point
Definition: BoundedLatticePolytope.h:760
DGtal::BoundedLatticePolytope::getInteriorPoints
void getInteriorPoints(std::vector< Point > &pts) const
DGtal::BoundedLatticePolytope::operator+=
Self & operator+=(RightStrictUnitSegment s)
DGtal::detail::BoundedLatticePolytopeSpecializer::Point
Space::Point Point
Definition: BoundedLatticePolytope.h:713
DGtal::operator<<
std::ostream & operator<<(std::ostream &out, const ClosedIntegerHalfPlane< TSpace > &object)
DGtal::BoundedLatticePolytope::operator=
Self & operator=(const Self &other)=default
DGtal::BoundedLatticePolytope::BOOST_CONCEPT_ASSERT
BOOST_CONCEPT_ASSERT((concepts::CSpace< TSpace >))
DGtal::BoundedLatticePolytope::count
Integer count() const
DGtal::ClosedIntegerHalfPlane
Aim: A half-space specified by a vector N and a constant c. The half-space is the set .
Definition: ClosedIntegerHalfPlane.h:64
DGtal::BoundedLatticePolytope::swap
void swap(BoundedLatticePolytope &other)
DGtal::BoundedLatticePolytope::RightStrictUnitCell::operator<<
friend std::ostream & operator<<(std::ostream &out, const RightStrictUnitCell &object)
Definition: BoundedLatticePolytope.h:166
DGtal::BoundedLatticePolytope::nbHalfSpaces
unsigned int nbHalfSpaces() const
DGtal::BoundedLatticePolytope::isValid
bool isValid() const
DGtal::BoundedLatticePolytope::isInterior
bool isInterior(const Point &p) const
DGtal::detail::BoundedLatticePolytopeSpecializer< 3, TInteger >::crossProduct
static Vector crossProduct(const Vector &v1, const Vector &v2)
Definition: BoundedLatticePolytope.h:799
DGtal::detail::BoundedLatticePolytopeSpecializer::Polytope
BoundedLatticePolytope< Space > Polytope
Definition: BoundedLatticePolytope.h:715
DGtal::BoundedLatticePolytope::isLarge
bool isLarge(unsigned int i) const
domain
Domain domain
Definition: testProjection.cpp:88
DGtal::PointVector< dim, Integer >
DGtal::BoundedLatticePolytope::operator+=
Self & operator+=(RightStrictUnitCell c)
DGtal::detail::BoundedLatticePolytopeSpecializer::Vector
Space::Vector Vector
Definition: BoundedLatticePolytope.h:714
DGtal::BoundedLatticePolytope::Space
TSpace Space
Definition: BoundedLatticePolytope.h:80
DGtal::BoundedLatticePolytope::getI
const std::vector< bool > & getI() const
DGtal::BoundedLatticePolytope::getDomain
const Domain & getDomain() const
DGtal::operator*
KForm< Calculus, order, duality > operator*(const typename Calculus::Scalar &scalar, const KForm< Calculus, order, duality > &form)
DGtal::BoundedLatticePolytope::UnitSegment::UnitSegment
UnitSegment(Dimension d)
Definition: BoundedLatticePolytope.h:101
DGtal::BoundedLatticePolytope
Aim: Represents an nD lattice polytope, i.e. a convex polyhedron bounded with vertices with integer c...
Definition: BoundedLatticePolytope.h:75
DGtal::BoundedLatticePolytope::UnitCell
Definition: BoundedLatticePolytope.h:127
DGtal::int64_t
boost::int64_t int64_t
signed 94-bit integer.
Definition: BasicTypes.h:74
DGtal::BoundedLatticePolytope::UnitCell::dims
std::vector< Dimension > dims
Definition: BoundedLatticePolytope.h:128
DGtal::BoundedLatticePolytope::getA
const InequalityMatrix & getA() const
DGtal::BoundedLatticePolytope::A
InequalityMatrix A
The matrix A in the polytope representation .
Definition: BoundedLatticePolytope.h:660
DGtal::BoundedLatticePolytope::init
bool init(PointIterator itB, PointIterator itE)
DGtal::BoundedLatticePolytope::internalInitFromSegment2D
bool internalInitFromSegment2D(Point a, Point b)
DGtal::BoundedLatticePolytope::BoundedLatticePolytope
BoundedLatticePolytope()=default
DGtal::BoundedLatticePolytope::className
std::string className() const
DGtal::BoundedLatticePolytope::isBoundary
bool isBoundary(const Point &p) const
DGtal::BoundedLatticePolytope::operator+=
Self & operator+=(UnitSegment s)
DGtal::detail::BoundedLatticePolytopeSpecializer< 3, TInteger >::Integer
TInteger Integer
Definition: BoundedLatticePolytope.h:758
DGtal::BoundedLatticePolytope::RightStrictUnitCell::RightStrictUnitCell
RightStrictUnitCell(std::initializer_list< Dimension > l)
Definition: BoundedLatticePolytope.h:156
DGtal::BoundedLatticePolytope::InequalityMatrix
std::vector< Vector > InequalityMatrix
Definition: BoundedLatticePolytope.h:84
DGtal::BoundedLatticePolytope::getB
const InequalityVector & getB() const
DGtal::BoundedLatticePolytope::LeftStrictUnitCell::LeftStrictUnitCell
LeftStrictUnitCell(std::initializer_list< Dimension > l)
Definition: BoundedLatticePolytope.h:183
DGtal::BoundedLatticePolytope::UnitCell::operator<<
friend std::ostream & operator<<(std::ostream &out, const UnitCell &object)
Definition: BoundedLatticePolytope.h:139
DGtal::BoundedLatticePolytope::RightStrictUnitSegment
Definition: BoundedLatticePolytope.h:108
DGtal::SpaceND::Integer
TInteger Integer
Arithmetic ring induced by (+,-,*) and Integer numbers.
Definition: SpaceND.h:102
DGtal::BoundedLatticePolytope::Integer
Space::Integer Integer
Definition: BoundedLatticePolytope.h:81
DGtal::BoundedLatticePolytope::cut
unsigned int cut(const Vector &a, Integer b, bool large=true, bool valid_edge_constraint=false)
DGtal::BoundedLatticePolytope::RightStrictUnitSegment::RightStrictUnitSegment
RightStrictUnitSegment(Dimension d)
Definition: BoundedLatticePolytope.h:110
DGtal::BoundedLatticePolytope::LeftStrictUnitCell::dims
std::vector< Dimension > dims
Definition: BoundedLatticePolytope.h:182