31#if defined(ArithmeticalDSS_RECURSES)
32#error Recursive header files inclusion detected in ArithmeticalDSS.h
35#define ArithmeticalDSS_RECURSES
37#if !defined ArithmeticalDSS_h
39#define ArithmeticalDSS_h
44#include "DGtal/base/Common.h"
45#include "DGtal/base/Exceptions.h"
47#include "DGtal/geometry/curves/ArithmeticalDSL.h"
48#include "DGtal/geometry/curves/ArithmeticalDSSCheck.h"
49#include "DGtal/geometry/curves/ArithmeticalDSSFactory.h"
50#include "DGtal/geometry/curves/ArithmeticalDSSConvexHull.h"
51#include "DGtal/arithmetic/SternBrocot.h"
52#include "DGtal/math/linalg/SimpleMatrix.h"
92 template <
typename TCoordinate,
93 typename TInteger = TCoordinate,
94 unsigned short adjacency = 8>
97 friend class ArithmeticalDSSFactory<TCoordinate, TInteger, adjacency>;
260 const bool& areOnTheUpperLine =
true);
297 template <
typename Iterator>
529 bool isInDSL(
const DSL& aDSL, std::vector<Point> &Ulp, std::vector<Point> &Llp,
Point& outP)
const;
732 const Point& aBezout,
733 const Point& aFirstAtOppositeSide,
734 Point& aLastAtOppositeSide,
735 Point& aFirstAtRemovalSide,
736 const Point& aLastAtRemovalSide);
792 template <
typename TCoordinate,
typename TInteger,
unsigned short adjacency>
828 template <
typename TCoordinate,
typename TInteger = TCoordinate>
876 const bool& isOnTheUpperLine =
true);
914 template <
typename Iterator>
967 template <
typename TCoordinate,
typename TInteger = TCoordinate>
1015 const bool& isOnTheUpperLine =
true);
1053 template <
typename Iterator>
1075#include "DGtal/geometry/curves/ArithmeticalDSS.ih"
1082#undef ArithmeticalDSS_RECURSES
Aim: This class represents a naive (resp. standard) digital straight line (DSL), ie....
std::pair< Vector, Vector > Steps
Aim: This class represents a naive (resp. standard) digital straight segment (DSS),...
std::string className() const
ArithmeticalDSS & operator=(const ArithmeticalDSS &aOther)
BOOST_CONCEPT_ASSERT((concepts::CInteger< Integer >))
ArithmeticalDSS negate() const
unsigned short int isExtendableBack(const Point &aNewPoint) const
Integer orthogonalPosition(const Point &aPoint) const
bool isInDSL(const DSL &aDSL) const
bool before(const Point &aP1, const Point &aP2) const
ArithmeticalDSS(const Point &aPoint)
static const unsigned short foregroundAdjacency
bool beforeOrEqual(const Point &aP1, const Point &aP2) const
void retractUpdateParameters(const Vector &aNewDirection)
bool isInDSL(const DSL &aDSL, std::vector< Point > &Ulp, std::vector< Point > &Llp, Point &outP) const
ArithmeticalDSS computeUnion(const ArithmeticalDSS &aOther) const
bool retractUpdateLeaningPoints(const Vector &aDirection, const Point &aFirst, const Point &aLast, const Point &aBezout, const Point &aFirstAtOppositeSide, Point &aLastAtOppositeSide, Point &aFirstAtRemovalSide, const Point &aLastAtRemovalSide)
BOOST_CONCEPT_ASSERT((concepts::CInteger< Coordinate >))
ArithmeticalDSS(const DSL &aDSL, const Point &aF, const Point &aL)
PointD project(const Point &aM, const Point &aP) const
bool equalsTo(const ArithmeticalDSS &aOther) const
Position position(const Point &aPoint) const
unsigned short int isExtendableFront(const Point &aNewPoint) const
ArithmeticalDSS(const ArithmeticalDSS &aDSS, const Point &aF, const Point &aL)
bool operator()(const Point &aPoint) const
bool operator==(const ArithmeticalDSS &aOther) const
Integer remainder(const Point &aPoint) const
void selfDisplay(std::ostream &out) const
ArithmeticalDSS(const Point &aF, const Point &aL, const bool &areOnTheUpperLine=true)
ArithmeticalDSS(const DSL &aDSL, const Point &aF, const Point &aL, const Point &aUf, const Point &aUl, const Point &aLf, const Point &aLl)
bool extendBack(const Point &aNewPoint)
ConstIterator begin() const
ArithmeticalDSS(const Iterator &aItb, const Iterator &aIte)
DSL::ConstIterator ConstIterator
bool operator!=(const ArithmeticalDSS &aOther) const
DSL::ConstReverseIterator ConstReverseIterator
bool isInDSS(const Point &aPoint) const
DGtal::PointVector< 2, double > PointD
ArithmeticalDSS(const Coordinate &aA, const Coordinate &aB, const Integer &aLowerBound, const Integer &aUpperBound, const Point &aF, const Point &aL, const Point &aUf, const Point &aUl, const Point &aLf, const Point &aLl, const Steps &aSteps, const Vector &aShift)
ArithmeticalDSS(const ArithmeticalDSS &aOther)
ConstReverseIterator rbegin() const
bool isInDSL(const Point &aPoint) const
ArithmeticalDSL< Coordinate, Integer, adjacency > DSL
bool extendFront(const Point &aNewPoint)
ArithmeticalDSS(const Coordinate &aA, const Coordinate &aB, const Point &aF, const Point &aL, const Point &aUf, const Point &aUl, const Point &aLf, const Point &aLl)
ConstReverseIterator rend() const
PointD project(const Point &aM, double aR) const
ConstIterator end() const
Aim: This class represents a standard digital straight segment (DSS), ie. the sequence of simply 8-co...
NaiveDSS8(const Point &aF, const Point &aL, const bool &isOnTheUpperLine=true)
NaiveDSS8(const Coordinate &aA, const Coordinate &aB, const Point &aF, const Point &aL, const Point &aUf, const Point &aUl, const Point &aLf, const Point &aLl)
NaiveDSS8(const NaiveDSS8 &aDSS, const Point &aF, const Point &aL)
NaiveDSS8(const NaiveDSS8 &aOther)
Super::Coordinate Coordinate
ArithmeticalDSS< TCoordinate, TInteger, 8 > Super
NaiveDSS8 & operator=(const NaiveDSS8 &aOther)
NaiveDSS8(const Iterator &aItb, const Iterator &aIte)
NaiveDSS8(const DSL &aDSL, const Point &aF, const Point &aL)
This class adapts any bidirectional iterator so that operator++ calls operator-- and vice versa.
Aim: This class represents a standard digital straight segment (DSS), ie. the sequence of simply 4-co...
StandardDSS4(const Iterator &aItb, const Iterator &aIte)
StandardDSS4(const Point &aF, const Point &aL, const bool &isOnTheUpperLine=true)
StandardDSS4(const StandardDSS4 &aDSS, const Point &aF, const Point &aL)
Super::Coordinate Coordinate
StandardDSS4(const DSL &aDSL, const Point &aF, const Point &aL)
ArithmeticalDSS< TCoordinate, TInteger, 4 > Super
StandardDSS4(const StandardDSS4 &aOther)
StandardDSS4(const Coordinate &aA, const Coordinate &aB, const Point &aF, const Point &aL, const Point &aUf, const Point &aUl, const Point &aLf, const Point &aLl)
StandardDSS4 & operator=(const StandardDSS4 &aOther)
DGtal is the top-level namespace which contains all DGtal functions and types.
std::ostream & operator<<(std::ostream &out, const ClosedIntegerHalfPlane< TSpace > &object)
Aim: Concept checking for Integer Numbers. More precisely, this concept is a refinement of both CEucl...