Design of Digital Surfaces - DGtal-team/DGtal GitHub Wiki
-
A
DigitalSurfacerepresents a set of surfels (n-1 cells) which are connected through an adjacency relation. The digital surface has an orientation. TheDigitalSurfacelies in some cellular grid space KSpace. -
DigitalSurfaces may appear in different context:
- as the boundary of a digital object
- as a set of signed surfels
- as a connected boundary of some implicitly defined shape.
-
Therefore, DigitalSurfaces have several containers, which satisfy the concept
CDigitalSurfaceContainer. -
A
DigitalSurfacereferences smartly its container so as to be "light". -
DigitalSurface<TDigitalSurfaceContainer>is a proxy class to aDigitalSurfaceContainerwith:- inner types:
- Self
- DigitalSurfaceContainer
- KSpace: ==
DigitalSurfaceContainer::KSpace - Cell, SCell, Surfel deduits du conteneur
- ConstIterator: iterator for visiting Surfels
- methods
- constructors: default, copy, const DigitalSurfaceContainer & (copied), DigitalContainer* (acquired).
container() constandcontainer(): return a (const or not) DigitalSurfaceContainer&begin() const,end() const: wrappers to container methods.neighborhood()
- data
CowPtr<DigitalSurfaceContainer>
- Propositions
- a model of CGraph (Vertex, etc)
- inner types:
-
A
CDigitalSurfaceContaineris a concept:- inner types:
- KSpace: specifies the cellular space in which the digital surface is embedded.
- Surfel : must be KSpace::SCell compatible (generally SCell itself).
SurfelConstIterator: iterator for visiting all surfels.DigitalSurfaceTracker: tracker for visiting surface.
- methods:
space() const:const KSpace &isInside( Surfel ) const: boolbegin() const:SurfelConstIteratorend() const:SurfelConstIteratornewTracker( Surfel ) const:DigitalSurfaceTracker*
- models:
- DigitalSetBoundary: the digital surface is defined as the boundary of a digital set of points.
- SpelSetBoundary: the digital surface is defined as the boundary of a set of spels.
- ImplicitDigitalSurface: the digital surface is defined with a Surfel and a PointPredicate. It is connected.
- ExplicitDigitalSurface: the digital surface is defined as a set of
Surfels. - ...
- data (just for information, not required)
const KSpace & mySpace
- inner types:
-
A DigitalSurfaceTracker is defined through the concept CDigitalSurfaceTracker
- inner types:
DigitalSurfaceContainerSurfel
- methods:
- copy constructor
surface() const:DigitalSurfaceContainer ¤t() const:SurfelorthDir() const:Directionorthogonal direction to current surfel.move( const Surfel & s ): moves the tracker to the given valid surfel ( Pre-condsurface().isInside( s ))adjacent( Surfel & s, Direction d, bool pos ): uint8. s is the adjacent surfel tocurrent()if it exists (different from 0). the returned value is n=1-3, n being the nth follower.
- models:
- ObjectBoundaryTracker, ImplicitSurfaceTracker, ExplicitSurfaceTracker
- inner types: