DGtal 1.3.0
Loading...
Searching...
No Matches
Data Structures | Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Attributes | Friends
DGtal::ArithmeticalDSL< TCoordinate, TInteger, adjacency > Class Template Reference

Aim: This class represents a naive (resp. standard) digital straight line (DSL), ie. the set of digital points \( (x,y) \in \mathbb{Z}^2 \) such that \( \mu \leq ax - by < \mu + \omega \) with \( a,b,\mu,\omega \in \mathbb{Z} \), \( \gcd(a,b) = 1 \) and \( \omega = \max(|a|,|b|) \) (resp. \( \omega = |a| + |b| \)). Note that any DSL such that \( \omega = \max(|a|,|b|) \) (resp. \( \omega = |a| + |b| \)) is simply 8-connected (resp. 4-connected). More...

#include <DGtal/geometry/curves/ArithmeticalDSL.h>

Inheritance diagram for DGtal::ArithmeticalDSL< TCoordinate, TInteger, adjacency >:
DGtal::NaiveDSL< TCoordinate, TInteger > DGtal::StandardDSL< TCoordinate, TInteger >

Data Structures

class  ConstIterator
 Aim: This class aims at representing an iterator that provides a way to scan the points of a DSL. It is both a model of readable iterator and of bidirectional iterator. More...
 

Public Types

typedef TCoordinate Coordinate
 
typedef TInteger Integer
 
typedef ArithmeticalDSLKernel< Coordinate, adjacency >::Space Space
 
typedef Space::Point Point
 
typedef Space::Vector Vector
 
typedef std::pair< Vector, VectorSteps
 
typedef Coordinate Position
 
typedef std::pair< unsigned char, unsigned char > Octant
 
typedef DGtal::ReverseIterator< ConstIteratorConstReverseIterator
 

Public Member Functions

 BOOST_CONCEPT_ASSERT ((concepts::CInteger< Coordinate >))
 
 BOOST_CONCEPT_ASSERT ((concepts::CInteger< Integer >))
 
 ArithmeticalDSL (const Coordinate &aA, const Coordinate &aB, const Integer &aLowerIntercept, const Integer &aUpperIntercept, const Steps &aSteps, const Vector &aShift)
 
 ArithmeticalDSL (const Coordinate &aA, const Coordinate &aB, const Integer &aMu)
 
 ArithmeticalDSL (const ArithmeticalDSL &aOther)
 
ArithmeticalDSLoperator= (const ArithmeticalDSL &aOther)
 
ArithmeticalDSL negate () const
 
bool equalsTo (const ArithmeticalDSL &aOther) const
 
bool operator== (const ArithmeticalDSL &aOther) const
 
bool operator!= (const ArithmeticalDSL &aOther) const
 
bool sameOctant (const ArithmeticalDSL &aOther, typename Octant::first_type *theOctant) const
 
bool isUpperLeaningPoint (const Point &aPoint) const
 
bool isLowerLeaningPoint (const Point &aPoint) const
 
Octant octant () const
 
 ~ArithmeticalDSL ()
 
void selfDisplay (std::ostream &out) const
 
bool checkShiftAndSteps () const
 
bool isValid () const
 
Coordinate a () const
 
Coordinate b () const
 
Integer mu () const
 
Integer omega () const
 
Position patternLength () const
 
Vector shift () const
 
Steps steps () const
 
Integer remainder (const Point &aPoint) const
 
Integer orthogonalPosition (const Point &aPoint) const
 
Position position (const Point &aPoint) const
 
Point getPoint () const
 
Point getPoint (const Position &aPosition) const
 
bool before (const Point &aP1, const Point &aP2) const
 
bool beforeOrEqual (const Point &aP1, const Point &aP2) const
 
bool isInDSL (const Point &aPoint) const
 
bool operator() (const Point &aPoint) const
 
ConstIterator begin (const Point &aPoint) const
 
ConstIterator end (const Point &aPoint) const
 
ConstReverseIterator rbegin (const Point &aPoint) const
 
ConstReverseIterator rend (const Point &aPoint) const
 

Static Public Member Functions

static Integer remainder (const Coordinate &aA, const Coordinate &aB, const Point &aPoint)
 
static Coordinate toCoordinate (const Integer &aI)
 

Static Public Attributes

static const unsigned short foregroundAdjacency = adjacency
 

Protected Attributes

Steps mySteps
 
Vector myShift
 
Coordinate myA
 
Coordinate myB
 
Integer myLowerBound
 
Integer myUpperBound
 

Friends

class ArithmeticalDSS< TCoordinate, TInteger, adjacency >
 

Detailed Description

template<typename TCoordinate, typename TInteger = TCoordinate, unsigned short adjacency = 8>
class DGtal::ArithmeticalDSL< TCoordinate, TInteger, adjacency >

Aim: This class represents a naive (resp. standard) digital straight line (DSL), ie. the set of digital points \( (x,y) \in \mathbb{Z}^2 \) such that \( \mu \leq ax - by < \mu + \omega \) with \( a,b,\mu,\omega \in \mathbb{Z} \), \( \gcd(a,b) = 1 \) and \( \omega = \max(|a|,|b|) \) (resp. \( \omega = |a| + |b| \)). Note that any DSL such that \( \omega = \max(|a|,|b|) \) (resp. \( \omega = |a| + |b| \)) is simply 8-connected (resp. 4-connected).

[Reveilles, 1991 : [97]].

A naive DSL can be declared and constructed as follows:

#include "DGtal/arithmetic/geometry/curves/ArithmeticalDSL.h"
...
ArithmeticalDSL<DGtal::int32_t, DGtal::int64_t, 8> line( 17711, 28657, 1607895256 );
// equivalent to ArithmeticalDSL<DGtal::int32_t, DGtal::int64_t> line( 17711, 28657, 1607895256 );
boost::int64_t int64_t
signed 94-bit integer.
Definition: BasicTypes.h:74
boost::int32_t int32_t
signed 32-bit integer.
Definition: BasicTypes.h:72

See Digital straight lines and segments
for further details.

This class is a model of CPointFunctor and of CConstBidirectionalRange.

In the standard case, it is enough to replace 8 by 4.

Template Parameters
TCoordinatea model of integer for the DGtal point coordinates and the slope parameters.
TIntegera model of integer for the intercepts and the remainders that represents a larger range of integers than TCoordinate.
adjacencyan unsigned integer equal to 8 (default) for naive DSL, and 4 for standard DSL.
See also
ArithmeticalDSL NaiveDSL StandardDSL
exampleArithmeticalDSL.cpp

Definition at line 106 of file ArithmeticalDSL.h.

Member Typedef Documentation

◆ ConstReverseIterator

template<typename TCoordinate , typename TInteger = TCoordinate, unsigned short adjacency = 8>
typedef DGtal::ReverseIterator<ConstIterator> DGtal::ArithmeticalDSL< TCoordinate, TInteger, adjacency >::ConstReverseIterator

Type of const reverse iterator, adapted from ConstIterator.

Definition at line 297 of file ArithmeticalDSL.h.

◆ Coordinate

template<typename TCoordinate , typename TInteger = TCoordinate, unsigned short adjacency = 8>
typedef TCoordinate DGtal::ArithmeticalDSL< TCoordinate, TInteger, adjacency >::Coordinate

Type used for the points coordinates and the slope parameters.

Definition at line 127 of file ArithmeticalDSL.h.

◆ Integer

template<typename TCoordinate , typename TInteger = TCoordinate, unsigned short adjacency = 8>
typedef TInteger DGtal::ArithmeticalDSL< TCoordinate, TInteger, adjacency >::Integer

Type used for the intercepts and the remainders.

Definition at line 132 of file ArithmeticalDSL.h.

◆ Octant

template<typename TCoordinate , typename TInteger = TCoordinate, unsigned short adjacency = 8>
typedef std::pair<unsigned char, unsigned char> DGtal::ArithmeticalDSL< TCoordinate, TInteger, adjacency >::Octant

Type of the octant values, defined as a STL pair of int

Definition at line 158 of file ArithmeticalDSL.h.

◆ Point

template<typename TCoordinate , typename TInteger = TCoordinate, unsigned short adjacency = 8>
typedef Space::Point DGtal::ArithmeticalDSL< TCoordinate, TInteger, adjacency >::Point

Type of point.

Definition at line 141 of file ArithmeticalDSL.h.

◆ Position

template<typename TCoordinate , typename TInteger = TCoordinate, unsigned short adjacency = 8>
typedef Coordinate DGtal::ArithmeticalDSL< TCoordinate, TInteger, adjacency >::Position

Type used for the position of a point in the DSL.

