31 #if defined(DigitalSurface_RECURSES)
32 #error Recursive header files inclusion detected in DigitalSurface.h
35 #define DigitalSurface_RECURSES
37 #if !defined DigitalSurface_h
39 #define DigitalSurface_h
47 #include <boost/graph/graph_traits.hpp>
48 #include <boost/graph/properties.hpp>
49 #include "DGtal/base/Common.h"
50 #include "DGtal/base/CountedPtr.h"
51 #include "DGtal/kernel/CWithGradientMap.h"
52 #include "DGtal/topology/CCellEmbedder.h"
53 #include "DGtal/topology/CSCellEmbedder.h"
54 #include "DGtal/topology/CDigitalSurfaceContainer.h"
55 #include "DGtal/topology/CDigitalSurfaceTracker.h"
56 #include "DGtal/topology/UmbrellaComputer.h"
64 :
public virtual adjacency_graph_tag,
65 public virtual vertex_list_graph_tag,
66 public virtual incidence_graph_tag,
67 public virtual edge_list_graph_tag { };
138 template <
typename TDigitalSurfaceContainer>
163 typedef typename DigitalSurfaceContainer::SurfelConstIterator
ConstIterator;
259 || ( (
k == other.
k )
284 unsigned int nb,
bool aIsClosed )
443 template <
typename OutputIterator>
466 template <
typename OutputIterator,
typename VertexPredicate>
469 const VertexPredicate & pred )
const;
504 bool order_ccw_in_3d =
false )
const;
628 template <
typename CellEmbedder>
630 const CellEmbedder & cembedder )
const;
642 template <
typename CellEmbedder>
644 const CellEmbedder & cembedder )
const;
657 template <
typename SCellEmbedderWithGradientMap>
659 const SCellEmbedderWithGradientMap & scembedder )
const;
669 template <
typename CellEmbedder>
671 const CellEmbedder & cembedder )
const;
709 template <
typename TDigitalSurfaceContainer>
719 #include "DGtal/topology/DigitalSurface.ih"
726 #undef DigitalSurface_RECURSES
Aim: Represents a set of n-1-cells in a nD space, together with adjacency relation between these cell...
void exportEmbeddedSurfaceAs3DOFF(std::ostream &out, const CellEmbedder &cembedder) const
void exportEmbeddedSurfaceAs3DNOFF(std::ostream &out, const CellEmbedder &cembedder) const
DigitalSurfaceContainer::Surfel Surfel
ArcRange outArcs(const Vertex &v) const
DigitalSurface & operator=(const DigitalSurface &other)
DigitalSurface< DigitalSurfaceContainer > Self
void selfDisplay(std::ostream &out) const
DigitalSurfaceContainer::Cell Cell
Face computeFace(UmbrellaState state) const
TDigitalSurfaceContainer DigitalSurfaceContainer
Arc arc(const Vertex &tail, const Vertex &head) const
UmbrellaComputer< DigitalSurfaceTracker > myUmbrellaComputer
This object is used to compute umbrellas over the surface.
boost::undirected_tag directed_category
the graph is undirected.
FaceSet allClosedFaces() const
void writeNeighbors(OutputIterator &it, const Vertex &v, const VertexPredicate &pred) const
DigitalSurfaceContainer::SurfelConstIterator ConstIterator
Vertex tail(const Arc &a) const
void exportSurfaceAs3DOFF(std::ostream &out) const
UmbrellaComputer< DigitalSurfaceTracker > Umbrella
This define a utility class for computing umbrellas.
DigitalSurfaceContainer & container()
Size bestCapacity() const
SCell pivot(const Face &f) const
KSpace::SurfelSet VertexSet
Defines how to represent a set of vertex.
KSpace::Size Size
Defines how to represent a size (unsigned integral type).
Surfel Vertex
Defines the type for a vertex.
boost::disallow_parallel_edge_tag edge_parallel_category
the graph does not allow parallel edges.
ArcRange inArcs(const Vertex &v) const
std::vector< Vertex > VertexRange
The range of vertices is defined as a vector.
Arc opposite(const Arc &a) const
DigitalSurfaceContainer::DigitalSurfaceTracker DigitalSurfaceTracker
Umbrella::State UmbrellaState
DigitalSurfaceTracker * myTracker
a pointer on a tracker.
CountedPtr< DigitalSurfaceContainer > myContainer
a smart pointer on the container.
DigitalSurface(const DigitalSurface &other)
ConstIterator begin() const
std::vector< Arc > ArcRange
The range of arcs is defined as a vector.
const DigitalSurfaceContainer & container() const
BOOST_CONCEPT_ASSERT((concepts::CDigitalSurfaceContainer< DigitalSurfaceContainer >))
ConstIterator end() const
DigitalSurface(DigitalSurfaceContainer *containerPtr)
DigitalSurfaceContainer::KSpace KSpace
std::vector< Face > FaceRange
The range of faces is defined as a vector.
VertexRange verticesAroundFace(const Face &f) const
FaceRange facesAroundVertex(const Vertex &v, bool order_ccw_in_3d=false) const
KSpace::SurfelSet SurfelSet
void exportEmbeddedIteratedSurfaceAs3DNOFF(std::ostream &out, const CellEmbedder &cembedder) const
DigitalSurfaceContainer::SCell SCell
FaceSet allOpenFaces() const
std::set< Face > FaceSet
The set of faces is defined as set.
boost::DigitalSurface_graph_traversal_category traversal_category
the graph satisfies AdjacencyListGraph and VertexListGraph concepts.
DigitalSurface(const DigitalSurfaceContainer &container)
void exportAs3DNOFF(std::ostream &out, const SCellEmbedderWithGradientMap &scembedder) const
FaceRange facesAroundArc(const Arc &a) const
Size degree(const Vertex &v) const
void writeNeighbors(OutputIterator &it, const Vertex &v) const
SCell separator(const Arc &a) const
Vertex head(const Arc &a) const
std::set< SCell > SurfelSet
Preferred type for defining a set of surfels (always signed cells).
NumberTraits< Integer >::UnsignedVersion Size
Type used to represent sizes in the digital space.
DGtal is the top-level namespace which contains all DGtal functions and types.
std::ostream & operator<<(std::ostream &out, const ATu0v1< TKSpace, TLinearAlgebra > &object)
DGtal::uint32_t Dimension
bool operator!=(const Arc &other) const
bool operator==(const Arc &other) const
Dimension k
direction toward the head surfel
Arc(const Vertex &theTail, Dimension aK, bool aEpsilon)
bool epsilon
orientation toward the head surfel
bool operator<(const Arc &other) const
Vertex vertices[2]
The two vertices.
bool operator<(const Edge &other) const
Edge(const Vertex &v1, const Vertex &v2)
bool operator==(const Edge &other) const
bool closed
tells if the face is closed or open.
unsigned int nbVertices
number of vertices incident to face.
bool operator<(const Face &other) const
Face(const UmbrellaState &aState, unsigned int nb, bool aIsClosed)
bool operator==(const Face &other) const
KSpace::template SurfelMap< Value >::Type Type
KSpace::template SurfelMap< Value >::Type Type
Aim: The digital surface container concept describes a minimal set of inner types and methods so as t...