From 92964e574cffe97acbbc68c55a28de48d2c157a9 Mon Sep 17 00:00:00 2001 From: Paolo Cignoni cignoni Date: Tue, 27 Nov 2012 12:21:09 +0000 Subject: [PATCH] Removed dependencies from the deprecated linalg.h --- src/meshlabplugins/filter_mls/implicits.h | 38 ++++++++++++++------- src/meshlabplugins/filter_mls/mlsplugin.cpp | 13 +++---- 2 files changed, 30 insertions(+), 21 deletions(-) diff --git a/src/meshlabplugins/filter_mls/implicits.h b/src/meshlabplugins/filter_mls/implicits.h index e200dcbb6..0d1099abf 100644 --- a/src/meshlabplugins/filter_mls/implicits.h +++ b/src/meshlabplugins/filter_mls/implicits.h @@ -26,7 +26,8 @@ #include #include -#include +#include +#include namespace vcg { @@ -159,17 +160,30 @@ protected: { if (m_kdirAreDirty) { - MatrixType copy = m_w; - int mrot = 0; - VectorType evals; - MatrixType evecs; - Jacobi(copy, evals, evecs, mrot); - VectorType evalsAbs(fabs(evals[0]),fabs(evals[0]),fabs(evals[0])); - SortEigenvaluesAndEigenvectors(evals,evecs,true); - m_k1 = evals[0]; - m_k2 = evals[1]; - m_k1dir = evecs[0]; - m_k2dir = evecs[1]; + Eigen::Matrix copy; + m_w.ToEigenMatrix(copy); +// MatrixType copy = m_w; +// int mrot = 0; +// VectorType evals; +// MatrixType evecs; + + Eigen::SelfAdjointEigenSolver eig(copy); + Eigen::Vector3f eval = eig.eigenvalues(); + Eigen::Matrix3f evec = eig.eigenvectors(); + eval = eval.cwiseAbs(); + int ind0,ind1,ind2; + eval.minCoeff(&ind0); + ind1=(ind0+1)%3; + ind2=(ind0+2)%3; + if(eval[ind1]>eval[ind2]) std::swap(ind1,ind2); + +// Jacobi(copy, evals, evecs, mrot); +// VectorType evalsAbs(fabs(evals[0]),fabs(evals[0]),fabs(evals[0])); +// SortEigenvaluesAndEigenvectors(evals,evecs,true); + m_k1 = eval[ind1]; + m_k2 = eval[ind2]; + m_k1dir.FromEigenVector(evec.col(ind1)); + m_k2dir.FromEigenVector(evec.col(ind2)); m_kdirAreDirty = false; } } diff --git a/src/meshlabplugins/filter_mls/mlsplugin.cpp b/src/meshlabplugins/filter_mls/mlsplugin.cpp index 59d80856c..e4f0287e9 100644 --- a/src/meshlabplugins/filter_mls/mlsplugin.cpp +++ b/src/meshlabplugins/filter_mls/mlsplugin.cpp @@ -467,8 +467,8 @@ bool MlsPlugin::applyFilter(QAction* filter, MeshDocument& md, RichParameterSet& { mesh->updateDataMask(MeshModel::MM_FACEFACETOPO); - vcg::tri::UpdateNormals::PerFace(mesh->cm); - vcg::tri::UpdateNormals::NormalizeFace(mesh->cm); + vcg::tri::UpdateNormal::PerFace(mesh->cm); + vcg::tri::UpdateNormal::NormalizePerFace(mesh->cm); //vcg::RefineE >(m.cm, vcg::MidPoint(), edgePred, false, cb); vcg::tri::RefineOddEvenE, tri::EvenPointLoop > (mesh->cm, tri::OddPointLoop(mesh->cm), tri::EvenPointLoop(), edgePred, selectionOnly, cb); @@ -553,7 +553,7 @@ bool MlsPlugin::applyFilter(QAction* filter, MeshDocument& md, RichParameterSet& vcg::Histogramf H; vcg::tri::Stat::ComputePerVertexQualityHistogram(mesh->cm,H); - vcg::tri::UpdateColor::VertexQualityRamp(mesh->cm,H.Percentile(0.01f),H.Percentile(0.99f)); + vcg::tri::UpdateColor::PerVertexQualityRamp(mesh->cm,H.Percentile(0.01f),H.Percentile(0.99f)); } // else if (id & _AFRONT_) // { @@ -607,12 +607,7 @@ bool MlsPlugin::applyFilter(QAction* filter, MeshDocument& md, RichParameterSet& } if (mesh) - { - cb(99, "Update face normals..."); - vcg::tri::UpdateNormals::PerFace(mesh->cm); - cb(100, "Update box..."); - vcg::tri::UpdateBounding::Box(mesh->cm); - } + mesh->UpdateBoxAndNormals(); } // end MLS based stuff