mirror of
https://github.com/lucaspalomodevelop/meshlab.git
synced 2026-03-20 03:16:10 +00:00
Removed dependencies from the deprecated linalg.h
This commit is contained in:
parent
b6b5b4a4c9
commit
92964e574c
@ -26,7 +26,8 @@
|
||||
|
||||
#include <vcg/space/point2.h>
|
||||
#include <vcg/space/point3.h>
|
||||
#include <vcg/math/lin_algebra.h>
|
||||
#include <eigenlib/Eigen/Dense>
|
||||
#include <eigenlib/Eigen/Eigenvalues>
|
||||
|
||||
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<Scalar,3,3> copy;
|
||||
m_w.ToEigenMatrix(copy);
|
||||
// MatrixType copy = m_w;
|
||||
// int mrot = 0;
|
||||
// VectorType evals;
|
||||
// MatrixType evecs;
|
||||
|
||||
Eigen::SelfAdjointEigenSolver<Eigen::Matrix3f> 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;
|
||||
}
|
||||
}
|
||||
|
||||
@ -467,8 +467,8 @@ bool MlsPlugin::applyFilter(QAction* filter, MeshDocument& md, RichParameterSet&
|
||||
{
|
||||
mesh->updateDataMask(MeshModel::MM_FACEFACETOPO);
|
||||
|
||||
vcg::tri::UpdateNormals<CMeshO>::PerFace(mesh->cm);
|
||||
vcg::tri::UpdateNormals<CMeshO>::NormalizeFace(mesh->cm);
|
||||
vcg::tri::UpdateNormal<CMeshO>::PerFace(mesh->cm);
|
||||
vcg::tri::UpdateNormal<CMeshO>::NormalizePerFace(mesh->cm);
|
||||
//vcg::RefineE<CMeshO,vcg::MidPoint<CMeshO> >(m.cm, vcg::MidPoint<CMeshO>(), edgePred, false, cb);
|
||||
vcg::tri::RefineOddEvenE<CMeshO, tri::OddPointLoop<CMeshO>, tri::EvenPointLoop<CMeshO> >
|
||||
(mesh->cm, tri::OddPointLoop<CMeshO>(mesh->cm), tri::EvenPointLoop<CMeshO>(), edgePred, selectionOnly, cb);
|
||||
@ -553,7 +553,7 @@ bool MlsPlugin::applyFilter(QAction* filter, MeshDocument& md, RichParameterSet&
|
||||
|
||||
vcg::Histogramf H;
|
||||
vcg::tri::Stat<CMeshO>::ComputePerVertexQualityHistogram(mesh->cm,H);
|
||||
vcg::tri::UpdateColor<CMeshO>::VertexQualityRamp(mesh->cm,H.Percentile(0.01f),H.Percentile(0.99f));
|
||||
vcg::tri::UpdateColor<CMeshO>::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<CMeshO>::PerFace(mesh->cm);
|
||||
cb(100, "Update box...");
|
||||
vcg::tri::UpdateBounding<CMeshO>::Box(mesh->cm);
|
||||
}
|
||||
mesh->UpdateBoxAndNormals();
|
||||
|
||||
} // end MLS based stuff
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user