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;
}
Exemplo n.º 2
0
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;
}