DGtal
2.2.0
Toggle main menu visibility
Loading...
Searching...
No Matches
MongeJetFittingNormalVectorEstimator.h
1
16
17
#pragma once
18
33
34
#if defined(MongeJetFittingNormalVectorEstimator_RECURSES)
35
#error Recursive header files inclusion detected in MongeJetFittingNormalVectorEstimator.h
36
#else
// defined(MongeJetFittingNormalVectorEstimator_RECURSES)
38
#define MongeJetFittingNormalVectorEstimator_RECURSES
39
40
#if !defined MongeJetFittingNormalVectorEstimator_h
42
#define MongeJetFittingNormalVectorEstimator_h
43
45
// Inclusions
46
#include <iostream>
47
#include <DGtal/base/Common.h>
48
#include <DGtal/topology/SCellsFunctors.h>
49
50
//CGAL
51
#include <CGAL/Cartesian.h>
52
#include <CGAL/Monge_via_jet_fitting.h>
53
#include <vector>
54
56
57
namespace
DGtal
58
{
59
namespace
functors
60
{
62
// template class MongeJetFittingNormalVectorEstimator
80
template
<
typename
TSurfel,
typename
TEmbedder>
81
class
MongeJetFittingNormalVectorEstimator
82
{
83
public
:
84
85
typedef
TSurfel
Surfel
;
86
typedef
TEmbedder
SCellEmbedder
;
87
typedef
typename
SCellEmbedder::RealPoint
RealPoint
;
88
typedef
RealPoint
Quantity
;
89
90
typedef
CGAL::Cartesian<double>
CGALKernel
;
91
typedef
CGALKernel::Point_3
CGALPoint
;
92
typedef
CGALKernel::Vector_3
CGALVector
;
93
typedef
CGAL::Monge_via_jet_fitting<CGALKernel>
CGALMongeViaJet
;
94
typedef
CGALMongeViaJet::Monge_form
CGALMongeForm
;
95
103
MongeJetFittingNormalVectorEstimator
(
ConstAlias<SCellEmbedder>
anEmbedder,
104
const
double
h,
unsigned
int
d = 4):
105
myEmbedder
(&anEmbedder),
myH
(h),
myD
(d)
106
{
107
FATAL_ERROR_MSG(d>=2,
"Polynomial surface degree must be greater than 2"
);
108
}
109
116
void
pushSurfel
(
const
Surfel
& aSurf,
117
const
double
aDistance)
118
{
119
BOOST_VERIFY(aDistance == aDistance);
120
121
RealPoint
p =
myEmbedder
->operator()(aSurf);
122
CGALPoint
pp(p[0]*
myH
,p[1]*
myH
,p[2]*
myH
);
123
myPoints
.push_back(pp);
124
}
125
131
Quantity
eval
( )
132
{
133
CGALMongeForm
monge_form;
134
CGALMongeViaJet
monge_fit;
135
136
monge_form = monge_fit(
myPoints
.begin() ,
myPoints
.end(),
myD
, (2<
myD
)?
myD
: 2);
137
138
CGALVector
v= monge_form.normal_direction ( );
139
140
return
RealPoint
(v.x(),v.y(),v.z());
141
}
142
147
void
reset
()
148
{
149
myPoints
.clear();
150
}
151
152
153
private
:
154
156
const
SCellEmbedder
*
myEmbedder
;
157
159
std::vector<CGALPoint>
myPoints
;
160
161
//Grid step
162
double
myH
;
163
165
unsigned
int
myD
;
166
167
};
// end of class MongeJetFittingNormalVectorEstimator
168
}
169
}
// namespace DGtal
170
171
172
// //
174
175
#endif
// !defined MongeJetFittingNormalVectorEstimator_h
176
177
#undef MongeJetFittingNormalVectorEstimator_RECURSES
178
#endif
// else defined(MongeJetFittingNormalVectorEstimator_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::MongeJetFittingNormalVectorEstimator::Quantity
RealPoint Quantity
Definition
MongeJetFittingNormalVectorEstimator.h:88
DGtal::functors::MongeJetFittingNormalVectorEstimator::eval
Quantity eval()
Definition
MongeJetFittingNormalVectorEstimator.h:131
DGtal::functors::MongeJetFittingNormalVectorEstimator::pushSurfel
void pushSurfel(const Surfel &aSurf, const double aDistance)
Definition
MongeJetFittingNormalVectorEstimator.h:116
DGtal::functors::MongeJetFittingNormalVectorEstimator::Surfel
TSurfel Surfel
Definition
MongeJetFittingNormalVectorEstimator.h:85
DGtal::functors::MongeJetFittingNormalVectorEstimator::MongeJetFittingNormalVectorEstimator
MongeJetFittingNormalVectorEstimator(ConstAlias< SCellEmbedder > anEmbedder, const double h, unsigned int d=4)
Definition
MongeJetFittingNormalVectorEstimator.h:103
DGtal::functors::MongeJetFittingNormalVectorEstimator::myH
double myH
Definition
MongeJetFittingNormalVectorEstimator.h:162
DGtal::functors::MongeJetFittingNormalVectorEstimator::SCellEmbedder
TEmbedder SCellEmbedder
Definition
MongeJetFittingNormalVectorEstimator.h:86
DGtal::functors::MongeJetFittingNormalVectorEstimator::myEmbedder
const SCellEmbedder * myEmbedder
Alias of the geometrical embedder.
Definition
MongeJetFittingNormalVectorEstimator.h:156
DGtal::functors::MongeJetFittingNormalVectorEstimator::RealPoint
SCellEmbedder::RealPoint RealPoint
Definition
MongeJetFittingNormalVectorEstimator.h:87
DGtal::functors::MongeJetFittingNormalVectorEstimator::myD
unsigned int myD
Degree of the polynomial surface to fit.
Definition
MongeJetFittingNormalVectorEstimator.h:165
DGtal::functors::MongeJetFittingNormalVectorEstimator::CGALMongeViaJet
CGAL::Monge_via_jet_fitting< CGALKernel > CGALMongeViaJet
Definition
MongeJetFittingNormalVectorEstimator.h:93
DGtal::functors::MongeJetFittingNormalVectorEstimator::reset
void reset()
Definition
MongeJetFittingNormalVectorEstimator.h:147
DGtal::functors::MongeJetFittingNormalVectorEstimator::CGALKernel
CGAL::Cartesian< double > CGALKernel
Definition
MongeJetFittingNormalVectorEstimator.h:90
DGtal::functors::MongeJetFittingNormalVectorEstimator::CGALMongeForm
CGALMongeViaJet::Monge_form CGALMongeForm
Definition
MongeJetFittingNormalVectorEstimator.h:94
DGtal::functors::MongeJetFittingNormalVectorEstimator::myPoints
std::vector< CGALPoint > myPoints
Array of CGAL points.
Definition
MongeJetFittingNormalVectorEstimator.h:159
DGtal::functors::MongeJetFittingNormalVectorEstimator::CGALVector
CGALKernel::Vector_3 CGALVector
Definition
MongeJetFittingNormalVectorEstimator.h:92
DGtal::functors::MongeJetFittingNormalVectorEstimator::CGALPoint
CGALKernel::Point_3 CGALPoint
Definition
MongeJetFittingNormalVectorEstimator.h:91
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
MongeJetFittingNormalVectorEstimator.h
Generated on
for DGtal by
1.18.0