DGtal
2.2.0
Toggle main menu visibility
Loading...
Searching...
No Matches
MongeJetFittingPrincipalCurvaturesEstimator.h
1
16
17
#pragma once
18
33
34
#if defined(MongeJetFittingPrincipalCurvaturesEstimator_RECURSES)
35
#error Recursive header files inclusion detected in MongeJetFittingPrincipalCurvaturesEstimator.h
36
#else
// defined(MongeJetFittingPrincipalCurvaturesEstimator_RECURSES)
38
#define MongeJetFittingPrincipalCurvaturesEstimator_RECURSES
39
40
#if !defined MongeJetFittingPrincipalCurvaturesEstimator_h
42
#define MongeJetFittingPrincipalCurvaturesEstimator_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 MongeJetFittingPrincipalCurvaturesEstimator
76
template
<
typename
TSurfel,
typename
TEmbedder>
77
class
MongeJetFittingPrincipalCurvaturesEstimator
78
{
79
public
:
80
81
typedef
TSurfel
Surfel
;
82
typedef
TEmbedder
SCellEmbedder
;
83
typedef
std::pair<double, double>
Quantity
;
84
typedef
typename
SCellEmbedder::RealPoint
RealPoint
;
85
86
typedef
CGAL::Cartesian<double>
CGALKernel
;
87
typedef
CGALKernel::Point_3
CGALPoint
;
88
typedef
CGAL::Monge_via_jet_fitting<CGALKernel>
CGALMongeViaJet
;
89
typedef
CGALMongeViaJet::Monge_form
CGALMongeForm
;
90
91
99
MongeJetFittingPrincipalCurvaturesEstimator
(
ConstAlias<SCellEmbedder>
anEmbedder,
const
double
h,
unsigned
int
d = 4):
100
myEmbedder
(&anEmbedder),
myH
(h),
myD
(d)
101
{
102
FATAL_ERROR_MSG(d>=2,
"Polynomial surface degree must be greater than 2"
);
103
}
104
111
void
pushSurfel
(
const
Surfel
& aSurf,
112
const
double
aDistance)
113
{
114
BOOST_VERIFY(aDistance==aDistance);
115
116
RealPoint
p =
myEmbedder
->operator()(aSurf);
117
CGALPoint
pp(p[0]*
myH
,p[1]*
myH
,p[2]*
myH
);
118
myPoints
.push_back(pp);
119
}
120
126
Quantity
eval
()
127
{
128
CGALMongeForm
monge_form;
129
CGALMongeViaJet
monge_fit;
130
131
monge_form = monge_fit(
myPoints
.begin() ,
myPoints
.end(),
myD
, (2<
myD
)?
myD
: 2);
132
133
double
k1 = monge_form.principal_curvatures ( 0 );
134
double
k2 = monge_form.principal_curvatures ( 1 );
135
Quantity
result;
136
result.first = k1;
137
result.second = k2;
138
return
result;
139
}
140
145
void
reset
()
146
{
147
myPoints
.clear();
148
}
149
150
151
private
:
152
154
const
SCellEmbedder
*
myEmbedder
;
155
157
std::vector<CGALPoint>
myPoints
;
158
160
double
myH
;
161
163
unsigned
int
myD
;
164
165
166
};
// end of class MongeJetFittingPrincipalCurvaturesEstimator
167
}
168
}
// namespace DGtal
169
170
171
// //
173
174
#endif
// !defined MongeJetFittingPrincipalCurvaturesEstimator_h
175
176
#undef MongeJetFittingPrincipalCurvaturesEstimator_RECURSES
177
#endif
// else defined(MongeJetFittingPrincipalCurvaturesEstimator_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::MongeJetFittingPrincipalCurvaturesEstimator::myD
unsigned int myD
Degree of the polynomial surface to fit.
Definition
MongeJetFittingPrincipalCurvaturesEstimator.h:163
DGtal::functors::MongeJetFittingPrincipalCurvaturesEstimator::CGALMongeViaJet
CGAL::Monge_via_jet_fitting< CGALKernel > CGALMongeViaJet
Definition
MongeJetFittingPrincipalCurvaturesEstimator.h:88
DGtal::functors::MongeJetFittingPrincipalCurvaturesEstimator::CGALMongeForm
CGALMongeViaJet::Monge_form CGALMongeForm
Definition
MongeJetFittingPrincipalCurvaturesEstimator.h:89
DGtal::functors::MongeJetFittingPrincipalCurvaturesEstimator::myEmbedder
const SCellEmbedder * myEmbedder
Alias of the geometrical embedder.
Definition
MongeJetFittingPrincipalCurvaturesEstimator.h:154
DGtal::functors::MongeJetFittingPrincipalCurvaturesEstimator::myH
double myH
Grid Step.
Definition
MongeJetFittingPrincipalCurvaturesEstimator.h:160
DGtal::functors::MongeJetFittingPrincipalCurvaturesEstimator::RealPoint
SCellEmbedder::RealPoint RealPoint
Definition
MongeJetFittingPrincipalCurvaturesEstimator.h:84
DGtal::functors::MongeJetFittingPrincipalCurvaturesEstimator::MongeJetFittingPrincipalCurvaturesEstimator
MongeJetFittingPrincipalCurvaturesEstimator(ConstAlias< SCellEmbedder > anEmbedder, const double h, unsigned int d=4)
Definition
MongeJetFittingPrincipalCurvaturesEstimator.h:99
DGtal::functors::MongeJetFittingPrincipalCurvaturesEstimator::SCellEmbedder
TEmbedder SCellEmbedder
Definition
MongeJetFittingPrincipalCurvaturesEstimator.h:82
DGtal::functors::MongeJetFittingPrincipalCurvaturesEstimator::pushSurfel
void pushSurfel(const Surfel &aSurf, const double aDistance)
Definition
MongeJetFittingPrincipalCurvaturesEstimator.h:111
DGtal::functors::MongeJetFittingPrincipalCurvaturesEstimator::CGALKernel
CGAL::Cartesian< double > CGALKernel
Definition
MongeJetFittingPrincipalCurvaturesEstimator.h:86
DGtal::functors::MongeJetFittingPrincipalCurvaturesEstimator::CGALPoint
CGALKernel::Point_3 CGALPoint
Definition
MongeJetFittingPrincipalCurvaturesEstimator.h:87
DGtal::functors::MongeJetFittingPrincipalCurvaturesEstimator::Surfel
TSurfel Surfel
Definition
MongeJetFittingPrincipalCurvaturesEstimator.h:81
DGtal::functors::MongeJetFittingPrincipalCurvaturesEstimator::eval
Quantity eval()
Definition
MongeJetFittingPrincipalCurvaturesEstimator.h:126
DGtal::functors::MongeJetFittingPrincipalCurvaturesEstimator::Quantity
std::pair< double, double > Quantity
Definition
MongeJetFittingPrincipalCurvaturesEstimator.h:83
DGtal::functors::MongeJetFittingPrincipalCurvaturesEstimator::myPoints
std::vector< CGALPoint > myPoints
Array of CGAL points.
Definition
MongeJetFittingPrincipalCurvaturesEstimator.h:157
DGtal::functors::MongeJetFittingPrincipalCurvaturesEstimator::reset
void reset()
Definition
MongeJetFittingPrincipalCurvaturesEstimator.h:145
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
MongeJetFittingPrincipalCurvaturesEstimator.h
Generated on
for DGtal by
1.18.0