32#if defined(LatticePolytope2D_RECURSES)
33#error Recursive header files inclusion detected in LatticePolytope2D.h
36#define LatticePolytope2D_RECURSES
38#if !defined LatticePolytope2D_h
40#define LatticePolytope2D_h
48#include "DGtal/base/Common.h"
49#include "DGtal/kernel/CSpace.h"
50#include "DGtal/kernel/domains/HyperRectDomain.h"
51#include "DGtal/arithmetic/IntegerComputer.h"
52#include "DGtal/arithmetic/ClosedIntegerHalfPlane.h"
80 template <
typename TSpace,
81 typename TSequence = std::list< typename TSpace::Point > >
100 typedef typename ClockwiseVertexSequence::value_type
value_type;
101 typedef typename ClockwiseVertexSequence::reference
reference;
103 typedef typename ClockwiseVertexSequence::iterator
iterator;
106 typedef typename ClockwiseVertexSequence::size_type
size_type;
109 typedef typename ClockwiseVertexSequence::value_type
Value;
110 typedef typename ClockwiseVertexSequence::iterator
Iterator;
112 typedef typename std::size_t
Size;
400 template <
typename DigitalSet>
456 std::vector<Point> & outPts,
488 template <
typename OutputIterator>
490 const Point & pointRefC1,
491 const Point & pointRefC3,
555 template <
typename TSpace,
typename TSequence>
565#include "DGtal/arithmetic/LatticePolytope2D.ih"
572#undef LatticePolytope2D_RECURSES
Aim: A wrapper class around a STL associative container for storing sets of digital points within som...
Aim: This class gathers several types and methods to make computation with integers.
SpaceND< 2, Integer >::Vector Vector2I
SpaceND< 2, Integer >::Point Point2I
Aim: Represents a 2D polytope, i.e. a convex polygon, in the two-dimensional digital plane....
MyIntegerComputer & ic() const
BOOST_STATIC_ASSERT((concepts::ConceptUtils::SameType< Point2I, Point >::value))
ClockwiseVertexSequence myVertices
void push_front(const Point &K)
void swap(LatticePolytope2D &other)
ClockwiseVertexSequence::reference reference
ClosedIntegerHalfPlane< Space > HalfSpace
ClockwiseVertexSequence::value_type value_type
MyIntegerComputer::Point3I Point3I
Iterator insertBefore(const Iterator &pos, const Point &K)
Integer numberBoundaryPoints() const
std::vector< Point > _outPts
TSequence ClockwiseVertexSequence
ClockwiseVertexSequence::const_iterator ConstIterator
ClockwiseVertexSequence::size_type size_type
void pushFront(const Point &K)
Domain boundingBoxDomain() const
Integer numberInteriorPoints() const
void push_back(const Point &K)
Self & operator=(const Self &other)
BOOST_STATIC_ASSERT((TSpace::dimension==2))
BOOST_CONCEPT_ASSERT((concepts::CSpace< TSpace >))
std::vector< Point > _inPts
Iterator erase(Iterator it)
BOOST_CONCEPT_ASSERT((boost::Sequence< TSequence >))
const Integer & twiceArea() const
std::string className() const
MyIntegerComputer::Point2I Point2I
std::pair< Size, Size > SizeCouple
void getAllPointsOfHull(std::vector< Point > &inPts, std::vector< Point > &outPts, const Vector &BV, const HalfSpace &hs2, const HalfSpace &hs3) const
LatticePolytope2D< TSpace, TSequence > Self
IntegerComputer< Integer > MyIntegerComputer
ClockwiseVertexSequence::difference_type difference_type
MyIntegerComputer::Vector2I Vector2I
ClockwiseVertexSequence::value_type Value
BOOST_STATIC_ASSERT((concepts::ConceptUtils::SameType< Vector2I, Vector >::value))
ClockwiseVertexSequence::const_reference const_reference
LatticePolytope2D(const Self &other)
HyperRectDomain< Space > Domain
ClockwiseVertexSequence::const_iterator const_iterator
void selfDisplay(std::ostream &out) const
ClockwiseVertexSequence::const_pointer const_pointer
MyIntegerComputer::Vector3I Vector3I
HalfSpace halfSpace(const Point &A, const Point &B, const Point &inP) const
bool getFirstPointsOfHull(Vector &v, Point &inPt, Point &outPt, const HalfSpace &hs1, const HalfSpace &hs2) const
ConstIterator end() const
HalfSpace halfSpace(ConstIterator it) const
bool cut(const HalfSpace &hs)
ClockwiseVertexSequence::iterator iterator
ClockwiseVertexSequence::iterator Iterator
BOOST_STATIC_ASSERT((concepts::ConceptUtils::SameType< Value, Point >::value))
Point3I centroid(const Integer &twice_area) const
ConstIterator begin() const
void pushBack(const Point &K)
void getIncludedDigitalPoints(DigitalSet &aSet) const
OutputIterator computeConvexHullBorder(OutputIterator itOut, const Point &pointRefC1, const Point &pointRefC3, const HalfSpace &hs1, const HalfSpace &hs2, const HalfSpace &hs3) const
SizeCouple findCut(Iterator &it_next_is_outside, Iterator &it_next_is_inside, const HalfSpace &hs)
TInteger Integer
Arithmetic ring induced by (+,-,*) and Integer numbers.
DGtal is the top-level namespace which contains all DGtal functions and types.
std::ostream & operator<<(std::ostream &out, const ClosedIntegerHalfPlane< TSpace > &object)
Aim: A half-space specified by a vector N and a constant c. The half-space is the set .
Aim: Defines the concept describing a digital space, ie a cartesian product of integer lines.
Go to http://www.sgi.com/tech/stl/Sequence.html.