DGtal  1.2.0
PlaneProbingR1Neighborhood.h
1 
17 #pragma once
18 
31 #if defined(PlaneProbingR1Neighborhood_RECURSES)
32 #error Recursive header files inclusion detected in PlaneProbingR1Neighborhood.h
33 #else // defined(PlaneProbingR1Neighborhood_RECURSES)
35 #define PlaneProbingR1Neighborhood_RECURSES
36 
37 #if !defined PlaneProbingR1Neighborhood_h
39 #define PlaneProbingR1Neighborhood_h
40 
42 // Inclusions
43 #include <iostream>
44 #include "DGtal/base/Common.h"
45 #include "DGtal/geometry/helpers/PlaneProbingEstimatorHelper.h"
46 #include "DGtal/geometry/surfaces/estimation/PlaneProbingRNeighborhood.h"
47 #include "DGtal/kernel/CPointPredicate.h"
49 
50 namespace DGtal
51 {
52 
54  // template class PlaneProbingR1Neighborhood
62  template <typename TPredicate>
64  {
66 
67  // ----------------------- Public types ------------------------------
68  public:
69  using Predicate = TPredicate;
70  using Point = typename TPredicate::Point;
73  using Integer = typename Point::Coordinate;
75 
76  // ----------------------- Standard services ------------------------------
77  public:
82 
90  PlaneProbingR1Neighborhood(Predicate const& aPredicate, Point const& aQ, Triangle const& aM);
91 
96 
102 
108 
115 
122 
123  // ----------------------- Plane Probing services ------------------------------
124  public:
125  virtual HexagonState hexagonState () override;
126 
127  // ----------------------- Interface --------------------------------------
128  public:
129 
134  void selfDisplay ( std::ostream & out ) const;
135 
140  bool isValid() const;
141 
142  // ------------------------- Protected Datas ------------------------------
143  protected:
144 
145  // ------------------------- Private Datas --------------------------------
146  private:
147  mutable std::array<bool, 6> myState;
149  // ------------------------- Hidden services ------------------------------
150  protected:
151 
152  // ------------------------- Internals ------------------------------------
153  private:
157  int getNeighborhoodCode () const;
158 
163  std::pair<PointOnProbingRay, PointOnProbingRay> candidateRay (int index) const;
164 
170  std::vector<PointOnProbingRay> intersectSphereRay (PointOnProbingRay const& aPoint, PointOnProbingRay const& aRay) const;
171 
181  std::vector<PointOnProbingRay> const& aLst) const;
182 
188 
194 
199  PointOnProbingRay closestRayPoint (std::pair<PointOnProbingRay, PointOnProbingRay> const& aRayPoint) const;
200 
201  }; // end of class PlaneProbingR1Neighborhood
202 
203 
210  template <typename TPredicate>
211  std::ostream&
212  operator<< ( std::ostream & out, const PlaneProbingR1Neighborhood<TPredicate> & object );
213 
214 } // namespace DGtal
215 
216 
218 // Includes inline functions.
219 #include "DGtal/geometry/surfaces/estimation/PlaneProbingR1Neighborhood.ih"
220 
221 // //
223 
224 #endif // !defined PlaneProbingR1Neighborhood_h
225 
226 #undef PlaneProbingR1Neighborhood_RECURSES
227 #endif // else defined(PlaneProbingR1Neighborhood_RECURSES)
typename Point::Coordinate Integer
Aim: Represent a way to probe the R-neighborhood, with the R1 optimization, see for details.
std::pair< PointOnProbingRay, PointOnProbingRay > candidateRay(int index) const
PointOnProbingRay closestRayPoint(std::pair< PointOnProbingRay, PointOnProbingRay > const &aRayPoint) const
void selfDisplay(std::ostream &out) const
virtual HexagonState hexagonState() override
PlaneProbingR1Neighborhood & operator=(const PlaneProbingR1Neighborhood &other)=delete
std::vector< PointOnProbingRay > intersectSphereRay(PointOnProbingRay const &aPoint, PointOnProbingRay const &aRay) const
PlaneProbingR1Neighborhood(PlaneProbingR1Neighborhood &&other)=delete
BOOST_CONCEPT_ASSERT((concepts::CPointPredicate< TPredicate >))
PointOnProbingRay closestPointOnRayConstant(PointOnProbingRay const &aRay) const
PlaneProbingR1Neighborhood(const PlaneProbingR1Neighborhood &other)=delete
PointOnProbingRay closestPointOnRayLinear(PointOnProbingRay const &aRay) const
bool isValidIntersectSphereRay(PointOnProbingRay const &aPoint, PointOnProbingRay const &aRay, std::vector< PointOnProbingRay > const &aLst) const
PlaneProbingR1Neighborhood(Predicate const &aPredicate, Point const &aQ, Triangle const &aM)
Aim: Represent a way to probe the R-neighborhood.
typename PlaneProbingNeighborhood< TPredicate >::PointOnProbingRay PointOnProbingRay
typename PlaneProbingNeighborhood< TPredicate >::HexagonState HexagonState
typename PlaneProbingNeighborhood< TPredicate >::Triangle Triangle
DGtal is the top-level namespace which contains all DGtal functions and types.
std::ostream & operator<<(std::ostream &out, const ClosedIntegerHalfPlane< TSpace > &object)
Aim: Defines a predicate on a point.
MyPointD Point
Definition: testClone2.cpp:383
const Point aPoint(3, 4)