Ejemplo n.º 1
0
int  _MarkPathAlongBicompExtFace(graphP theGraph, int startVert, int endVert)
{
int  Z, ZPrevLink, ZPrevArc;

/* Mark the start vertex (and if it is a root copy, mark the parent copy too. */

     theGraph->G[startVert].visited = 1;

/* For each vertex visited after the start vertex, mark the vertex and the
        edge used to get there.  Stop after marking the ending vertex. */

     Z = startVert;
     ZPrevLink = 1;
     do {
        Z = _GetNextVertexOnExternalFace(theGraph, Z, &ZPrevLink);

        ZPrevArc = gp_GetArc(theGraph, Z, ZPrevLink);

        theGraph->G[ZPrevArc].visited = 1;
        theGraph->G[gp_GetTwinArc(theGraph, ZPrevArc)].visited = 1;
        theGraph->G[Z].visited = 1;

     } while (Z != endVert);

     return OK;
}
Ejemplo n.º 2
0
int  _MarkPathAlongBicompExtFace(graphP theGraph, int startVert, int endVert)
{
    int  Z, ZPrevLink, ZPrevArc;

    /* Mark the start vertex (and if it is a root copy, mark the parent copy too. */

    gp_SetVertexVisited(theGraph, startVert);

    /* For each vertex visited after the start vertex, mark the vertex and the
            edge used to get there.  Stop after marking the ending vertex. */

    Z = startVert;
    ZPrevLink = 1;
    do {
        Z = _GetNeighborOnExtFace(theGraph, Z, &ZPrevLink);

        ZPrevArc = gp_GetArc(theGraph, Z, ZPrevLink);

        gp_SetEdgeVisited(theGraph, ZPrevArc);
        gp_SetEdgeVisited(theGraph, gp_GetTwinArc(theGraph, ZPrevArc));
        gp_SetVertexVisited(theGraph, Z);

    } while (Z != endVert);

    return OK;
}