DGtal  0.9.2
DiscreteExteriorCalculusFactory.h
1 
17 #pragma once
18 
31 #if defined(DiscreteExteriorCalculusFactory_RECURSES)
32 #error Recursive header files inclusion detected in DiscreteExteriorCalculusFactory.h
33 #else // defined(DiscreteExteriorCalculusFactory_RECURSES)
34 
35 #define DiscreteExteriorCalculusFactory_RECURSES
36 
37 #if !defined DiscreteExteriorCalculusFactory_h
38 
39 #define DiscreteExteriorCalculusFactory_h
40 
42 #include "DGtal/dec/DiscreteExteriorCalculus.h"
43 #include "DGtal/topology/DigitalSurface.h"
45 
46 namespace DGtal
47 {
48 
50 // class DiscreteExteriorCalculusFactory
60 template <typename TLinearAlgebraBackend, typename TInteger = DGtal::int32_t>
61 class DiscreteExteriorCalculusFactory
62 {
63  // ----------------------- Standard services ------------------------------
64 public:
65 
66  typedef typename TLinearAlgebraBackend::DenseVector DenseVector;
67  typedef typename TLinearAlgebraBackend::DenseMatrix DenseMatrix;
68  typedef typename TLinearAlgebraBackend::SparseMatrix SparseMatrix;
69 
71 
77 
86  template <typename TDigitalSet>
87  static
89  createFromDigitalSet(const TDigitalSet& set, const bool add_border = true);
90 
101  template <Dimension dimEmbedded, typename TNSCellConstIterator>
102  static
104  createFromNSCells(const TNSCellConstIterator& begin, const TNSCellConstIterator& end, const bool add_border = true);
105 
106  // ----------------------- Interface --------------------------------------
107 public:
108 
109  // ------------------------- Protected Datas ------------------------------
110 private:
111  // ------------------------- Private Datas --------------------------------
112 private:
113 
114  // ------------------------- Hidden services ------------------------------
115 protected:
116 
126  template <typename KSpace, typename CellsSet>
127  static
128  void
129  insertAllLowerIncidentCells(const KSpace& kspace, const typename CellsSet::value_type& cell, CellsSet& cells_set);
130 
141  template <typename KSpace, typename CellsAccum>
142  static
143  void
144  accumulateAllLowerIncidentCells(const KSpace& kspace, const typename CellsAccum::key_type& cell, CellsAccum& cells_accum);
145 
146 private:
147 
153 
154 
161 
169 
170  // ------------------------- Internals ------------------------------------
171 private:
172 
173 }; // end of class DiscreteExteriorCalculusFactory
174 
175 } // namespace DGtal
176 
177 
179 // Includes inline functions.
180 #if !defined(BUILD_INLINE)
181 #include "DGtal/dec/DiscreteExteriorCalculusFactory.ih"
182 #endif
183 
184 
185 // //
187 
188 #endif // !defined DiscreteExteriorCalculusFactory_h
189 
190 #undef DiscreteExteriorCalculusFactory_RECURSES
191 #endif // else defined(DiscreteExteriorCalculusFactory_RECURSES)
Aim: DiscreteExteriorCalculus represents a calculus in the dec package. This is the main structure in...
DiscreteExteriorCalculusFactory & operator=(const DiscreteExteriorCalculusFactory &other)
TLinearAlgebraBackend::DenseVector DenseVector
Aim: Represent any dynamic sized matrix having sparse or dense representation.
static void insertAllLowerIncidentCells(const KSpace &kspace, const typename CellsSet::value_type &cell, CellsSet &cells_set)
Aim: Check right multiplication between matrix and vector and internal matrix multiplication. Matrix and vector scalar types should be the same.
Aim: Concept checking for Integer Numbers. More precisely, this concept is a refinement of both CEucl...
Definition: CInteger.h:87
static DiscreteExteriorCalculus< dimEmbedded, TNSCellConstIterator::value_type::Point::dimension, TLinearAlgebraBackend, TInteger > createFromNSCells(const TNSCellConstIterator &begin, const TNSCellConstIterator &end, const bool add_border=true)
TLinearAlgebraBackend::SparseMatrix SparseMatrix
Aim: This class provides static members to create DEC structures from various other DGtal structures...
BOOST_CONCEPT_ASSERT((concepts::CInteger< TInteger >))
DGtal is the top-level namespace which contains all DGtal functions and types.
TLinearAlgebraBackend::DenseMatrix DenseMatrix
Aim: Represent any dynamic sized column vector having sparse or dense representation.
static void accumulateAllLowerIncidentCells(const KSpace &kspace, const typename CellsAccum::key_type &cell, CellsAccum &cells_accum)
static DiscreteExteriorCalculus< TDigitalSet::Point::dimension, TDigitalSet::Point::dimension, TLinearAlgebraBackend, TInteger > createFromDigitalSet(const TDigitalSet &set, const bool add_border=true)