31 #if defined(Preimage2D_RECURSES)
32 #error Recursive header files inclusion detected in Preimage2D.h
33 #else // defined(Preimage2D_RECURSES)
35 #define Preimage2D_RECURSES
37 #if !defined Preimage2D_h
45 #include "DGtal/base/Common.h"
46 #include "DGtal/base/OpInSTLContainers.h"
47 #include "DGtal/shapes/fromPoints/Point2ShapePredicate.h"
48 #include "DGtal/io/Color.h"
92 template <
typename Shape>
415 template <
typename Iterator,
typename Predicate>
418 Iterator & anIterator,
419 const Iterator & anEndIterator);
435 template <
typename Shape>
445 #include "DGtal/geometry/tools/Preimage2D.ih"
450 #endif // !defined Preimage2D_h
452 #undef Preimage2D_RECURSES
453 #endif // else defined(Preimage2D_RECURSES)
bool isRightExteriorAtTheFront(const Point &aP, const Point &aQ)
std::string className() const
Aim: Computes the preimage of the 2D Euclidean shapes crossing a sequence of n straigth segments in O...
std::list< Point >::iterator ForwardIterator
std::list< Point >::const_iterator ConstForwardIterator
Preimage2D & operator=(const Preimage2D &other)
bool isRightExteriorAtTheBack(const Point &aP, const Point &aQ)
bool addFront(const Point &aP, const Point &aQ)
bool isLeftExteriorAtTheBack(const Point &aP, const Point &aQ)
functors::Point2ShapePredicate< Shape, false, true > PHullBackQHullFrontPred
functors::Point2ShapePredicate< Shape, true, false > BackQHullUpdatePred
functors::Point2ShapePredicate< Shape, true, true > QHullBackPHullFrontPred
bool operator==(const Preimage2D &other) const
Preimage2D(const Point &firstPoint, const Point &secondPoint, const Shape &aShape)
void getSeparatingStraightLine(double &alpha, double &beta, double &gamma) const
functors::Point2ShapePredicate< Shape, false, false > FrontQHullUpdatePred
DGtal is the top-level namespace which contains all DGtal functions and types.
functors::Point2ShapePredicate< Shape, false, false > BackPHullUpdatePred
const Container & pHull() const
bool operator!=(const Preimage2D &other) const
bool addBack(const Point &aP, const Point &aQ)
std::list< Point >::reverse_iterator BackwardIterator
const Container & qHull() const
std::ostream & operator<<(std::ostream &out, const ClosedIntegerHalfPlane< TSpace > &object)
void update(const Point &aPoint, Container &aContainer, Iterator &anIterator, const Iterator &anEndIterator)
bool isLeftExteriorAtTheFront(const Point &aP, const Point &aQ)
functors::Point2ShapePredicate< Shape, true, false > FrontPHullUpdatePred
void selfDisplay(std::ostream &out) const
functors::Point2ShapePredicate< Shape, false, true > QHullFrontPHullBackPred
functors::Point2ShapePredicate< Shape, true, true > PHullFrontQHullBackPred
Preimage2D(const Preimage2D &other)
std::list< Point > Container
bool canBeAddedAtTheFront(const Point &aP, const Point &aQ)
const Shape & shape() const
std::list< Point >::const_reverse_iterator ConstBackwardIterator
bool canBeAddedAtTheBack(const Point &aP, const Point &aQ)