DGtal 1.4.0
Loading...
Searching...
No Matches
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)
35#define DiscreteExteriorCalculusFactory_RECURSES
36
37#if !defined DiscreteExteriorCalculusFactory_h
39#define DiscreteExteriorCalculusFactory_h
40
42#include "DGtal/dec/DiscreteExteriorCalculus.h"
43#include "DGtal/topology/DigitalSurface.h"
45
46namespace DGtal
47{
48
50// class DiscreteExteriorCalculusFactory
60template <typename TLinearAlgebraBackend, typename TInteger = DGtal::int32_t>
62{
63 // ----------------------- Standard services ------------------------------
64public:
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
118 template <DGtal::Dimension dimEmbedded, typename TNSCellConstIterator, typename TSCellMeasureFunctor>
119 static
121 createFromNSCells(const TNSCellConstIterator& begin, const TNSCellConstIterator& end, const TSCellMeasureFunctor& normalFunctor, const double h, const bool add_border = true);
122
123 // ----------------------- Interface --------------------------------------
124public:
125
126 // ------------------------- Protected Datas ------------------------------
127private:
128 // ------------------------- Private Datas --------------------------------
129private:
130
131 // ------------------------- Hidden services ------------------------------
132protected:
133
143 template <typename KSpace, typename CellsSet>
144 static
145 void
146 insertAllLowerIncidentCells(const KSpace& kspace, const typename CellsSet::value_type& cell, CellsSet& cells_set);
147
158 template <typename KSpace, typename CellsAccum>
159 static
160 void
161 accumulateAllLowerIncidentCells(const KSpace& kspace, const typename CellsAccum::key_type& cell, CellsAccum& cells_accum);
162
176 template <typename KSpace, typename CellsAccum, typename MeasureAccum>
177 static
178 void
179 accumulateAllLowerIncidentCells(const KSpace& kspace, const typename CellsAccum::key_type& cell, CellsAccum& cells_accum, CellsAccum& local_accum, MeasureAccum& cell_to_measure, const double measure);
180
181private:
182
188
189
196
204
205 // ------------------------- Internals ------------------------------------
206private:
207
208}; // end of class DiscreteExteriorCalculusFactory
209
210} // namespace DGtal
211
212
214// Includes inline functions.
215#if !defined(BUILD_INLINE)
216#include "DGtal/dec/DiscreteExteriorCalculusFactory.ih"
217#endif
218
219
220// //
222
223#endif // !defined DiscreteExteriorCalculusFactory_h
224
225#undef DiscreteExteriorCalculusFactory_RECURSES
226#endif // else defined(DiscreteExteriorCalculusFactory_RECURSES)
Aim: This class provides static members to create DEC structures from various other DGtal structures.
BOOST_CONCEPT_ASSERT((concepts::CLinearAlgebra< DenseVector, SparseMatrix >))
static void insertAllLowerIncidentCells(const KSpace &kspace, const typename CellsSet::value_type &cell, CellsSet &cells_set)
BOOST_CONCEPT_ASSERT((concepts::CLinearAlgebra< DenseVector, DenseMatrix >))
DiscreteExteriorCalculusFactory & operator=(const DiscreteExteriorCalculusFactory &other)
static DiscreteExteriorCalculus< TDigitalSet::Point::dimension, TDigitalSet::Point::dimension, TLinearAlgebraBackend, TInteger > createFromDigitalSet(const TDigitalSet &set, const bool add_border=true)
BOOST_CONCEPT_ASSERT((concepts::CDynamicMatrix< SparseMatrix >))
BOOST_CONCEPT_ASSERT((concepts::CDynamicVector< DenseVector >))
TLinearAlgebraBackend::SparseMatrix SparseMatrix
static void accumulateAllLowerIncidentCells(const KSpace &kspace, const typename CellsAccum::key_type &cell, CellsAccum &cells_accum, CellsAccum &local_accum, MeasureAccum &cell_to_measure, const double measure)
static DiscreteExteriorCalculus< dimEmbedded, TNSCellConstIterator::value_type::Point::dimension, TLinearAlgebraBackend, TInteger > createFromNSCells(const TNSCellConstIterator &begin, const TNSCellConstIterator &end, const bool add_border=true)
DiscreteExteriorCalculusFactory(const DiscreteExteriorCalculusFactory &other)
static DiscreteExteriorCalculus< dimEmbedded, TNSCellConstIterator::value_type::Point::dimension, TLinearAlgebraBackend, TInteger > createFromNSCells(const TNSCellConstIterator &begin, const TNSCellConstIterator &end, const TSCellMeasureFunctor &normalFunctor, const double h, const bool add_border=true)
BOOST_CONCEPT_ASSERT((concepts::CInteger< TInteger >))
static void accumulateAllLowerIncidentCells(const KSpace &kspace, const typename CellsAccum::key_type &cell, CellsAccum &cells_accum)
BOOST_CONCEPT_ASSERT((concepts::CDynamicMatrix< DenseMatrix >))
Aim: DiscreteExteriorCalculus represents a calculus in the dec package. This is the main structure in...
Aim: This class is a model of CCellularGridSpaceND. It represents the cubical grid as a cell complex,...
DGtal is the top-level namespace which contains all DGtal functions and types.
Aim: Represent any dynamic sized matrix having sparse or dense representation.
Aim: Represent any dynamic sized column vector having sparse or dense representation.
Aim: Concept checking for Integer Numbers. More precisely, this concept is a refinement of both CEucl...
Definition CInteger.h:88
Aim: Check right multiplication between matrix and vector and internal matrix multiplication....