Go to the documentation of this file.
29 #include <Eigen/Dense>
30 #include <Eigen/Eigenvalues>
34 #pragma warning(disable: 4267 4244)
37 #include <flann/flann.hpp>
69 std::cout<<
"add one pointcloud + its kdtree + the reference point you want to compute the normal on"<<std::endl<<std::endl;
73 normalSecond0_ = NULL;
74 normalSecond1_ = NULL;
75 normalSecond2_ = NULL;
80 CApp(Eigen::Matrix<float, Eigen::Dynamic, 3> *pc, flann::Index<flann::L2<float>>* tree,
float noise)
88 normalSecond0_ = NULL;
89 normalSecond1_ = NULL;
90 normalSecond2_ = NULL;
95 CApp(Eigen::Matrix<float, Eigen::Dynamic, 3> *pc, flann::Index<flann::L2<float>>* tree,
int ref,
float noise)
101 normalFirst0_ = NULL;
102 normalFirst1_ = NULL;
103 normalFirst2_ = NULL;
104 normalSecond0_ = NULL;
105 normalSecond1_ = NULL;
106 normalSecond2_ = NULL;
111 CApp(
float divFact,
float limMu,
float limMuPos, Eigen::Matrix<float, Eigen::Dynamic, 3> *pc, flann::Index<flann::L2<float>>* tree,
int ref,
float noise)
115 limMuPos_ = limMuPos;
120 normalFirst0_ = NULL;
121 normalFirst1_ = NULL;
122 normalFirst2_ = NULL;
123 normalSecond0_ = NULL;
124 normalSecond1_ = NULL;
125 normalSecond2_ = NULL;
133 if(normalFirst0_!= NULL)
134 delete normalFirst0_;
135 if(normalFirst1_!= NULL)
136 delete normalFirst1_;
137 if(normalFirst2_!= NULL)
138 delete normalFirst2_;
139 if(normalSecond0_!= NULL)
140 delete normalSecond0_;
141 if(normalSecond1_!= NULL)
142 delete normalSecond1_;
143 if(normalSecond2_!= NULL)
144 delete normalSecond2_;
145 if(pointFirst_!= NULL)
147 if(pointSecond_!= NULL)
151 void setTree(flann::Index<flann::L2<float>> *t){tree_ = t;}
152 void setPc(Eigen::Matrix<float, Eigen::Dynamic, 3> *pc){pointcloud_ = pc;};
153 void setRef (
int ref);
155 void setPoint(Eigen::Vector3f point);
173 void SearchFLANNTreeKnn(flann::Index<flann::L2<float>>* index,
174 Eigen::Vector3f& input,
175 std::vector<int>& indices,
176 std::vector<float>& dists,
178 void selectNeighborsKnn(
int N);
184 void Optimize(
bool first);
185 void OptimizePos(
bool first,
float thresh_weigh);
187 void evaluate(
int *impact,
float *moyError,
float impacter_weigh);
188 void select_normal();
191 bool isSecondOption();
213 flann::Index<flann::L2<float>>*
tree_;
215 Eigen::Matrix<float, Eigen::Dynamic, 3>
dist_;
233 void ComputeWeights();
239 Eigen::Vector3f getThirdEigenVector(Eigen::Matrix3f& C);
Eigen::Vector3f * normalFirst2_
Eigen::Matrix< float, Eigen::Dynamic, 3 > getNeighborhood()
void setNoise(float noise)
Eigen::Vector3f getEdgeDirection(int it)
flann::Index< flann::L2< float > > * tree_
Eigen::Matrix< float, Eigen::Dynamic, 3 > dist_
Eigen::Vector3f * pointSecond_
void setLimMu(float limMu)
const float likelihood_threshold
void ComputeNormProjError(std::vector< float > &er_proj)
Eigen::Vector3f * normalSecond1_
CApp(float divFact, float limMu, float limMuPos, Eigen::Matrix< float, Eigen::Dynamic, 3 > *pc, flann::Index< flann::L2< float >> *tree, int ref, float noise)
Eigen::Vector3f * normalSecond2_
Eigen::Vector3f * normalFirst1_
Eigen::Matrix< float, Eigen::Dynamic, 3 > neighborhood_
Eigen::Vector3f finalPos_
CApp(Eigen::Matrix< float, Eigen::Dynamic, 3 > *pc, flann::Index< flann::L2< float >> *tree, float noise)
Eigen::Matrix< float, Eigen::Dynamic, 3 > * pointcloud_
Eigen::Vector3f getPoint()
const float min_points_fact
Eigen::Vector3f * normalSecond0_
void setNormal(Eigen::Vector3f norm)
void setNbrNeighbors(int N)
void selectNeighborsRadius(float r)
CApp(Eigen::Matrix< float, Eigen::Dynamic, 3 > *pc, flann::Index< flann::L2< float >> *tree, int ref, float noise)
void setDivFact(float divFact)
Eigen::Vector3f centroid_
const float thresh_weight
std::vector< float > diff_error_
void setPc(Eigen::Matrix< float, Eigen::Dynamic, 3 > *pc)
std::vector< float > error_
Eigen::Vector3f getNormal()
Eigen::Vector3f * normalFirst0_
void setTree(flann::Index< flann::L2< float >> *t)
Eigen::Vector3f finalNormal_
void setParams(float divFact, float curvature)
void setLimMuPos(float limMuPos)
Eigen::Vector3f * pointFirst_
void curvature(FEVV::DataStructures::AIF::AIFMesh *mesh)