DGtal
2.2.0
Toggle main menu visibility
Loading...
Searching...
No Matches
MongeJetFittingMeanCurvatureEstimator.h
1
16
17
#pragma once
18
33
34
#if defined(MongeJetFittingMeanCurvatureEstimator_RECURSES)
35
#error Recursive header files inclusion detected in MongeJetFittingMeanCurvatureEstimator.h
36
#else
// defined(MongeJetFittingMeanCurvatureEstimator_RECURSES)
38
#define MongeJetFittingMeanCurvatureEstimator_RECURSES
39
40
#if !defined MongeJetFittingMeanCurvatureEstimator_h
42
#define MongeJetFittingMeanCurvatureEstimator_h
43
45
// Inclusions
46
#include <iostream>
47
#include <DGtal/base/Common.h>
48
#include <DGtal/topology/SCellsFunctors.h>
49
50
#ifndef DGTAL_WITH_CGAL
51
#error You need to have activated CGAL (DGTAL_WITH_CGAL) to include this file.
52
#endif
53
54
//CGAL
55
#include <CGAL/Cartesian.h>
56
#include <CGAL/Monge_via_jet_fitting.h>
57
#include <vector>
58
60
61
namespace
DGtal
62
{
63
namespace
functors
64
{
66
// template class MongeJetFittingMeanCurvatureEstimator
89
template
<
typename
TSurfel,
typename
TEmbedder>
90
class
MongeJetFittingMeanCurvatureEstimator
91
{
92
public
:
93
94
typedef
TSurfel
Surfel
;
95
typedef
TEmbedder
SCellEmbedder
;
96
typedef
double
Quantity
;
97
typedef
typename
SCellEmbedder::RealPoint
RealPoint
;
98
99
typedef
CGAL::Cartesian<double>
CGALKernel
;
100
typedef
CGALKernel::Point_3
CGALPoint
;
101
typedef
CGAL::Monge_via_jet_fitting<CGALKernel>
CGALMongeViaJet
;
102
typedef
CGALMongeViaJet::Monge_form
CGALMongeForm
;
103
111
MongeJetFittingMeanCurvatureEstimator
(
ConstAlias<SCellEmbedder>
anEmbedder,
112
const
double
h,
unsigned
int
d = 4):
113
myEmbedder
(&anEmbedder),
myH
(h),
myD
(d)
114
{
115
FATAL_ERROR_MSG(d>=2,
"Polynomial surface degree must be greater than 2"
);
116
}
117
124
void
pushSurfel
(
const
Surfel
& aSurf,
125
const
double
aDistance)
126
{
127
BOOST_VERIFY(aDistance==aDistance);
128
129
RealPoint
p =
myEmbedder
->operator()(aSurf);
130
CGALPoint
pp(p[0]*
myH
,p[1]*
myH
,p[2]*
myH
);
131
myPoints
.push_back(pp);
132
}
133
139
Quantity
eval
()
140
{
141
CGALMongeForm
monge_form;
142
CGALMongeViaJet
monge_fit;
143
144
monge_form = monge_fit(
myPoints
.begin() ,
myPoints
.end(),
myD
, (2<
myD
)?
myD
: 2);
145
146
double
k1 = monge_form.principal_curvatures ( 0 );
147
double
k2 = monge_form.principal_curvatures ( 1 );
148
return
0.5*(k1+k2);
149
}
150
155
void
reset
()
156
{
157
myPoints
.clear();
158
}
159
160
161
private
:
162
164
const
SCellEmbedder
*
myEmbedder
;
165
167
std::vector<CGALPoint>
myPoints
;
168
170
double
myH
;
171
173
unsigned
int
myD
;
174
175
};
// end of class MongeJetFittingMeanCurvatureEstimator
176
}
177
}
// namespace DGtal
178
179
180
// //
182
183
#endif
// !defined MongeJetFittingMeanCurvatureEstimator_h
184
185
#undef MongeJetFittingMeanCurvatureEstimator_RECURSES
186
#endif
// else defined(MongeJetFittingMeanCurvatureEstimator_RECURSES)
DGtal::ConstAlias
Aim: This class encapsulates its parameter class so that to indicate to the user that the object/poin...
Definition
ConstAlias.h:187
DGtal::functors::MongeJetFittingMeanCurvatureEstimator::MongeJetFittingMeanCurvatureEstimator
MongeJetFittingMeanCurvatureEstimator(ConstAlias< SCellEmbedder > anEmbedder, const double h, unsigned int d=4)
Definition
MongeJetFittingMeanCurvatureEstimator.h:111
DGtal::functors::MongeJetFittingMeanCurvatureEstimator::pushSurfel
void pushSurfel(const Surfel &aSurf, const double aDistance)
Definition
MongeJetFittingMeanCurvatureEstimator.h:124
DGtal::functors::MongeJetFittingMeanCurvatureEstimator::SCellEmbedder
TEmbedder SCellEmbedder
Definition
MongeJetFittingMeanCurvatureEstimator.h:95
DGtal::functors::MongeJetFittingMeanCurvatureEstimator::CGALMongeForm
CGALMongeViaJet::Monge_form CGALMongeForm
Definition
MongeJetFittingMeanCurvatureEstimator.h:102
DGtal::functors::MongeJetFittingMeanCurvatureEstimator::myEmbedder
const SCellEmbedder * myEmbedder
Alias of the geometrical embedder.
Definition
MongeJetFittingMeanCurvatureEstimator.h:164
DGtal::functors::MongeJetFittingMeanCurvatureEstimator::CGALMongeViaJet
CGAL::Monge_via_jet_fitting< CGALKernel > CGALMongeViaJet
Definition
MongeJetFittingMeanCurvatureEstimator.h:101
DGtal::functors::MongeJetFittingMeanCurvatureEstimator::myH
double myH
Grid step.
Definition
MongeJetFittingMeanCurvatureEstimator.h:170
DGtal::functors::MongeJetFittingMeanCurvatureEstimator::Quantity
double Quantity
Definition
MongeJetFittingMeanCurvatureEstimator.h:96
DGtal::functors::MongeJetFittingMeanCurvatureEstimator::myPoints
std::vector< CGALPoint > myPoints
Array of CGAL points.
Definition
MongeJetFittingMeanCurvatureEstimator.h:167
DGtal::functors::MongeJetFittingMeanCurvatureEstimator::myD
unsigned int myD
Degree of the polynomial surface to fit.
Definition
MongeJetFittingMeanCurvatureEstimator.h:173
DGtal::functors::MongeJetFittingMeanCurvatureEstimator::CGALPoint
CGALKernel::Point_3 CGALPoint
Definition
MongeJetFittingMeanCurvatureEstimator.h:100
DGtal::functors::MongeJetFittingMeanCurvatureEstimator::Surfel
TSurfel Surfel
Definition
MongeJetFittingMeanCurvatureEstimator.h:94
DGtal::functors::MongeJetFittingMeanCurvatureEstimator::eval
Quantity eval()
Definition
MongeJetFittingMeanCurvatureEstimator.h:139
DGtal::functors::MongeJetFittingMeanCurvatureEstimator::RealPoint
SCellEmbedder::RealPoint RealPoint
Definition
MongeJetFittingMeanCurvatureEstimator.h:97
DGtal::functors::MongeJetFittingMeanCurvatureEstimator::CGALKernel
CGAL::Cartesian< double > CGALKernel
Definition
MongeJetFittingMeanCurvatureEstimator.h:99
DGtal::functors::MongeJetFittingMeanCurvatureEstimator::reset
void reset()
Definition
MongeJetFittingMeanCurvatureEstimator.h:155
DGtal::functors
functors namespace gathers all DGtal functors.
Definition
BasicBoolFunctors.h:49
DGtal
DGtal is the top-level namespace which contains all DGtal functions and types.
Definition
ClosedIntegerHalfPlane.h:49
src
DGtal
geometry
surfaces
estimation
estimationFunctors
MongeJetFittingMeanCurvatureEstimator.h
Generated on
for DGtal by
1.18.0