DGtal 1.3.0
Loading...
Searching...
No Matches
ImplicitPolynomial3Shape.h
1
17#pragma once
18
31#if defined(ImplicitPolynomial3Shape_RECURSES)
32#error Recursive header files inclusion detected in ImplicitPolynomial3Shape.h
33#else // defined(ImplicitPolynomial3Shape_RECURSES)
35#define ImplicitPolynomial3Shape_RECURSES
36
37#if !defined ImplicitPolynomial3Shape_h
39#define ImplicitPolynomial3Shape_h
40
42// Inclusions
43#include <iostream>
44#include "DGtal/base/Common.h"
45#include "DGtal/base/BasicFunctors.h"
46#include "DGtal/base/CPredicate.h"
47#include "DGtal/kernel/NumberTraits.h"
48#include "DGtal/math/MPolynomial.h"
49#include "DGtal/shapes/implicit/CImplicitFunction.h"
51
52namespace DGtal
53{
54
56
66 template < typename TSpace >
68 {
69
70 public:
72 typedef TSpace Space;
73 typedef typename Space::RealPoint RealPoint;
74 typedef typename Space::RealVector RealVector;
75 typedef typename RealPoint::Coordinate Ring;
76 typedef typename Space::Integer Integer;
78 typedef Ring Value;
79
81
89
96
101
108 void init( const Polynomial3 & poly );
109
110 // ----------------------- Interface --------------------------------------
111 public:
112
117 double operator()(const RealPoint &aPoint) const;
118
123 bool isInside(const RealPoint &aPoint) const;
124
132
137 inline
139
140// ------------------------------------------------------------ Added by Anis Benyoub
141
152 inline
153 double meanCurvature( const RealPoint &aPoint ) const;
154
155
169 inline
170 double gaussianCurvature( const RealPoint &aPoint ) const;
171
180 inline
182 double & k1, double & k2 ) const;
183
197 inline
199 RealVector& d1, RealVector& d2 ) const;
200
213 inline
215 const double accuracy = 0.0001,
216 const int maxIter = 20,
217 const double gamma = 0.5 ) const;
218
219
220
221 // ----------------------- Interface --------------------------------------
222 public:
223
228 void selfDisplay ( std::ostream & out ) const;
229
234 bool isValid() const;
235
236 // ------------------------- Protected Datas ------------------------------
237 private:
238 // ------------------------- Private Datas --------------------------------
239 private:
242
243 // Partial deriatives
247
251
255
259
260
261 // Precomputed Polynoms useful for curvature computations
264
265
266 // ------------------------- Hidden services ------------------------------
267 protected:
268
274
275 private:
276
277
278 }; // end of class ImplicitPolynomial3Shape
279
280
287 template <typename T>
288 std::ostream &
289 operator<< ( std::ostream & out, const ImplicitPolynomial3Shape<T> & object );
290
291} // namespace DGtal
292
293
295// Includes inline functions.
296#include "DGtal/shapes/implicit/ImplicitPolynomial3Shape.ih"
297
298// //
300
301#endif // !defined ImplicitPolynomial3Shape_h
302
303#undef ImplicitPolynomial3Shape_RECURSES
304#endif // else defined(ImplicitPolynomial3Shape_RECURSES)
Aim: model of CEuclideanOrientedShape concepts to create a shape from a polynomial.
RealVector gradient(const RealPoint &aPoint) const
ImplicitPolynomial3Shape(const Polynomial3 &poly)
Orientation orientation(const RealPoint &aPoint) const
BOOST_STATIC_ASSERT((Space::dimension==3))
void selfDisplay(std::ostream &out) const
ImplicitPolynomial3Shape< TSpace > Self
double gaussianCurvature(const RealPoint &aPoint) const
double meanCurvature(const RealPoint &aPoint) const
void principalCurvatures(const RealPoint &aPoint, double &k1, double &k2) const
bool isInside(const RealPoint &aPoint) const
double operator()(const RealPoint &aPoint) const
Polynomial3 myPolynomial
The 3-polynomial defining the implicit shape.
ImplicitPolynomial3Shape & operator=(const ImplicitPolynomial3Shape &other)
RealPoint nearestPoint(const RealPoint &aPoint, const double accuracy=0.0001, const int maxIter=20, const double gamma=0.5) const
void principalDirections(const RealPoint &aPoint, RealVector &d1, RealVector &d2) const
void init(const Polynomial3 &poly)
Aim: Implements basic operations that will be used in Point and Vector classes.
Definition: PointVector.h:593
Component Coordinate
Type for Point elements.
Definition: PointVector.h:617
TInteger Integer
Arithmetic ring induced by (+,-,*) and Integer numbers.
Definition: SpaceND.h:102
static const Dimension dimension
static constants to store the dimension.
Definition: SpaceND.h:132
DGtal is the top-level namespace which contains all DGtal functions and types.
std::ostream & operator<<(std::ostream &out, const ClosedIntegerHalfPlane< TSpace > &object)
Orientation
Definition: Common.h:142
const Point aPoint(3, 4)