Definition at line 153 of file ArithmeticalDSL.h.

◆ Space

template<typename TCoordinate , typename TInteger = TCoordinate, unsigned short adjacency = 8>
typedef ArithmeticalDSLKernel<Coordinate,adjacency>::Space DGtal::ArithmeticalDSL< TCoordinate, TInteger, adjacency >::Space

Type of digital plane.

Definition at line 137 of file ArithmeticalDSL.h.

◆ Steps

template<typename TCoordinate , typename TInteger = TCoordinate, unsigned short adjacency = 8>
typedef std::pair<Vector,Vector> DGtal::ArithmeticalDSL< TCoordinate, TInteger, adjacency >::Steps

Type of step vectors, defined as STL pair of vectors.

Definition at line 149 of file ArithmeticalDSL.h.

◆ Vector

template<typename TCoordinate , typename TInteger = TCoordinate, unsigned short adjacency = 8>
typedef Space::Vector DGtal::ArithmeticalDSL< TCoordinate, TInteger, adjacency >::Vector

Type of vector.

Definition at line 145 of file ArithmeticalDSL.h.

Constructor & Destructor Documentation

◆ ArithmeticalDSL() [1/3]

template<typename TCoordinate , typename TInteger = TCoordinate, unsigned short adjacency = 8>
DGtal::ArithmeticalDSL< TCoordinate, TInteger, adjacency >::ArithmeticalDSL ( const Coordinate aA,
const Coordinate aB,
const Integer aLowerIntercept,
const Integer aUpperIntercept,
const Steps aSteps,
const Vector aShift 
)

Constructor. The user gives all the (redondant) parameters and should be sure that the resulting DSL is valid.

See also
isValid
Parameters
aAy-component of the direction vector
aBx-component of the direction vector
aLowerInterceptlower intercept
aUpperInterceptupper intercept
aStepspair of steps used to iterate over the DSL points
aShiftshift vector

◆ ArithmeticalDSL() [2/3]

template<typename TCoordinate , typename TInteger = TCoordinate, unsigned short adjacency = 8>
DGtal::ArithmeticalDSL< TCoordinate, TInteger, adjacency >::ArithmeticalDSL ( const Coordinate aA,
const Coordinate aB,
const Integer aMu 
)

Constructor with the minimal set of parameters.

Parameters
aAy-component of the direction vector
aBx-component of the direction vector
aMuintercept

◆ ArithmeticalDSL() [3/3]

template<typename TCoordinate , typename TInteger = TCoordinate, unsigned short adjacency = 8>
DGtal::ArithmeticalDSL< TCoordinate, TInteger, adjacency >::ArithmeticalDSL ( const ArithmeticalDSL< TCoordinate, TInteger, adjacency > &  aOther)

Copy constructor.

Parameters
aOtherthe object to clone.

◆ ~ArithmeticalDSL()

template<typename TCoordinate , typename TInteger = TCoordinate, unsigned short adjacency = 8>
DGtal::ArithmeticalDSL< TCoordinate, TInteger, adjacency >::~ArithmeticalDSL ( )

Destructor.

Member Function Documentation

◆ a()

template<typename TCoordinate , typename TInteger = TCoordinate, unsigned short adjacency = 8>
Coordinate DGtal::ArithmeticalDSL< TCoordinate, TInteger, adjacency >::a ( ) const
Returns
a parameter (y-component of the direction vector)
Examples
geometry/curves/exampleArithmeticalDSL.cpp.

Referenced by exampleNaiveDSL(), and exampleStandardDSL().

◆ b()

template<typename TCoordinate , typename TInteger = TCoordinate, unsigned short adjacency = 8>
Coordinate DGtal::ArithmeticalDSL< TCoordinate, TInteger, adjacency >::b ( ) const
Returns
b parameter (x-component of the direction vector)
Examples
geometry/curves/exampleArithmeticalDSL.cpp.

Referenced by exampleNaiveDSL(), and exampleStandardDSL().

◆ before()

template<typename TCoordinate , typename TInteger = TCoordinate, unsigned short adjacency = 8>
bool DGtal::ArithmeticalDSL< TCoordinate, TInteger, adjacency >::before ( const Point aP1,
const Point aP2 
) const

Returns a boolean equal to 'true' if aP1 is located (strictly) before aP2 in the direction orthogonal to myShift, 'false' otherwise.

