Skip to content

Instantly share code, notes, and snippets.

@stephanmg
Created August 30, 2018 12:21
Show Gist options
  • Save stephanmg/bf928766f403b03fad6d39d4ce8f2ca3 to your computer and use it in GitHub Desktop.
Save stephanmg/bf928766f403b03fad6d39d4ce8f2ca3 to your computer and use it in GitHub Desktop.
SelectSubsetElements<Vertex>(sel, sh, si, true);
std::vector<Vertex*> vrts;
vrts.assign(sel.vertices_begin(), sel.vertices_end());
sel.clear();
std::vector<Edge*> edges;
SelectSubsetElements<Edge>(sel, sh, si, true);
edges.assign(sel.edges_begin(), sel.edges_end());
sel.clear();
vrts.push_back(edges[0]->vertex(0));
vrts.push_back(edges[0]->vertex(1));
Vertex* prevVertex = edges[0]->vertex(1);
size_t numIterations = edges.size()-1;
edges.erase(edges.begin());
for (size_t j = 0; j < numIterations; j++) {
for (size_t i = 0; i < edges.size(); i++) {
Edge* nextEdge = edges[i];
if (nextEdge->vertex(0) == prevVertex) {
vrts.push_back(nextEdge->vertex(1));
prevVertex = nextEdge->vertex(1);
edges.erase(edges.begin()+i);
break;
}
if (nextEdge->vertex(1) == prevVertex) {
vrts.push_back(nextEdge->vertex(0));
prevVertex = nextEdge->vertex(0);
edges.erase(edges.begin()+i);
break;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment