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