Parameters
aP1any point
aP2any point
Returns
'true' is aP1 is strictly before aP2, 'false' otherwise
See also
beforeOrEqual position

◆ beforeOrEqual()

template<typename TCoordinate , typename TInteger = TCoordinate, unsigned short adjacency = 8>
bool DGtal::ArithmeticalDSL< TCoordinate, TInteger, adjacency >::beforeOrEqual ( const Point aP1,
const Point aP2 
) const

Returns a boolean equal to 'true' if aP1 is located before aP2 or is equal to aP2, 'false' otherwise.

Parameters
aP1any point
aP2any point
Returns
'true' is aP1 is before or equal to aP2, 'false' otherwise
See also
before position

◆ begin()

template<typename TCoordinate , typename TInteger = TCoordinate, unsigned short adjacency = 8>
ConstIterator DGtal::ArithmeticalDSL< TCoordinate, TInteger, adjacency >::begin ( const Point aPoint) const
Parameters
aPointany point of the DSL
Precondition
aPoint should belong to the DSL
Returns
begin iterator, which points to aPoint
Examples
geometry/curves/exampleArithmeticalDSL.cpp.

Referenced by exampleNaiveDSL(), and exampleStandardDSL().

◆ BOOST_CONCEPT_ASSERT() [1/2]

template<typename TCoordinate , typename TInteger = TCoordinate, unsigned short adjacency = 8>
DGtal::ArithmeticalDSL< TCoordinate, TInteger, adjacency >::BOOST_CONCEPT_ASSERT ( (concepts::CInteger< Coordinate >)  )

◆ BOOST_CONCEPT_ASSERT() [2/2]

template<typename TCoordinate , typename TInteger = TCoordinate, unsigned short adjacency = 8>
DGtal::ArithmeticalDSL< TCoordinate, TInteger, adjacency >::BOOST_CONCEPT_ASSERT ( (concepts::CInteger< Integer >)  )

◆ checkShiftAndSteps()

template<typename TCoordinate , typename TInteger = TCoordinate, unsigned short adjacency = 8>
bool DGtal::ArithmeticalDSL< TCoordinate, TInteger, adjacency >::checkShiftAndSteps ( ) const

Checks the consistency between the slope parameters, ie. myA , myB and the translating vectors myShift , mySteps

Returns
'true' if ok, 'false' otherwise
Precondition
myA and myB must not be both null

◆ end()

template<typename TCoordinate , typename TInteger = TCoordinate, unsigned short adjacency = 8>
ConstIterator DGtal::ArithmeticalDSL< TCoordinate, TInteger, adjacency >::end ( const Point aPoint) const
Parameters
aPointany point of the DSL
Precondition
aPoint should belong to the DSL
Returns
end iterator, which points to the point located after aPoint
Examples
geometry/curves/exampleArithmeticalDSL.cpp.

Referenced by exampleNaiveDSL(), and exampleStandardDSL().

◆ equalsTo()

template<typename TCoordinate , typename TInteger = TCoordinate, unsigned short adjacency = 8>
bool DGtal::ArithmeticalDSL< TCoordinate, TInteger, adjacency >::equalsTo ( const ArithmeticalDSL< TCoordinate, TInteger, adjacency > &  aOther) const

Equality.

Parameters
aOtherthe object to compare with.
Returns
'true' if the parameters of the DSL are equal (orientation matters), 'false' otherwise

◆ getPoint() [1/2]

template<typename TCoordinate , typename TInteger = TCoordinate, unsigned short adjacency = 8>
Point DGtal::ArithmeticalDSL< TCoordinate, TInteger, adjacency >::getPoint ( ) const

Returns the unique point of the DSL located at position zero in O(1).

Precondition
the arithmetical thickness is not equal to zero
Returns
the point of the DSL located at position zero

◆ getPoint() [2/2]

template<typename TCoordinate , typename TInteger = TCoordinate, unsigned short adjacency = 8>
Point DGtal::ArithmeticalDSL< TCoordinate, TInteger, adjacency >::getPoint ( const Position aPosition) const

Returns the unique point of the DSL located at position aPosition in O(1).

Precondition
the arithmetical thickness is not equal to zero
Parameters
aPositionposition of the returned point
Returns
the point of the DSL located at position aPosition

◆ isInDSL()

