31 #if defined(ArithmeticalDSS_RECURSES) 32 #error Recursive header files inclusion detected in ArithmeticalDSS.h 33 #else // defined(ArithmeticalDSS_RECURSES) 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>
191 const Integer& aLowerBound,
const Integer& aUpperBound,
192 const Point& aF,
const Point& aL,
193 const Point& aUf,
const Point& aUl,
194 const Point& aLf,
const Point& aLl,
195 const Steps& aSteps,
const Vector& aShift);
213 const Point& aF,
const Point& aL,
214 const Point& aUf,
const Point& aUl,
215 const Point& aLf,
const Point& aLl);
239 const Point& aF,
const Point& aL,
240 const Point& aUf,
const Point& aUl,
241 const Point& aLf,
const Point& aLl);
260 const bool& areOnTheUpperLine =
true);
297 template <
typename Iterator>
374 const DSL&
dsl()
const;
379 Coordinate
a()
const;
384 Coordinate
b()
const;
396 Integer
omega()
const;
401 Vector
shift()
const;
477 bool before (
const Point& aP1,
const Point& aP2)
const;
489 bool beforeOrEqual (
const Point& aP1,
const Point& aP2)
const;
515 bool isInDSL(
const DSL& aDSL)
const;
529 bool isInDSL(
const DSL& aDSL, std::vector<Point> &Ulp, std::vector<Point> &Llp, Point& outP)
const;
555 ConstIterator
begin()
const;
561 ConstIterator
end()
const;
567 ConstReverseIterator
rbegin()
const;
573 ConstReverseIterator
rend()
const;
684 PointD
project(
const Point& aM,
double aR )
const;
694 PointD
project(
const Point & aM,
const Point & aP )
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>
794 operator<< ( std::ostream & out, const ArithmeticalDSS<TCoordinate, TInteger, adjacency> & object );
828 template <
typename TCoordinate,
typename TInteger = TCoordinate>
857 StandardDSS4(
const Coordinate& aA,
const Coordinate& aB,
858 const Point& aF,
const Point& aL,
859 const Point& aUf,
const Point& aUl,
860 const Point& aLf,
const Point& aLl);
876 const bool& isOnTheUpperLine =
true);
889 const Point& aF,
const Point& aL);
903 const Point& aF,
const Point& aL);
914 template <
typename Iterator>
967 template <
typename TCoordinate,
typename TInteger = TCoordinate>
995 NaiveDSS8(
const Coordinate& aA,
const Coordinate& aB,
996 const Point& aF,
const Point& aL,
997 const Point& aUf,
const Point& aUl,
998 const Point& aLf,
const Point& aLl);
1014 NaiveDSS8(
const Point& aF,
const Point& aL,
1015 const bool& isOnTheUpperLine =
true);
1028 const Point& aF,
const Point& aL);
1042 const Point& aF,
const Point& aL);
1053 template <
typename Iterator>
1075 #include "DGtal/geometry/curves/ArithmeticalDSS.ih" 1080 #endif // !defined ArithmeticalDSS_h 1082 #undef ArithmeticalDSS_RECURSES 1083 #endif // else defined(ArithmeticalDSS_RECURSES)
bool operator!=(const ArithmeticalDSS &aOther) const
unsigned short int isExtendableBack(const Point &aNewPoint) const
bool before(const Point &aP1, const Point &aP2) const
MyDigitalSurface::ConstIterator ConstIterator
Aim: SpaceND is a utility class that defines the fundamental structure of a Digital Space in ND...
ArithmeticalDSS negate() const
unsigned short int isExtendableFront(const Point &aNewPoint) const
bool operator==(const ArithmeticalDSS &aOther) const
This class adapts any bidirectional iterator so that operator++ calls operator-- and vice versa...
ArithmeticalDSS(const Point &aPoint)
bool isInDSS(const Point &aPoint) 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)
std::pair< Vector, Vector > Steps
DGtal::PointVector< 2, double > PointD
void selfDisplay(std::ostream &out) const
static const unsigned short foregroundAdjacency
Position position(const Point &aPoint) const
bool extendBack(const Point &aNewPoint)
ConstIterator end() const
Aim: Concept checking for Integer Numbers. More precisely, this concept is a refinement of both CEucl...
bool isInDSL(const Point &aPoint) const
bool equalsTo(const ArithmeticalDSS &aOther) const
void retractUpdateParameters(const Vector &aNewDirection)
Integer remainder(const Point &aPoint) const
std::string className() const
Aim: This class represents a standard digital straight segment (DSS), ie. the sequence of simply 4-co...
DSL::ConstReverseIterator ConstReverseIterator
Aim: Set of static methods that create digital straight segments (DSS) from some input parameters...
ArithmeticalDSL< Coordinate, Integer, adjacency > DSL
Integer orthogonalPosition(const Point &aPoint) const
Super::Coordinate Coordinate
ConstReverseIterator rend() const
Aim: This class represents a naive (resp. standard) digital straight segment (DSS), ie. the sequence of simply 8- (resp. 4-)connected digital points contained in a naive (resp. standard) digital straight line (DSL) between two points of it.
bool beforeOrEqual(const Point &aP1, const Point &aP2) const
ConstReverseIterator rbegin() const
ConstIterator begin() const
DGtal is the top-level namespace which contains all DGtal functions and types.
ArithmeticalDSS & operator=(const ArithmeticalDSS &aOther)
ArithmeticalDSS< TCoordinate, TInteger, 4 > Super
bool extendFront(const Point &aNewPoint)
Super::Coordinate Coordinate
ArithmeticalDSS computeUnion(const ArithmeticalDSS &aOther) const
BOOST_CONCEPT_ASSERT((concepts::CInteger< Coordinate >))
PointD project(const Point &aM, double aR) const
ArithmeticalDSS< TCoordinate, TInteger, 8 > Super
bool operator()(const Point &aPoint) const
DSL::ConstIterator ConstIterator
Aim: This class represents a standard digital straight segment (DSS), ie. the sequence of simply 8-co...