DGtal  1.5.beta
LambdaMST2D.h
1 
17 #pragma once
18 
29 #if defined(LAMBDAMST2D_RECURSES)
30 #error Recursive header files inclusion detected in LambdaMST2D.h
31 #else // defined(LAMBDAMST2D_RECURSES)
33 #define LAMBDAMST2D_RECURSES
34 
35 #if !defined LAMBDAMST2D_h
37 #define LAMBDAMST2D_h
38 
39 #include <algorithm>
40 #include <iterator>
41 #include <cmath>
42 #include "DGtal/helpers/StdDefs.h"
43 #include "DGtal/kernel/CSpace.h"
44 #include "DGtal/kernel/PointVector.h"
45 #include "DGtal/geometry/curves/estimation/FunctorsLambdaMST.h"
46 #include "DGtal/geometry/curves/CForwardSegmentComputer.h"
47 #include "DGtal/geometry/curves/estimation/CLMSTTangentFromDSS.h"
48 
49 namespace DGtal {
56  template < typename TSpace, typename TSegmentation, typename Functor >
58  {
59  //Checking concepts
60  BOOST_STATIC_ASSERT(( TSpace::dimension == 2 ));
64  // ----------------------- Types ------------------------------
65  public:
67  typedef TSegmentation Segmentation;
73  typedef typename Functor::Value Value;
75  typedef typename TSpace::RealVector RealVector;
77  typedef typename TSpace::Point Point;
78 
79  // ----------------------- Interface --------------------------------------
80  public:
83 
89  void init ( ConstIterator itb, ConstIterator ite );
90 
96 
101  RealVector eval ( const Point & p );
102 
110  template <typename OutputIterator>
111  OutputIterator eval ( ConstIterator itb, ConstIterator ite, OutputIterator result );
112 
113  // ----------------------- Standard services ------------------------------
114  public:
115 
120  bool isValid ( ) const;
121  // ------------------------- Internals ------------------------------------
122  protected:
123 
131  template <typename OutputIterator>
132  void accumulate ( std::vector < Value > & outValues, OutputIterator & result );
133 
134  // ------------------------- Private Datas --------------------------------
135  private:
136 
154  TSegmentation * dssSegments;
155 
156  }; // end of class LambdaMST2DEstimator
157 
158  //-------------------------------------------------------------------------------------------
159 
160  // Template class LambdaMST2D
166  template < typename DSSSegmentationComputer, typename LambdaFunction = functors::Lambda64Function >
167  class LambdaMST2D:
168  public LambdaMST2DEstimator < Z2i::Space, DSSSegmentationComputer,
169  TangentFromDSS2DFunctor < typename DSSSegmentationComputer::SegmentComputer, LambdaFunction > >
170  {
171  typedef LambdaMST2DEstimator < Z2i::Space, DSSSegmentationComputer,
173 
174  public:
179  };
180 }// namespace DGtal
181 
183 // Includes inline functions
184 #include "DGtal/geometry/curves/estimation/LambdaMST2D.ih"
185 
186 // //
188 
189 #endif // !defined LAMBDAMST2D_h
190 
191 #undef LAMBDAMST2D_RECURSES
192 #endif // else defined(LAMBDAMST2D_RECURSES)
Aim: This class encapsulates its parameter class so that to indicate to the user that the object/poin...
Definition: Alias.h:183
BOOST_STATIC_ASSERT((TSpace::dimension==2))
BOOST_CONCEPT_ASSERT((concepts::CLMSTTangentFromDSS< Functor >))
SegmentComputer::ConstIterator ConstIterator
Type of iterator, at least readable and forward.
Definition: LambdaMST2D.h:71
TSegmentation::SegmentComputer SegmentComputer
Curve segmentation algorithm.
Definition: LambdaMST2D.h:69
Functor::Value Value
Type returned by model of CLMSTTangentFrom2DSS.
Definition: LambdaMST2D.h:73
RealVector eval(const Point &p)
void init(ConstIterator itb, ConstIterator ite)
TSpace::Point Point
Type of 3d real point.
Definition: LambdaMST2D.h:77
OutputIterator eval(ConstIterator itb, ConstIterator ite, OutputIterator result)
LambdaMST2DEstimator()
Default constructor.
void accumulate(std::vector< Value > &outValues, OutputIterator &result)
Accumulate partial results obtained for each point.
void attach(Alias< TSegmentation > SegmentComputer)
TSpace::RealVector RealVector
Type of 3d real vector.
Definition: LambdaMST2D.h:75
TSegmentation Segmentation
Tangential cover algorithm.
Definition: LambdaMST2D.h:67
BOOST_CONCEPT_ASSERT((concepts::CForwardSegmentComputer< typename TSegmentation::SegmentComputer >))
TSegmentation * dssSegments
Definition: LambdaMST2D.h:154
BOOST_CONCEPT_ASSERT((concepts::CSpace< TSpace >))
Aim: Simplify creation of Lambda MST tangent estimator.
Definition: LambdaMST2D.h:170
LambdaMST2DEstimator< Z2i::Space, DSSSegmentationComputer, TangentFromDSS2DFunctor< typename DSSSegmentationComputer::SegmentComputer, LambdaFunction > > Super
Definition: LambdaMST2D.h:172
Space::RealVector RealVector
SpaceND< 2, Integer > Space
Definition: StdDefs.h:75
DGtal is the top-level namespace which contains all DGtal functions and types.
Aim: Defines the concept describing a forward segment computer. Like any model of CIncrementalSegment...
Aim: Defines the concept describing a functor which calculates a direction of the 2D DSS and an eccen...
Aim: Defines the concept describing a digital space, ie a cartesian product of integer lines.
Definition: CSpace.h:106
ArithmeticalDSSComputer< std::vector< Z2i::Point >::const_iterator, int, 4 > SegmentComputer
MyPointD Point
Definition: testClone2.cpp:383
InHalfPlaneBySimple3x3Matrix< Point, double > Functor