// check that for HEFace f the vertices TYPE are connected bool VoronoiDiagramChecker::faceVerticesConnected( HEFace f, VoronoiVertexStatus Vtype ) { VertexVector face_verts = g.face_vertices(f); VertexVector type_verts; BOOST_FOREACH( HEVertex v, face_verts ) { if ( g[v].status == Vtype ) type_verts.push_back(v); // build a vector of all Vtype vertices } assert( !type_verts.empty() ); if (type_verts.size()==1) // set of 1 is allways connected return true; // check that type_verts are connected HEEdge currentEdge = g[f].edge; HEVertex endVertex = g.source(currentEdge); // stop when target here EdgeVector startEdges; bool done = false; while (!done) { HEVertex src = g.source( currentEdge ); HEVertex trg = g.target( currentEdge ); if ( g[src].status != Vtype ) { // seach ?? - Vtype if ( g[trg].status == Vtype ) { // we have found ?? - Vtype startEdges.push_back( currentEdge ); } } currentEdge = g[currentEdge].next; if ( trg == endVertex ) { done = true; } } assert( !startEdges.empty() ); if ( startEdges.size() != 1 ) // when the Vtype vertices are connected, there is exactly one startEdge return false; else return true; }