template<typename TCoordinate , typename TInteger = TCoordinate, unsigned short adjacency = 8>
bool DGtal::ArithmeticalDSL< TCoordinate, TInteger, adjacency >::isInDSL ( const Point aPoint) const
Returns
'true' if aPoint is in the DSL 'false' otherwise.
Parameters
aPointany point

◆ isLowerLeaningPoint()

template<typename TCoordinate , typename TInteger = TCoordinate, unsigned short adjacency = 8>
bool DGtal::ArithmeticalDSL< TCoordinate, TInteger, adjacency >::isLowerLeaningPoint ( const Point aPoint) const

Test if a point is a lower leaning point of *this

Parameters
aPointa point
Returns
'true' if aPoint is a lower leaning point of *this, false otherwise

◆ isUpperLeaningPoint()

template<typename TCoordinate , typename TInteger = TCoordinate, unsigned short adjacency = 8>
bool DGtal::ArithmeticalDSL< TCoordinate, TInteger, adjacency >::isUpperLeaningPoint ( const Point aPoint) const

Test if a point is an upper leaning point of *this

Parameters
aPointa point
Returns
'true' if aPoint is an upper leaning point of *this, false otherwise

◆ isValid()

template<typename TCoordinate , typename TInteger = TCoordinate, unsigned short adjacency = 8>
bool DGtal::ArithmeticalDSL< TCoordinate, TInteger, adjacency >::isValid ( ) const

Checks the validity/consistency of the object.

Returns
'true' if the object is valid, 'false' otherwise.

NB: runs in O( log( max( |myA |,| myB | ) ) ) because it checks if myA and myB are relatively primes.

Referenced by exampleArithmeticalDSLTypes().

◆ mu()

template<typename TCoordinate , typename TInteger = TCoordinate, unsigned short adjacency = 8>
Integer DGtal::ArithmeticalDSL< TCoordinate, TInteger, adjacency >::mu ( ) const
Returns
mu parameter, the intercept \( \mu \)

◆ negate()

template<typename TCoordinate , typename TInteger = TCoordinate, unsigned short adjacency = 8>
ArithmeticalDSL DGtal::ArithmeticalDSL< TCoordinate, TInteger, adjacency >::negate ( ) const

Returns a copy of '*this' with a reverse orientation, ie. with parameters ( -myA , -myB , -myUpperIntercept , -myLowerIntercept).

Returns
the negation of '*this'.
Examples
geometry/curves/exampleArithmeticalDSL.cpp.

Referenced by exampleNaiveDSL(), and exampleStandardDSL().

◆ octant()

template<typename TCoordinate , typename TInteger = TCoordinate, unsigned short adjacency = 8>
Octant DGtal::ArithmeticalDSL< TCoordinate, TInteger, adjacency >::octant ( ) const

Returns the octants of the DSL as a pair of integers. If the parameters are such that \( abs(@a myA) = abs(@a myB) \) or \( @a myA = 0 \) or \( @a myB = 0 \), it returns two octants (for instance octants 0 and 7 if \( @a myA = 0 \)).

Returns
the octants as a pair of integers

◆ omega()

template<typename TCoordinate , typename TInteger = TCoordinate, unsigned short adjacency = 8>
Integer DGtal::ArithmeticalDSL< TCoordinate, TInteger, adjacency >::omega ( ) const
Returns
the arithmetical thickness \( \omega \)
See also
patternLength

◆ operator!=()

template<typename TCoordinate , typename TInteger = TCoordinate, unsigned short adjacency = 8>
bool DGtal::ArithmeticalDSL< TCoordinate, TInteger, adjacency >::operator!= ( const ArithmeticalDSL< TCoordinate, TInteger, adjacency > &  aOther) const

Difference.

Parameters
aOtherthe object to compare with.
Returns
'true' the two set of points that are implicitly defined are different, 'false' otherwise

◆ operator()()

template<typename TCoordinate , typename TInteger = TCoordinate, unsigned short adjacency = 8>
bool DGtal::ArithmeticalDSL< TCoordinate, TInteger, adjacency >::operator() ( const Point aPoint) const
Returns
'true' if aPoint is in the DSL 'false' otherwise.
Parameters
aPointany point
See also
isInDSL

◆ operator=()

template<typename TCoordinate , typename TInteger = TCoordinate, unsigned short adjacency = 8>
ArithmeticalDSL & DGtal::ArithmeticalDSL< TCoordinate, TInteger, adjacency >::operator= ( const ArithmeticalDSL< TCoordinate, TInteger, adjacency > &  aOther)

