Skip to content

Instantly share code, notes, and snippets.

@stephanmg
Last active August 30, 2018 12:12
Show Gist options
  • Save stephanmg/63e36aee0fe6e9963e70df5db573d018 to your computer and use it in GitHub Desktop.
Save stephanmg/63e36aee0fe6e9963e70df5db573d018 to your computer and use it in GitHub Desktop.
Order edges
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 found = 0;
for (size_t j = 0; j < edges.size()-1; j++) {
for (size_t i = 1; i < edges.size(); i++) {
Edge* nextTestEdge = edges[i];
if (nextTestEdge->vertex(0) == prevVertex) {
vrts.push_back(nextTestEdge->vertex(1));
prevVertex = nextTestEdge->vertex(1);
edges.erase(edges.begin() + i);
break;
}
if (nextTestEdge->vertex(1) == prevVertex) {
vrts.push_back(nextTestEdge->vertex(0));
prevVertex = nextTestEdge->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