DGtal  1.1.0
IndexedDigitalSurface.h
1 
17 #pragma once
18 
31 #if defined(IndexedDigitalSurface_RECURSES)
32 #error Recursive header files inclusion detected in IndexedDigitalSurface.h
33 #else // defined(IndexedDigitalSurface_RECURSES)
34 
35 #define IndexedDigitalSurface_RECURSES
36 
37 #if !defined IndexedDigitalSurface_h
38 
39 #define IndexedDigitalSurface_h
40 
42 // Inclusions
43 #include <iostream>
44 #include <set>
45 #include <map>
46 #include <vector>
47 #include "DGtal/base/Common.h"
48 #include "DGtal/base/OwningOrAliasingPtr.h"
49 #include "DGtal/base/IntegerSequenceIterator.h"
50 #include "DGtal/topology/HalfEdgeDataStructure.h"
51 #include "DGtal/topology/CDigitalSurfaceContainer.h"
53 
54 namespace DGtal
55 {
56 
58  // template class IndexedDigitalSurface
95  template <typename TDigitalSurfaceContainer>
97  {
98  public:
100  typedef TDigitalSurfaceContainer DigitalSurfaceContainer;
102 
104  typedef typename KSpace::Space Space;
105  typedef typename KSpace::Surfel Surfel;
106  typedef typename KSpace::SCell SCell;
107  typedef typename KSpace::Cell Cell;
108  typedef typename Space::RealPoint RealPoint;
116  typedef std::vector<RealPoint> PositionsStorage;
117  typedef std::vector<PolygonalFace> PolygonalFacesStorage;
118  typedef std::vector<SCell> SCellStorage;
119 
120  // Required by CUndirectedSimpleLocalGraph
122  typedef std::set<Vertex> VertexSet;
123  template <typename Value> struct VertexMap {
124  typedef typename std::map<Vertex, Value> Type;
125  };
126 
127  // Required by CUndirectedSimpleGraph
128  typedef EdgeIndex Edge;
130 
131  // Required for CCombinatorialSurface
134  typedef std::vector<Arc> ArcRange;
135  typedef std::vector<Face> FaceRange;
136  typedef std::vector<Vertex> VertexRange;
137 
139 
148  template <typename TData>
150  typedef Index Argument;
151  typedef TData Data;
152  typedef std::vector<Data> Storage;
153 
156 
161  IndexedPropertyMap( const Self& aSurface, Size s, Data def_data = Data() )
162  : mySurface( &aSurface ),
163  myData( Storage( s, def_data ) )
164  {}
165 
173  IndexedPropertyMap( const Self& aSurface,
174  Storage& aStorage )
175  : mySurface( &aSurface ),
176  myData( &aStorage, false )
177  {}
178 
180  const Self& surface() const
181  {
182  ASSERT( isValid() );
183  return *mySurface;
184  }
185 
189  const Data& operator()( Argument v ) const
190  {
191  ASSERT( isValid() && v < myData->size() );
192  return (*myData)[ v ];
193  }
194 
198  const Data& operator[]( Argument v ) const
199  {
200  ASSERT( isValid() && v < myData->size() );
201  return (*myData)[ v ];
202  }
203 
208  {
209  ASSERT( isValid() && v < myData->size() );
210  return (*myData)[ v ];
211  }
212 
214  bool isValid() const { return mySurface != 0; }
215 
217  Size size() const { return myData->size(); }
218 
220  Storage& storage() { return *myData; }
221 
223  const Storage& storage() const { return *myData; }
224 
225  private:
227  const Self* mySurface;
230  };
231 
233 
234  protected:
236 
237  // ----------------------- Standard services ------------------------------
238  public:
239 
244 
249 
255  : isHEDSValid( false ), myContainer( 0 )
256  {
257  build( surfContainer );
258  }
259 
261  void clear();
262 
274 
279  { return *myContainer; }
280 
282  const KSpace& space() const
283  { return myContainer->space(); }
284 
287  { return myHEDS; }
288 
289  // ------------------------- standard services ------------------------------
290  public:
292  Size nbArcs() const { return myHEDS.nbHalfEdges(); }
293 
295  Size nbVertices() const { return myHEDS.nbVertices(); }
296 
298  Size nbEdges() const { return myHEDS.nbEdges(); }
299 
301  Size nbFaces() const { return myHEDS.nbFaces(); }
302 
306  long Euler() const { return myHEDS.Euler(); }
307 
311  {
312  return PositionsMap( *this, myPositions );
313  }
314 
318  {
320  }
321 
325  {
326  return IndexedPropertyMap< SCell >( *this, myArc2Linel );
327  }
328 
332  {
334  }
335 
337  template <typename AnyData>
339  {
340  return IndexedPropertyMap< AnyData >( *this, nbVertices() );
341  }
342 
345  template <typename AnyData>
347  {
348  return IndexedPropertyMap< AnyData >( *this, nbVertices(), value );
349  }
350 
352  template <typename AnyData>
354  {
355  return IndexedPropertyMap< AnyData >( *this, nbEdges() );
356  }
357 
360  template <typename AnyData>
362  {
363  return IndexedPropertyMap< AnyData >( *this, nbEdges(), value );
364  }
365 
367  template <typename AnyData>
369  {
370  return IndexedPropertyMap< AnyData >( *this, nbFaces() );
371  }
372 
375  template <typename AnyData>
377  {
378  return IndexedPropertyMap< AnyData >( *this, nbFaces(), value );
379  }
380 
388  const RealPoint& position( Vertex v ) const;
389 
392  const SCell& surfel( Vertex v ) const
393  {
394  ASSERT( v < nbVertices() );
395  return myVertexIndex2Surfel[ v ];
396  }
397 
400  const SCell& linel( Arc a ) const
401  {
402  ASSERT( a < nbArcs() );
403  return myArc2Linel[ a ];
404  }
405 
408  const SCell& pointel( Face f ) const
409  {
410  ASSERT( f < nbFaces() );
411  return myFaceIndex2Pointel[ f ];
412  }
413 
418  Vertex getVertex( const SCell& aSurfel ) const
419  {
420  auto it = mySurfel2VertexIndex.find( aSurfel );
421  return it != mySurfel2VertexIndex.end() ? it->second : INVALID_FACE;
422  }
423 
428  Arc getArc( const SCell& aLinel ) const
429  {
430  auto it = myLinel2Arc.find( aLinel );
431  return it != myLinel2Arc.end() ? it->second : INVALID_FACE;
432  }
433 
438  Face getFace( const SCell& aPointel ) const
439  {
440  auto it = myPointel2FaceIndex.find( aPointel );
441  return it != myPointel2FaceIndex.end() ? it->second : INVALID_FACE;
442  }
443 
444  // ----------------------- Undirected simple graph services -------------------------
445  public:
449  Size size() const;
450 
458 
464  Size degree( const Vertex & v ) const;
465 
477  template <typename OutputIterator>
478  void
479  writeNeighbors( OutputIterator &it ,
480  const Vertex & v ) const;
481 
498  template <typename OutputIterator, typename VertexPredicate>
499  void
500  writeNeighbors( OutputIterator &it ,
501  const Vertex & v,
502  const VertexPredicate & pred) const;
503 
506  { return ConstIterator( 0 ); }
507 
510  { return ConstIterator( nbVertices() ); }
511 
512  // ----------------------- CombinatorialSurface --------------------------
513  public:
514 
519  ArcRange outArcs( const Vertex & v ) const;
520 
525  ArcRange inArcs( const Vertex & v ) const;
526 
531  FaceRange facesAroundVertex( const Vertex & v ) const;
532 
537  Vertex head( const Arc & a ) const;
538 
543  Vertex tail( const Arc & a ) const;
544 
549  Arc opposite( const Arc & a ) const;
550 
557  Arc next( const Arc & a ) const;
558 
566  Arc arc( const Vertex & t, const Vertex & h ) const;
567 
578  Face faceAroundArc( const Arc & a ) const;
579 
588  FaceRange facesAroundArc( const Arc & a ) const;
589 
600  VertexRange verticesAroundFace( const Face & f ) const;
601 
607  bool isVertexBoundary( const Vertex& v ) const;
608 
615  bool isArcBoundary( const Arc& v ) const;
616 
626  ArcRange allArcs() const;
632 
641 
650 
651  // ----------------------- Interface --------------------------------------
652  public:
653 
658  void selfDisplay ( std::ostream & out ) const;
659 
664  bool isValid() const;
665 
666  // ------------------------- Protected Datas ------------------------------
667  protected:
674 
680  std::map< SCell, VertexIndex > mySurfel2VertexIndex;
682  std::map< SCell, Arc > myLinel2Arc;
684  std::map< SCell, FaceIndex > myPointel2FaceIndex;
691 
692 
693  // ------------------------- Private Datas --------------------------------
694  private:
695 
696  // ------------------------- Hidden services ------------------------------
697  protected:
698 
699  private:
700 
701  // ------------------------- Internals ------------------------------------
702  private:
703 
704  }; // end of class IndexedDigitalSurface
705 
706 
713  template <typename TDigitalSurfaceContainer>
714  std::ostream&
715  operator<< ( std::ostream & out,
717 
718 } // namespace DGtal
719 
720 
722 // Includes inline functions.
723 #include "DGtal/topology/IndexedDigitalSurface.ih"
724 
725 // //
727 
728 #endif // !defined IndexedDigitalSurface_h
729 
730 #undef IndexedDigitalSurface_RECURSES
731 #endif // else defined(IndexedDigitalSurface_RECURSES)
DGtal::IndexedDigitalSurface::Triangle
HalfEdgeDataStructure::Triangle Triangle
Definition: IndexedDigitalSurface.h:114
DGtal::IndexedDigitalSurface::surfel
const SCell & surfel(Vertex v) const
Definition: IndexedDigitalSurface.h:392
DGtal::IndexedDigitalSurface::nbArcs
Size nbArcs() const
Definition: IndexedDigitalSurface.h:292
DGtal::IndexedDigitalSurface::head
Vertex head(const Arc &a) const
DGtal::HalfEdgeDataStructure::nbEdges
Size nbEdges() const
Definition: HalfEdgeDataStructure.h:373
DGtal::IndexedDigitalSurface::outArcs
ArcRange outArcs(const Vertex &v) const
KSpace
Z3i::KSpace KSpace
Definition: sphereCotangentLaplaceOperator.cpp:70
DGtal::IndexedDigitalSurface::inArcs
ArcRange inArcs(const Vertex &v) const
DGtal::IndexedDigitalSurface::VertexIndex
HalfEdgeDataStructure::VertexIndex VertexIndex
Definition: IndexedDigitalSurface.h:111
DGtal::IndexedDigitalSurface::allFaces
FaceRange allFaces() const
DGtal::IndexedDigitalSurface::SCellStorage
std::vector< SCell > SCellStorage
Definition: IndexedDigitalSurface.h:118
DGtal::IndexedDigitalSurface::makeFaceMap
IndexedPropertyMap< AnyData > makeFaceMap() const
Definition: IndexedDigitalSurface.h:368
DGtal::IndexedDigitalSurface::Self
IndexedDigitalSurface< TDigitalSurfaceContainer > Self
Definition: IndexedDigitalSurface.h:99
DGtal::OwningOrAliasingPtr< Storage >
DGtal::ConstAlias
Aim: This class encapsulates its parameter class so that to indicate to the user that the object/poin...
Definition: ConstAlias.h:187
DGtal::IndexedDigitalSurface::DigitalSurfaceContainer
TDigitalSurfaceContainer DigitalSurfaceContainer
Definition: IndexedDigitalSurface.h:100
DGtal::IndexedDigitalSurface::VertexMap
Definition: IndexedDigitalSurface.h:123
DGtal::IndexedDigitalSurface::pointels
IndexedPropertyMap< SCell > pointels()
Definition: IndexedDigitalSurface.h:331
DGtal::IndexedDigitalSurface::Arc
HalfEdgeDataStructure::HalfEdgeIndex Arc
Definition: IndexedDigitalSurface.h:132
DGtal::IndexedDigitalSurface::isValid
bool isValid() const
DGtal::IndexedDigitalSurface::Vertex
VertexIndex Vertex
Definition: IndexedDigitalSurface.h:121
DGtal::IndexedDigitalSurface::nbFaces
Size nbFaces() const
Definition: IndexedDigitalSurface.h:301
DGtal::IndexedDigitalSurface::mySurfel2VertexIndex
std::map< SCell, VertexIndex > mySurfel2VertexIndex
Mapping Surfel -> VertexIndex.
Definition: IndexedDigitalSurface.h:680
DGtal::HalfEdgeDataStructure::Index
std::size_t Index
The type used for numbering half-edges (an offset an the half-edges structure).
Definition: HalfEdgeDataStructure.h:89
DGtal::IndexedDigitalSurface::myVertexIndex2Surfel
SCellStorage myVertexIndex2Surfel
Mapping VertexIndex -> Surfel.
Definition: IndexedDigitalSurface.h:686
DGtal::IndexedDigitalSurface
Aim: Represents a digital surface with the topology of its dual surface. Its aim is to mimick the sta...
Definition: IndexedDigitalSurface.h:97
DGtal::IndexedDigitalSurface::myArc2Linel
SCellStorage myArc2Linel
Mapping Arc -> Linel.
Definition: IndexedDigitalSurface.h:688
DGtal::IndexedDigitalSurface::RealPoint
Space::RealPoint RealPoint
Definition: IndexedDigitalSurface.h:108
DGtal::IndexedDigitalSurface::IndexedPropertyMap::operator()
const Data & operator()(Argument v) const
Definition: IndexedDigitalSurface.h:189
DGtal::IndexedDigitalSurface::KSpace
DigitalSurfaceContainer::KSpace KSpace
Definition: IndexedDigitalSurface.h:103
DGtal::HalfEdgeDataStructure::nbHalfEdges
Size nbHalfEdges() const
Definition: HalfEdgeDataStructure.h:367
DGtal::IndexedDigitalSurface::IndexedPropertyMap::isValid
bool isValid() const
Definition: IndexedDigitalSurface.h:214
DGtal::IndexedDigitalSurface::myHEDS
HalfEdgeDataStructure myHEDS
The half-edge data structure that stores the topology of the mesh.
Definition: IndexedDigitalSurface.h:671
DGtal::IndexedDigitalSurface::allArcs
ArcRange allArcs() const
DGtal::IndexedDigitalSurface::SCell
KSpace::SCell SCell
Definition: IndexedDigitalSurface.h:106
DGtal::IndexedDigitalSurface::myContainer
CountedConstPtrOrConstPtr< DigitalSurfaceContainer > myContainer
The (secured or not) pointer to the associated digital surface container.
Definition: IndexedDigitalSurface.h:673
DGtal::IndexedDigitalSurface::IndexedDigitalSurface
IndexedDigitalSurface(ConstAlias< DigitalSurfaceContainer > surfContainer)
Definition: IndexedDigitalSurface.h:254
DGtal::IndexedDigitalSurface::linels
IndexedPropertyMap< SCell > linels()
Definition: IndexedDigitalSurface.h:324
DGtal::IndexedDigitalSurface::selfDisplay
void selfDisplay(std::ostream &out) const
DGtal::IndexedDigitalSurface::container
const DigitalSurfaceContainer & container() const
Definition: IndexedDigitalSurface.h:278
DGtal::IndexedDigitalSurface::IndexedPropertyMap::storage
const Storage & storage() const
Definition: IndexedDigitalSurface.h:223
DGtal::IndexedDigitalSurface::writeNeighbors
void writeNeighbors(OutputIterator &it, const Vertex &v, const VertexPredicate &pred) const
DGtal::IndexedDigitalSurface::allBoundaryVertices
VertexRange allBoundaryVertices() const
DGtal::IndexedDigitalSurface::nbVertices
Size nbVertices() const
Definition: IndexedDigitalSurface.h:295
DGtal::IndexedDigitalSurface::getFace
Face getFace(const SCell &aPointel) const
Definition: IndexedDigitalSurface.h:438
DGtal::IntegerSequenceIterator
Aim: It is a simple class that mimics a (non mutable) iterator over integers. You can increment it,...
Definition: IntegerSequenceIterator.h:69
DGtal::IndexedDigitalSurface::IndexedPropertyMap
Definition: IndexedDigitalSurface.h:149
DGtal::IndexedDigitalSurface::IndexedPropertyMap::operator[]
Data & operator[](Argument v)
Definition: IndexedDigitalSurface.h:207
DGtal::HalfEdgeDataStructure::Euler
long Euler() const
Definition: HalfEdgeDataStructure.h:379
DGtal::IndexedDigitalSurface::getVertex
Vertex getVertex(const SCell &aSurfel) const
Definition: IndexedDigitalSurface.h:418
DGtal::HalfEdgeDataStructure::nbVertices
Size nbVertices() const
Definition: HalfEdgeDataStructure.h:370
DGtal::IndexedDigitalSurface::Size
HalfEdgeDataStructure::Size Size
Definition: IndexedDigitalSurface.h:109
DGtal::IndexedDigitalSurface::IndexedPropertyMap::Data
TData Data
Definition: IndexedDigitalSurface.h:151
DGtal::SignedKhalimskyCell
Represents a signed cell in a cellular grid space by its Khalimsky coordinates and a boolean value.
Definition: KhalimskySpaceND.h:209
DGtal::HalfEdgeDataStructure::HalfEdge
Definition: HalfEdgeDataStructure.h:189
DGtal::IndexedDigitalSurface::makeVertexMap
IndexedPropertyMap< AnyData > makeVertexMap() const
Definition: IndexedDigitalSurface.h:338
DGtal::IndexedDigitalSurface::IndexedPropertyMap::IndexedPropertyMap
IndexedPropertyMap(const Self &aSurface, Size s, Data def_data=Data())
Definition: IndexedDigitalSurface.h:161
DGtal::IndexedDigitalSurface::makeVertexMap
IndexedPropertyMap< AnyData > makeVertexMap(AnyData value) const
Definition: IndexedDigitalSurface.h:346
DGtal::IndexedDigitalSurface::next
Arc next(const Arc &a) const
DGtal::IndexedDigitalSurface::BOOST_STATIC_CONSTANT
BOOST_STATIC_CONSTANT(Face, INVALID_FACE=HALF_EDGE_INVALID_INDEX)
DGtal::IndexedDigitalSurface::allBoundaryArcs
ArcRange allBoundaryArcs() const
DGtal::IndexedDigitalSurface::PolygonalFacesStorage
std::vector< PolygonalFace > PolygonalFacesStorage
Definition: IndexedDigitalSurface.h:117
DGtal::concepts::CDigitalSurfaceContainer
Aim: The digital surface container concept describes a minimal set of inner types and methods so as t...
Definition: CDigitalSurfaceContainer.h:128
DGtal::IndexedDigitalSurface::isHEDSValid
bool isHEDSValid
Indicates if the half-edge structure has been created/updated.
Definition: IndexedDigitalSurface.h:669
DGtal::HalfEdgeDataStructure::HalfEdgeIndex
Index HalfEdgeIndex
The type used for numbering half-edges (alias)
Definition: HalfEdgeDataStructure.h:91
DGtal::IndexedDigitalSurface::IndexedPropertyMap::IndexedPropertyMap
IndexedPropertyMap()
Default constructor. The object is invalid.
Definition: IndexedDigitalSurface.h:155
DGtal::HalfEdgeDataStructure::Triangle
Represents an unoriented triangle as three vertices.
Definition: HalfEdgeDataStructure.h:155
DGtal::IndexedDigitalSurface::pointel
const SCell & pointel(Face f) const
Definition: IndexedDigitalSurface.h:408
DGtal::IndexedDigitalSurface::IndexedDigitalSurface
IndexedDigitalSurface()
Definition: IndexedDigitalSurface.h:248
DGtal::SpaceND
Definition: SpaceND.h:96
DGtal::IndexedDigitalSurface::allVertices
VertexRange allVertices() const
DGtal::IndexedDigitalSurface::size
Size size() const
DGtal::IndexedDigitalSurface::isVertexBoundary
bool isVertexBoundary(const Vertex &v) const
DGtal::IndexedDigitalSurface::BOOST_CONCEPT_ASSERT
BOOST_CONCEPT_ASSERT((concepts::CDigitalSurfaceContainer< DigitalSurfaceContainer >))
DGtal::HalfEdgeDataStructure::Size
std::size_t Size
The type for counting elements.
Definition: HalfEdgeDataStructure.h:87
DGtal::IndexedDigitalSurface::IndexedPropertyMap::operator[]
const Data & operator[](Argument v) const
Definition: IndexedDigitalSurface.h:198
DGtal::IndexedDigitalSurface::PolygonalFace
HalfEdgeDataStructure::PolygonalFace PolygonalFace
Definition: IndexedDigitalSurface.h:115
DGtal::IndexedDigitalSurface::IndexedPropertyMap::myData
OwningOrAliasingPtr< Storage > myData
An owned or aliased pointer to the vector of data.
Definition: IndexedDigitalSurface.h:229
DGtal::IndexedDigitalSurface::FaceIndex
HalfEdgeDataStructure::FaceIndex FaceIndex
Definition: IndexedDigitalSurface.h:113
DGtal::HalfEdgeDataStructure::EdgeIndex
Index EdgeIndex
The type for numbering edges.
Definition: HalfEdgeDataStructure.h:95
DGtal::IndexedDigitalSurface::makeEdgeMap
IndexedPropertyMap< AnyData > makeEdgeMap() const
Definition: IndexedDigitalSurface.h:353
DGtal::IndexedDigitalSurface::IndexedPropertyMap::mySurface
const Self * mySurface
The associated indexed digital surface.
Definition: IndexedDigitalSurface.h:227
DGtal::IndexedDigitalSurface::VertexMap::Type
std::map< Vertex, Value > Type
Definition: IndexedDigitalSurface.h:124
DGtal::CountedConstPtrOrConstPtr< DigitalSurfaceContainer >
DGtal::IndexedDigitalSurface::space
const KSpace & space() const
Definition: IndexedDigitalSurface.h:282
DGtal
DGtal is the top-level namespace which contains all DGtal functions and types.
Definition: ClosedIntegerHalfPlane.h:49
DGtal::IndexedDigitalSurface::arc
Arc arc(const Vertex &t, const Vertex &h) const
DGtal::HalfEdgeDataStructure
Aim: This class represents an half-edge data structure, which is a structure for representing the top...
Definition: HalfEdgeDataStructure.h:83
DGtal::IndexedDigitalSurface::IndexedPropertyMap::storage
Storage & storage()
Definition: IndexedDigitalSurface.h:220
DGtal::IndexedDigitalSurface::myPolygonalFaces
PolygonalFacesStorage myPolygonalFaces
Stores the polygonal faces.
Definition: IndexedDigitalSurface.h:678
DGtal::IndexedDigitalSurface::faceAroundArc
Face faceAroundArc(const Arc &a) const
DGtal::IndexedDigitalSurface::begin
ConstIterator begin() const
Definition: IndexedDigitalSurface.h:505
DGtal::IndexedDigitalSurface::IndexedPropertyMap::Argument
Index Argument
Definition: IndexedDigitalSurface.h:150
DGtal::IndexedDigitalSurface::clear
void clear()
Clears everything.
DGtal::IndexedDigitalSurface::IndexedPropertyMap::Storage
std::vector< Data > Storage
Definition: IndexedDigitalSurface.h:152
DGtal::IndexedDigitalSurface::build
bool build(ConstAlias< DigitalSurfaceContainer > surfContainer)
DGtal::IndexedDigitalSurface::bestCapacity
Size bestCapacity() const
DGtal::IndexedDigitalSurface::position
RealPoint & position(Vertex v)
DGtal::IndexedDigitalSurface::VertexSet
std::set< Vertex > VertexSet
Definition: IndexedDigitalSurface.h:122
DGtal::IndexedDigitalSurface::Face
HalfEdgeDataStructure::FaceIndex Face
Definition: IndexedDigitalSurface.h:133
DGtal::IndexedDigitalSurface::IndexedPropertyMap::size
Size size() const
Definition: IndexedDigitalSurface.h:217
DGtal::IndexedDigitalSurface::HalfEdge
HalfEdgeDataStructure::HalfEdge HalfEdge
Definition: IndexedDigitalSurface.h:235
DGtal::IndexedDigitalSurface::makeEdgeMap
IndexedPropertyMap< AnyData > makeEdgeMap(AnyData value) const
Definition: IndexedDigitalSurface.h:361
DGtal::IndexedDigitalSurface::FaceRange
std::vector< Face > FaceRange
Definition: IndexedDigitalSurface.h:135
DGtal::operator<<
std::ostream & operator<<(std::ostream &out, const ClosedIntegerHalfPlane< TSpace > &object)
DGtal::IndexedDigitalSurface::getArc
Arc getArc(const SCell &aLinel) const
Definition: IndexedDigitalSurface.h:428
DGtal::IndexedDigitalSurface::Edge
EdgeIndex Edge
Definition: IndexedDigitalSurface.h:128
DGtal::HalfEdgeDataStructure::VertexIndex
Index VertexIndex
The type for numbering vertices.
Definition: HalfEdgeDataStructure.h:93
DGtal::IndexedDigitalSurface::EdgeIndex
HalfEdgeDataStructure::EdgeIndex EdgeIndex
Definition: IndexedDigitalSurface.h:112
DGtal::IndexedDigitalSurface::surfels
IndexedPropertyMap< SCell > surfels()
Definition: IndexedDigitalSurface.h:317
DGtal::IndexedDigitalSurface::opposite
Arc opposite(const Arc &a) const
DGtal::IndexedDigitalSurface::myPositions
PositionsStorage myPositions
Stores the information for each Vertex.
Definition: IndexedDigitalSurface.h:676
DGtal::IndexedDigitalSurface::verticesAroundFace
VertexRange verticesAroundFace(const Face &f) const
DGtal::IndexedDigitalSurface::facesAroundVertex
FaceRange facesAroundVertex(const Vertex &v) const
DGtal::IndexedDigitalSurface::nbEdges
Size nbEdges() const
Definition: IndexedDigitalSurface.h:298
DGtal::IndexedDigitalSurface::makeFaceMap
IndexedPropertyMap< AnyData > makeFaceMap(AnyData value) const
Definition: IndexedDigitalSurface.h:376
DGtal::IndexedDigitalSurface::PositionsStorage
std::vector< RealPoint > PositionsStorage
Definition: IndexedDigitalSurface.h:116
DGtal::IndexedDigitalSurface::ArcRange
std::vector< Arc > ArcRange
Definition: IndexedDigitalSurface.h:134
DGtal::IndexedDigitalSurface::PositionsMap
IndexedPropertyMap< RealPoint > PositionsMap
Definition: IndexedDigitalSurface.h:232
DGtal::IndexedDigitalSurface::isArcBoundary
bool isArcBoundary(const Arc &v) const
DGtal::IndexedDigitalSurface::facesAroundArc
FaceRange facesAroundArc(const Arc &a) const
DGtal::PointVector
Aim: Implements basic operations that will be used in Point and Vector classes.
Definition: PointVector.h:593
DGtal::IndexedDigitalSurface::degree
Size degree(const Vertex &v) const
DGtal::IndexedDigitalSurface::myLinel2Arc
std::map< SCell, Arc > myLinel2Arc
Mapping Linel -> Arc.
Definition: IndexedDigitalSurface.h:682
DGtal::HalfEdgeDataStructure::nbFaces
Size nbFaces() const
Definition: HalfEdgeDataStructure.h:376
DGtal::HALF_EDGE_INVALID_INDEX
static std::size_t const HALF_EDGE_INVALID_INDEX
Definition: HalfEdgeDataStructure.h:57
DGtal::IndexedDigitalSurface::myFaceIndex2Pointel
SCellStorage myFaceIndex2Pointel
Mapping FaceIndex -> Pointel.
Definition: IndexedDigitalSurface.h:690
DGtal::IndexedDigitalSurface::position
const RealPoint & position(Vertex v) const
DGtal::IndexedDigitalSurface::positions
PositionsMap positions()
Definition: IndexedDigitalSurface.h:310
DGtal::IndexedDigitalSurface::Surfel
KSpace::Surfel Surfel
Definition: IndexedDigitalSurface.h:105
DGtal::IndexedDigitalSurface::heds
const HalfEdgeDataStructure & heds() const
Definition: IndexedDigitalSurface.h:286
DGtal::IndexedDigitalSurface::Cell
KSpace::Cell Cell
Definition: IndexedDigitalSurface.h:107
DGtal::HalfEdgeDataStructure::FaceIndex
Index FaceIndex
The type for numbering faces.
Definition: HalfEdgeDataStructure.h:97
DGtal::IndexedDigitalSurface::end
ConstIterator end() const
Definition: IndexedDigitalSurface.h:509
DGtal::IndexedDigitalSurface::VertexRange
std::vector< Vertex > VertexRange
Definition: IndexedDigitalSurface.h:136
DGtal::IndexedDigitalSurface::Euler
long Euler() const
Definition: IndexedDigitalSurface.h:306
DGtal::IndexedDigitalSurface::ConstIterator
IntegerSequenceIterator< VertexIndex > ConstIterator
Definition: IndexedDigitalSurface.h:129
DGtal::IndexedDigitalSurface::Space
KSpace::Space Space
Definition: IndexedDigitalSurface.h:104
DGtal::IndexedDigitalSurface::IndexedPropertyMap::IndexedPropertyMap
IndexedPropertyMap(const Self &aSurface, Storage &aStorage)
Definition: IndexedDigitalSurface.h:173
DGtal::IndexedDigitalSurface::IndexedPropertyMap::surface
const Self & surface() const
Definition: IndexedDigitalSurface.h:180
DGtal::IndexedDigitalSurface::Index
HalfEdgeDataStructure::Index Index
Definition: IndexedDigitalSurface.h:110
DGtal::IndexedDigitalSurface::tail
Vertex tail(const Arc &a) const
DGtal::IndexedDigitalSurface::linel
const SCell & linel(Arc a) const
Definition: IndexedDigitalSurface.h:400
DGtal::IndexedDigitalSurface::myPointel2FaceIndex
std::map< SCell, FaceIndex > myPointel2FaceIndex
Mapping Pointel -> FaceIndex.
Definition: IndexedDigitalSurface.h:684
DGtal::IndexedDigitalSurface::~IndexedDigitalSurface
~IndexedDigitalSurface()
Definition: IndexedDigitalSurface.h:243
DGtal::KhalimskyCell< dim, Integer >
DGtal::IndexedDigitalSurface::writeNeighbors
void writeNeighbors(OutputIterator &it, const Vertex &v) const
DGtal::HalfEdgeDataStructure::PolygonalFace
std::vector< VertexIndex > PolygonalFace
Definition: HalfEdgeDataStructure.h:182