Assignment.

Parameters
aOtherthe object to copy.
Returns
a reference on 'this'.

◆ operator==()

template<typename TCoordinate , typename TInteger = TCoordinate, unsigned short adjacency = 8>
bool DGtal::ArithmeticalDSL< TCoordinate, TInteger, adjacency >::operator== ( const ArithmeticalDSL< TCoordinate, TInteger, adjacency > &  aOther) const

Equality.

Parameters
aOtherthe object to compare with.
Returns
'true' the two sets of points that are implicitly defined are equal (without respect to the orientation), 'false' otherwise
See also
equalsTo

◆ orthogonalPosition()

template<typename TCoordinate , typename TInteger = TCoordinate, unsigned short adjacency = 8>
Integer DGtal::ArithmeticalDSL< TCoordinate, TInteger, adjacency >::orthogonalPosition ( const Point aPoint) const

Returns the position of aPoint (which does not necessarily belong to the DSL) computed along the direction that is orthogonal to the direction vector

Parameters
aPointthe point whose position is returned
Returns
the position

◆ patternLength()

template<typename TCoordinate , typename TInteger = TCoordinate, unsigned short adjacency = 8>
Position DGtal::ArithmeticalDSL< TCoordinate, TInteger, adjacency >::patternLength ( ) const
Returns
the pattern length (equal to \( omega \))
See also
omega

◆ position()

template<typename TCoordinate , typename TInteger = TCoordinate, unsigned short adjacency = 8>
Position DGtal::ArithmeticalDSL< TCoordinate, TInteger, adjacency >::position ( const Point aPoint) const

Returns the position of aPoint (which does not necessarily belong to the DSL) computed along the direction orthogonal to myShift

Parameters
aPointthe point whose position is returned
Returns
the position

◆ rbegin()

template<typename TCoordinate , typename TInteger = TCoordinate, unsigned short adjacency = 8>
ConstReverseIterator DGtal::ArithmeticalDSL< TCoordinate, TInteger, adjacency >::rbegin ( const Point aPoint) const
Parameters
aPointany point of the DSL
Precondition
aPoint sould belongs to the DSL
Returns
begin reverse iterator, which points to aPoint

◆ remainder() [1/2]

template<typename TCoordinate , typename TInteger = TCoordinate, unsigned short adjacency = 8>
static Integer DGtal::ArithmeticalDSL< TCoordinate, TInteger, adjacency >::remainder ( const Coordinate aA,
const Coordinate aB,
const Point aPoint 
)
static

Returns the remainder of aPoint with respect to the direction vector of components aA and aB

Parameters
aAy-component of the direction vector
aBx-component of the direction vector
aPointany point
Returns
remainder of aPoint

◆ remainder() [2/2]

template<typename TCoordinate , typename TInteger = TCoordinate, unsigned short adjacency = 8>
Integer DGtal::ArithmeticalDSL< TCoordinate, TInteger, adjacency >::remainder ( const Point aPoint) const

Returns the remainder of aPoint (which does not necessarily belong to the DSL)

Returns
remainder of aPoint
Parameters
aPointany point

◆ rend()

template<typename TCoordinate , typename TInteger = TCoordinate, unsigned short adjacency = 8>
ConstReverseIterator DGtal::ArithmeticalDSL< TCoordinate, TInteger, adjacency >::rend ( const Point aPoint) const
Parameters
aPointany point of the DSL
Precondition
aPoint sould belongs to the DSL
Returns
end iterator, which points to the point located before aPoint

◆ sameOctant()

template<typename TCoordinate , typename TInteger = TCoordinate, unsigned short adjacency = 8>
bool DGtal::ArithmeticalDSL< TCoordinate, TInteger, adjacency >::sameOctant ( const ArithmeticalDSL< TCoordinate, TInteger, adjacency > &  aOther,
typename Octant::first_type *  theOctant 
) const

Test if DSLs lie in the same octant.

Parameters
aOtherthe object to compare with.
[out]theOctantwhere to store the common octant if the DSLs are in the same octant.
Returns
'true' if the two DSLs lie in the same octant, 'false' otherwise
See also
sameOctant

◆ selfDisplay()

