Directional
Directional copied to clipboard
Bug: Inconsistency of innerEdges(init in dual_cycles.h) and isBoundaryEdge(init in trimesh.h)
For mesh with boundary, we only define angles on inner/non-boundary edges when calling functions in index_prescription.h , so we need to map all inner edges into a new array.
in dual_cycles.h
, line 187, you write:
for (int i=0;i<EV.rows();i++)
if (!((isBoundary(EV(i,0)))&&(isBoundary(EV(i,1)))))
innerEdgesList.push_back(i);
in TriMesh.h
, line 81, you write:
std::vector<int> innerEdgesList, boundEdgesList;
isBoundaryVertex=Eigen::VectorXi::Zero(V.size());
isBoundaryEdge=Eigen::VectorXi::Zero(EV.size());
for (int i = 0; i < EF.rows(); i++) {
if ((EF(i, 1) == -1) || (EF(i, 0) == -1)) {
boundEdgesList.push_back(i);
isBoundaryEdge(i)=1;
isBoundaryVertex(EV(i,0))=1;
isBoundaryVertex(EV(i,1))=1;
}else
innerEdgesList.push_back(i);
}
But in such mesh, these two definitions are inconsistent, an edge connecting 2 boundary vertices is not a boundary edge, more reasonable one is in TriMesh.h