/*public*/ void PolygonBuilder::add(const vector<DirectedEdge*> *dirEdges, const vector<Node*> *nodes) //throw(TopologyException *) { // PlanarGraph::linkResultDirectedEdgesS(nodes); typedef vector<Node*>::const_iterator NodeIt; for ( NodeIt nodeit = nodes->begin(), nodeEnd = nodes->end(); nodeit != nodeEnd; ++nodeit) { Node *node=*nodeit; DirectedEdgeStar* des = dynamic_cast<DirectedEdgeStar*>(node->getEdges()); assert(des); // This might throw a TopologyException des->linkResultDirectedEdges(); } vector<MaximalEdgeRing*>* maxEdgeRings=buildMaximalEdgeRings(dirEdges); vector<EdgeRing*> freeHoleList; vector<MaximalEdgeRing*> *edgeRings; edgeRings= buildMinimalEdgeRings(maxEdgeRings,&shellList,&freeHoleList); sortShellsAndHoles(edgeRings,&shellList,&freeHoleList); placeFreeHoles(shellList, freeHoleList); delete maxEdgeRings; delete edgeRings; //Assert: every hole on freeHoleList has a shell assigned to it }
/*public*/ void PolygonBuilder::add(const vector<DirectedEdge*> *dirEdges, const vector<Node*> *nodes) //throw(TopologyException *) { PlanarGraph::linkResultDirectedEdges(nodes->begin(), nodes->end()); vector<MaximalEdgeRing*> maxEdgeRings; buildMaximalEdgeRings(dirEdges, maxEdgeRings); vector<EdgeRing*> freeHoleList; vector<MaximalEdgeRing*> edgeRings; buildMinimalEdgeRings(maxEdgeRings, shellList, freeHoleList, edgeRings); sortShellsAndHoles(edgeRings, shellList, freeHoleList); placeFreeHoles(shellList, freeHoleList); //Assert: every hole on freeHoleList has a shell assigned to it }