DGtal
2.2.0
Toggle main menu visibility
Loading...
Searching...
No Matches
ImplicitPolynomial3Shape.h
1
16
17
#pragma once
18
30
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
52
namespace
DGtal
53
{
54
56
65
66
template
<
typename
TSpace >
67
class
ImplicitPolynomial3Shape
68
{
69
70
public
:
71
typedef
ImplicitPolynomial3Shape<TSpace>
Self
;
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
;
77
typedef
MPolynomial< 3, Ring >
Polynomial3
;
78
typedef
Ring
Value
;
79
80
BOOST_STATIC_ASSERT
((
Space::dimension
== 3 ));
81
88
ImplicitPolynomial3Shape
(
const
Polynomial3
& poly );
89
95
ImplicitPolynomial3Shape
&
operator=
(
const
ImplicitPolynomial3Shape
& other );
96
100
~ImplicitPolynomial3Shape
();
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
131
Orientation
orientation
(
const
RealPoint
&
aPoint
)
const
;
132
137
inline
138
RealVector
gradient
(
const
RealPoint
&
aPoint
)
const
;
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
181
void
principalCurvatures
(
const
RealPoint
&
aPoint
,
182
double
& k1,
double
& k2 )
const
;
183
197
inline
198
void
principalDirections
(
const
RealPoint
&
aPoint
,
199
RealVector
& d1,
RealVector
& d2 )
const
;
200
213
inline
214
RealPoint
nearestPoint
(
const
RealPoint
&
aPoint
,
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 Data ------------------------------
237
private
:
238
// ------------------------- Private Data --------------------------------
239
private
:
241
Polynomial3
myPolynomial
;
242
243
// Partial deriatives
244
Polynomial3
myFx
;
245
Polynomial3
myFy
;
246
Polynomial3
myFz
;
247
248
Polynomial3
myFxx
;
249
Polynomial3
myFxy
;
250
Polynomial3
myFxz
;
251
252
Polynomial3
myFyx
;
253
Polynomial3
myFyy
;
254
Polynomial3
myFyz
;
255
256
Polynomial3
myFzx
;
257
Polynomial3
myFzy
;
258
Polynomial3
myFzz
;
259
260
261
// Precomputed Polynoms useful for curvature computations
262
Polynomial3
myUpPolynome
;
263
Polynomial3
myLowPolynome
;
264
265
266
// ------------------------- Hidden services ------------------------------
267
protected
:
268
273
ImplicitPolynomial3Shape
();
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)
DGtal::ImplicitPolynomial3Shape
Aim: model of CEuclideanOrientedShape concepts to create a shape from a polynomial.
Definition
ImplicitPolynomial3Shape.h:68
DGtal::ImplicitPolynomial3Shape::gradient
RealVector gradient(const RealPoint &aPoint) const
DGtal::ImplicitPolynomial3Shape< Space >::myFxy
Polynomial3 myFxy
Definition
ImplicitPolynomial3Shape.h:249
DGtal::ImplicitPolynomial3Shape::ImplicitPolynomial3Shape
ImplicitPolynomial3Shape(const Polynomial3 &poly)
DGtal::ImplicitPolynomial3Shape::orientation
Orientation orientation(const RealPoint &aPoint) const
DGtal::ImplicitPolynomial3Shape< Space >::Integer
Space::Integer Integer
Definition
ImplicitPolynomial3Shape.h:76
DGtal::ImplicitPolynomial3Shape< Space >::myFzx
Polynomial3 myFzx
Definition
ImplicitPolynomial3Shape.h:256
DGtal::ImplicitPolynomial3Shape< Space >::myFzy
Polynomial3 myFzy
Definition
ImplicitPolynomial3Shape.h:257
DGtal::ImplicitPolynomial3Shape< Space >::RealPoint
Space::RealPoint RealPoint
Definition
ImplicitPolynomial3Shape.h:73
DGtal::ImplicitPolynomial3Shape::BOOST_STATIC_ASSERT
BOOST_STATIC_ASSERT((Space::dimension==3))
DGtal::ImplicitPolynomial3Shape::selfDisplay
void selfDisplay(std::ostream &out) const
DGtal::ImplicitPolynomial3Shape< Space >::Self
ImplicitPolynomial3Shape< Space > Self
Definition
ImplicitPolynomial3Shape.h:71
DGtal::ImplicitPolynomial3Shape< Space >::myFy
Polynomial3 myFy
Definition
ImplicitPolynomial3Shape.h:245
DGtal::ImplicitPolynomial3Shape::gaussianCurvature
double gaussianCurvature(const RealPoint &aPoint) const
DGtal::ImplicitPolynomial3Shape< Space >::myUpPolynome
Polynomial3 myUpPolynome
Definition
ImplicitPolynomial3Shape.h:262
DGtal::ImplicitPolynomial3Shape::meanCurvature
double meanCurvature(const RealPoint &aPoint) const
DGtal::ImplicitPolynomial3Shape< Space >::RealVector
Space::RealVector RealVector
Definition
ImplicitPolynomial3Shape.h:74
DGtal::ImplicitPolynomial3Shape< Space >::myFxx
Polynomial3 myFxx
Definition
ImplicitPolynomial3Shape.h:248
DGtal::ImplicitPolynomial3Shape< Space >::myFyx
Polynomial3 myFyx
Definition
ImplicitPolynomial3Shape.h:252
DGtal::ImplicitPolynomial3Shape::isValid
bool isValid() const
DGtal::ImplicitPolynomial3Shape< Space >::myFzz
Polynomial3 myFzz
Definition
ImplicitPolynomial3Shape.h:258
DGtal::ImplicitPolynomial3Shape< Space >::Polynomial3
MPolynomial< 3, Ring > Polynomial3
Definition
ImplicitPolynomial3Shape.h:77
DGtal::ImplicitPolynomial3Shape::principalCurvatures
void principalCurvatures(const RealPoint &aPoint, double &k1, double &k2) const
DGtal::ImplicitPolynomial3Shape::isInside
bool isInside(const RealPoint &aPoint) const
DGtal::ImplicitPolynomial3Shape< Space >::Space
Space Space
Definition
ImplicitPolynomial3Shape.h:72
DGtal::ImplicitPolynomial3Shape::operator()
double operator()(const RealPoint &aPoint) const
DGtal::ImplicitPolynomial3Shape< Space >::myPolynomial
Polynomial3 myPolynomial
Definition
ImplicitPolynomial3Shape.h:241
DGtal::ImplicitPolynomial3Shape< Space >::myFyz
Polynomial3 myFyz
Definition
ImplicitPolynomial3Shape.h:254
DGtal::ImplicitPolynomial3Shape::operator=
ImplicitPolynomial3Shape & operator=(const ImplicitPolynomial3Shape &other)
DGtal::ImplicitPolynomial3Shape::nearestPoint
RealPoint nearestPoint(const RealPoint &aPoint, const double accuracy=0.0001, const int maxIter=20, const double gamma=0.5) const
DGtal::ImplicitPolynomial3Shape< Space >::myFxz
Polynomial3 myFxz
Definition
ImplicitPolynomial3Shape.h:250
DGtal::ImplicitPolynomial3Shape< Space >::myFz
Polynomial3 myFz
Definition
ImplicitPolynomial3Shape.h:246
DGtal::ImplicitPolynomial3Shape::~ImplicitPolynomial3Shape
~ImplicitPolynomial3Shape()
DGtal::ImplicitPolynomial3Shape< Space >::Ring
RealPoint::Coordinate Ring
Definition
ImplicitPolynomial3Shape.h:75
DGtal::ImplicitPolynomial3Shape< Space >::myFx
Polynomial3 myFx
Definition
ImplicitPolynomial3Shape.h:244
DGtal::ImplicitPolynomial3Shape::principalDirections
void principalDirections(const RealPoint &aPoint, RealVector &d1, RealVector &d2) const
DGtal::ImplicitPolynomial3Shape< Space >::myLowPolynome
Polynomial3 myLowPolynome
Definition
ImplicitPolynomial3Shape.h:263
DGtal::ImplicitPolynomial3Shape< Space >::myFyy
Polynomial3 myFyy
Definition
ImplicitPolynomial3Shape.h:253
DGtal::ImplicitPolynomial3Shape< Space >::Value
Ring Value
Definition
ImplicitPolynomial3Shape.h:78
DGtal::ImplicitPolynomial3Shape::ImplicitPolynomial3Shape
ImplicitPolynomial3Shape()
DGtal::ImplicitPolynomial3Shape::init
void init(const Polynomial3 &poly)
DGtal::MPolynomial< 3, Ring >
DGtal::PointVector< dim, double >::Coordinate
Component Coordinate
Definition
PointVector.h:617
DGtal::SpaceND< 3, Integer >::Integer
Integer Integer
Definition
SpaceND.h:102
DGtal::SpaceND< 3, Integer >::RealPoint
PointVector< dim, double > RealPoint
Definition
SpaceND.h:117
DGtal::SpaceND< 3, Integer >::dimension
static const Dimension dimension
Definition
SpaceND.h:132
DGtal::SpaceND< 3, Integer >::RealVector
PointVector< dim, double > RealVector
Definition
SpaceND.h:121
DGtal
DGtal is the top-level namespace which contains all DGtal functions and types.
Definition
ClosedIntegerHalfPlane.h:49
DGtal::operator<<
std::ostream & operator<<(std::ostream &out, const ClosedIntegerHalfPlane< TSpace > &object)
DGtal::Orientation
Orientation
Definition
Common.h:124
aPoint
const Point aPoint(3, 4)
src
DGtal
shapes
implicit
ImplicitPolynomial3Shape.h
Generated on
for DGtal by
1.18.0