// ----------- (Helper) methods for joining nodes void NBNodeCont::generateNodeClusters(SUMOReal maxDist, NodeClusters& into) const { std::set<NBNode*> visited; for (NodeCont::const_iterator i = myNodes.begin(); i != myNodes.end(); i++) { std::vector<NBNode*> toProc; if (visited.find((*i).second) != visited.end()) { continue; } toProc.push_back((*i).second); std::set<NBNode*> c; while (!toProc.empty()) { NBNode* n = toProc.back(); toProc.pop_back(); if (visited.find(n) != visited.end()) { continue; } c.insert(n); visited.insert(n); const EdgeVector& edges = n->getEdges(); for (EdgeVector::const_iterator j = edges.begin(); j != edges.end(); ++j) { NBEdge* e = *j; NBNode* s = 0; if (n->hasIncoming(e)) { s = e->getFromNode(); } else { s = e->getToNode(); } if (visited.find(s) != visited.end()) { continue; } if (e->getLoadedLength() < maxDist) { toProc.push_back(s); } } } if (c.size() < 2) { continue; } into.push_back(c); } }