fixed bugs in the harmonic field computing algorithm
This commit is contained in:
parent
323362697a
commit
62ad64fdac
|
@ -41,20 +41,21 @@ public:
|
|||
{
|
||||
typedef Eigen::SparseMatrix<CoeffScalar> SpMat; // sparse matrix type
|
||||
typedef Eigen::Triplet<CoeffScalar> Triple; // triplet type to fill the matrix
|
||||
std::vector<size_t> remap;
|
||||
|
||||
|
||||
RequirePerVertexFlags(m);
|
||||
RequireCompactness(m);
|
||||
RequireFFAdjacency(m);
|
||||
|
||||
if (constraints.empty())
|
||||
return false;
|
||||
|
||||
int n = m.VN();
|
||||
|
||||
// Generate coefficients
|
||||
std::vector<Triple> coeffs; // coefficients of the system
|
||||
std::map<size_t,CoeffScalar> sums; // row sum of the coefficient matrix
|
||||
|
||||
vcg::tri::UpdateFlags<CMeshO>::FaceClearV(m);
|
||||
vcg::tri::UpdateFlags<MeshType>::FaceClearV(m);
|
||||
for (size_t i = 0; i < m.face.size(); ++i)
|
||||
{
|
||||
FaceType & f = m.face[i];
|
||||
|
@ -110,7 +111,7 @@ public:
|
|||
}
|
||||
|
||||
// Perform matrix decomposition
|
||||
Eigen::SimplicialLDLT<Eigen::SparseMatrix<CoeffScalar> > solver;
|
||||
Eigen::SimplicialLDLT<SpMat> solver;
|
||||
solver.compute(laplaceMat);
|
||||
// TODO eventually use another solver (e.g. CHOLMOD for dynamic setups)
|
||||
if(solver.info() != Eigen::Success)
|
||||
|
|
Loading…
Reference in New Issue