STTriangleMesh* QuadricErrorSimplification::simplify(STTriangleMesh* original, int maxTriangles){ generateQMatrices(original); populateEdges(original); std::sort(edges.begin(), edges.end(), PComp<Edge>); while (original->mFaces.size()>maxTriangles){ printf("comparison %f,%f\n",double(original->mFaces.size()),double(maxTriangles)); contractEdge(original,edges[0]); std::sort(edges.begin(), edges.end(), PComp<Edge>); } return original; }
vector<LPEdge> sampleLRTInverse(vector<ModEdge> lGraph, bool silent) { vector<LPEdge> tree; while (lGraph.size() != 0) { ModEdge e = lGraph.back(); double p = prob(lGraph, e); if (should(p)) { lGraph = contractEdge(lGraph, e); tree.push_back(LPEdge(e.orig0, e.orig1, e.weight)); } else lGraph.pop_back(); } return tree; }