29 #if defined(DSLSubsegment_RECURSES)
30 #error Recursive header files inclusion detected in DSLSubsegment.h
31 #else // defined(DSLSubsegment_RECURSES)
33 #define DSLSubsegment_RECURSES
35 #if !defined DSLSubsegment_h
37 #define DSLSubsegment_h
44 #include "DGtal/base/Common.h"
47 #include "DGtal/arithmetic/IntegerComputer.h"
74 template <
typename TInteger,
typename TNumber>
732 #include "DSLSubsegment.ih"
738 #endif // !defined DSLSubsegment_h
740 #undef DSLSubsegment_RECURSES
741 #endif // else defined(DSLSubsegment_RECURSES)
void DSLSubsegmentLocalCH(Number a, Number b, Number mu, Point &A, Point &B)
void update(Vector &u, Point &A, Vector &l, Integer r, Vector *v)
BOOST_CONCEPT_ASSERT((concepts::CInteger< Integer >))
Integer intersectionVertical(Point &P, Vector &v, Integer n)
Aim: Concept checking for Integer Numbers. More precisely, this concept is a refinement of both CEucl...
void lowerConvexHull(Vector &l, Integer mu, Point &A, Point &B, Point *prevInfL, Point *infL, Point *infR, Point *prevInfR)
RayC(const Integer x0, const Integer y0)
DGtal::PointVector< 2, Integer > Vector
Integer slope(Integer p, Integer q, Integer r, Number alpha, Number beta)
Integer computeMaxRemainder(Number a, Number b, Number mu, Point A, Point B)
void convexHullHarPeled(Vector &l, Integer n, Point *inf, Point *sup)
Point nextTermInFareySeriesEuclid(Integer fp, Integer fq, Integer n)
Integer smartFirstDichotomy(Integer fp, Integer fq, Integer gp, Integer gq, Number alpha, Number beta, Integer n, bool *flagRayFound)
void convexHullApprox(Number s, Integer n, Point *inf, Point *sup)
DSLSubsegment(Number alpha, Number beta, Point &A, Point &B, Number precision=1e-10)
void DSLSubsegmentFareyFan(Number a, Number b, Number mu, Point &A, Point &B)
BOOST_CONCEPT_ASSERT((concepts::CEuclideanRing< Number >))
DGtal::PointVector< 2, Integer > Point
auto inf(PointVector< ptDim, LeftEuclideanRing, LeftContainer > const &lhs, PointVector< ptDim, RightEuclideanRing, RightContainer > const &rhs) -> decltype(DGtal::constructFromArithmeticConversion(lhs, rhs))
Implements the infimum (or greatest lower bound).
void convexHullApproxTwoPoints(Vector &l, Integer r, Integer n, Point *inf, Point *sup, Point *prevInf, Point *prevSup, bool inv)
Aim: Given a Digital Straight line and two endpoints A and B on this line, compute the minimal charac...
DGtal::PointVector< 2, Integer > Ray
RayC smartRayOfSmallestSlope(Integer fp, Integer fq, Integer gp, Integer gq, Integer r)
void selfDisplay(std::ostream &out) const
DGtal::PointVector< 2, Number > PointF
Position positionWrtRay(RayC &r, Number a, Number b, Number mu)
DGtal is the top-level namespace which contains all DGtal functions and types.
void update(Vector &u, Point &A, Number s, Vector *v)
auto sup(PointVector< ptDim, LeftEuclideanRing, LeftContainer > const &lhs, PointVector< ptDim, RightEuclideanRing, RightContainer > const &rhs) -> decltype(DGtal::constructFromArithmeticConversion(lhs, rhs))
Implements the supremum (or least upper bound).
Aim: Defines the mathematical concept equivalent to a unitary commutative ring with a division operat...
Integer smartFirstDichotomy(Integer fp, Integer fq, Integer gp, Integer gq, Number a, Number b, Number mu, Integer n, bool *flagRayFound)
Integer intersection(Point &P, Vector &v, Number s)
Position positionWrtRay(RayC &r, Number alpha, Number beta)
Integer computeMinRemainder(Number a, Number b, Number mu, Point A, Point B)
Integer slope(Integer p, Integer q, Integer r, Number a, Number b, Number mu)
long double LongDoubleType
RayC localizeRay(Integer fp, Integer fq, Integer gp, Integer gq, Integer r, Number a, Number b, Number mu, Integer n)
Integer intersection(Point &P, Vector &v, Vector &aL, Integer r)
RayC rayOfHighestSlope(Integer p, Integer q, Integer r, Integer smallestSlope, Integer n)
RayC raySup(Integer fp, Integer fq, RayC r)
void shortFindSolution(Integer fp, Integer fq, Integer gp, Integer gq, RayC r, Integer n, Integer *resAlphaP, Integer *resAlphaQ, Integer *resBetaP)
DGtal::PointVector< 2, Number > VectorF
RayC localizeRay(Integer fp, Integer fq, Integer gp, Integer gq, Integer r, Number alpha, Number beta, Integer n)
DSLSubsegment(Number a, Number b, Number mu, Point &A, Point &B, std::string type)
RayC(const Integer p, const Integer q, const Integer r, const Integer slope)
void findSolutionWithoutFractions(Integer fp, Integer fq, Integer gp, Integer gq, RayC r, Integer n, Integer *resAlphaP, Integer *resAlphaQ, Integer *resBetaP, bool found)
void convexHullApprox(Vector &l, Integer r, Integer n, Point *inf, Point *sup)