template<typename TCoordinate , typename TInteger = TCoordinate, unsigned short adjacency = 8>
void DGtal::ArithmeticalDSL< TCoordinate, TInteger, adjacency >::selfDisplay ( std::ostream &  out) const

Writes/Displays the object on an output stream.

Parameters
outthe output stream where the object is written.

◆ shift()

template<typename TCoordinate , typename TInteger = TCoordinate, unsigned short adjacency = 8>
Vector DGtal::ArithmeticalDSL< TCoordinate, TInteger, adjacency >::shift ( ) const
Returns
the shift vector (translating a point of remainder \( r \) to a point of remainder \( r+\omega \)).

◆ steps()

template<typename TCoordinate , typename TInteger = TCoordinate, unsigned short adjacency = 8>
Steps DGtal::ArithmeticalDSL< TCoordinate, TInteger, adjacency >::steps ( ) const
Returns
the two vectors used to iterate over the DSL points.

◆ toCoordinate()

template<typename TCoordinate , typename TInteger = TCoordinate, unsigned short adjacency = 8>
static Coordinate DGtal::ArithmeticalDSL< TCoordinate, TInteger, adjacency >::toCoordinate ( const Integer aI)
static

Friends And Related Function Documentation

◆ ArithmeticalDSS< TCoordinate, TInteger, adjacency >

template<typename TCoordinate , typename TInteger = TCoordinate, unsigned short adjacency = 8>
friend class ArithmeticalDSS< TCoordinate, TInteger, adjacency >
friend

Definition at line 672 of file ArithmeticalDSL.h.

Field Documentation

◆ foregroundAdjacency

template<typename TCoordinate , typename TInteger = TCoordinate, unsigned short adjacency = 8>
const unsigned short DGtal::ArithmeticalDSL< TCoordinate, TInteger, adjacency >::foregroundAdjacency = adjacency
static

Adjacency of the DSL.

Definition at line 118 of file ArithmeticalDSL.h.

◆ myA

template<typename TCoordinate , typename TInteger = TCoordinate, unsigned short adjacency = 8>
Coordinate DGtal::ArithmeticalDSL< TCoordinate, TInteger, adjacency >::myA
protected

y-component of the direction vector

Definition at line 641 of file ArithmeticalDSL.h.

◆ myB

template<typename TCoordinate , typename TInteger = TCoordinate, unsigned short adjacency = 8>
Coordinate DGtal::ArithmeticalDSL< TCoordinate, TInteger, adjacency >::myB
protected

x-component of the direction vector

Definition at line 645 of file ArithmeticalDSL.h.

◆ myLowerBound

template<typename TCoordinate , typename TInteger = TCoordinate, unsigned short adjacency = 8>
Integer DGtal::ArithmeticalDSL< TCoordinate, TInteger, adjacency >::myLowerBound
protected

Lower intercept. Invariants:

  • for any upper leaning point U, we have remainder(U) == myLowerBound.
  • myLowerBound <= myUpperBound

Definition at line 651 of file ArithmeticalDSL.h.

◆ myShift

template<typename TCoordinate , typename TInteger = TCoordinate, unsigned short adjacency = 8>
Vector DGtal::ArithmeticalDSL< TCoordinate, TInteger, adjacency >::myShift
protected

Shift vector. It is computed from myA and myB in ArithmeticalDSLKernel.

See also
ArithmeticalDSLKernel::shift

Definition at line 635 of file ArithmeticalDSL.h.

◆ mySteps

template<typename TCoordinate , typename TInteger = TCoordinate, unsigned short adjacency = 8>
Steps DGtal::ArithmeticalDSL< TCoordinate, TInteger, adjacency >::mySteps
protected

Pair of steps used to iterate over the DSL points. They are computed from myA and myB in ArithmeticalDSLKernel.

See also
ArithmeticalDSLKernel::steps

Definition at line 630 of file ArithmeticalDSL.h.

◆ myUpperBound

template<typename TCoordinate , typename TInteger = TCoordinate, unsigned short adjacency = 8>
Integer DGtal::ArithmeticalDSL< TCoordinate, TInteger, adjacency >::myUpperBound
protected

Upper intercept. Invariants:

  • for any lower leaning point L, we have remainder(L) == myUpperBound.
  • if myA and myB are not both null, myUpperBound == myLowerBound + omega() - 1
  • myLowerBound <= myUpperBound

Definition at line 658 of file ArithmeticalDSL.h.


The documentation for this class was generated from the following file: