DGtal  0.6.devel
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
StarShaped3D.h
1 
17 #pragma once
18 
31 #if defined(StarShaped3D_RECURSES)
32 #error Recursive header files inclusion detected in StarShaped3D.h
33 #else // defined(StarShaped3D_RECURSES)
34 
35 #define StarShaped3D_RECURSES
36 
37 #if !defined StarShaped3D_h
38 
39 #define StarShaped3D_h
40 
42 // Inclusions
43 #include <iostream>
44 #include "DGtal/base/Common.h"
45 #include "DGtal/kernel/NumberTraits.h"
47 
48 namespace DGtal
49 {
50 
52  // template class StarShaped3D
70  template <typename TSpace>
72  {
73 
74  public:
75  typedef TSpace Space;
76  typedef typename Space::RealPoint RealPoint;
77  typedef pair<double,double> AngularCoordinates;
78 
83  {}
84 
88  ~StarShaped3D();
89 
90  // ------------------------- Implemented services -------------------------
91  public:
95  virtual RealPoint interiorPoint() const
96  {
97  return center();
98  }
99 
100  // ------------------------- Abstract services ----------------------------
101  public:
102 
107  virtual RealPoint getLowerBound() const = 0;
108 
113  virtual RealPoint getUpperBound() const = 0;
114 
118  virtual RealPoint center() const = 0;
119 
126  virtual AngularCoordinates parameter( const RealPoint & p ) const = 0;
127 
135  virtual RealPoint x( const AngularCoordinates t ) const = 0;
136 
143  virtual RealPoint gradient( const AngularCoordinates t) const = 0;
144 
151  virtual RealPoint rt( const AngularCoordinates t) const = 0;
152 
153 
154 
161  virtual RealPoint rp( const AngularCoordinates t) const = 0;
162 
163 
171  virtual RealPoint rtt( const AngularCoordinates t) const = 0;
172 
173 
174 
182  virtual RealPoint rpp( const AngularCoordinates t) const = 0;
183 
191  virtual RealPoint rtp( const AngularCoordinates t) const = 0;
192 
193 
194 
195 
196  // ------------------------- star-shaped services -------------------------
197  public:
198 
199 
206  virtual bool isInside( const RealPoint & p ) const;
207 
208 
216  virtual Orientation orientation( const RealPoint &p) const;
217 
218 
226  /*
227  virtual RealPoint tangent( AngularCoordinates t ) const;
228  */
229 
230 
231 
232 
240  virtual RealPoint normal( AngularCoordinates t ) const;
241 
250  virtual double gaussianCurvature( AngularCoordinates t) const;
251 
252 
261  virtual double meanCurvature( AngularCoordinates t) const;
262 
263 
274  virtual double arclength( AngularCoordinates t1,
275  AngularCoordinates t2,
276  unsigned int nb ) const;
277 
278 
289  virtual double surfacelength( AngularCoordinates t1,
290  AngularCoordinates t2,
291  unsigned int nb ) const;
292 
293 
294 
295  // ----------------------- Interface --------------------------------------
296  public:
297 
302  void selfDisplay ( std::ostream & out ) const;
303 
308  bool isValid() const;
309 
310  // ------------------------- Protected Datas ------------------------------
311  private:
312  // ------------------------- Private Datas --------------------------------
313  private:
314 
315  // ------------------------- Hidden services ------------------------------
316  protected:
317 
322  //StarShaped3D();
323 
324  private:
325 
332  StarShaped3D & operator= ( const StarShaped3D & other );
333 
334  // ------------------------- Internals ------------------------------------
335  private:
336 
337  }; // end of class StarShaped3D
338 
339 
346  template <typename T>
347  std::ostream&
348  operator<< ( std::ostream & out, const StarShaped3D<T> & object );
349 
350 } // namespace DGtal
351 
352 
354 // Includes inline functions.
355 #include "StarShaped3D.ih"
356 
357 // //
359 
360 #endif // !defined StarShaped3D_h
361 
362 #undef StarShaped3D_RECURSES
363 #endif // else defined(StarShaped3D_RECURSES)