/// <summary> /// Find and mark L edges which are "covered" by the result area (if any). /// L edges at nodes which also have A edges can be checked by checking /// their depth at that node. /// L edges at nodes which do not have A edges can be checked by doing a /// point-in-polygon test with the previously computed result areas. /// </summary> private void FindCoveredLineEdges() { // first set covered for all L edges at nodes which have A edges too for (IEnumerator nodeit = op.Graph.Nodes.GetEnumerator(); nodeit.MoveNext();) { Node node = (Node)nodeit.Current; ((DirectedEdgeStar)node.Edges).FindCoveredLineEdges(); } // For all L edges which weren't handled by the above, // use a point-in-poly test to determine whether they are covered for (IEnumerator it = op.Graph.EdgeEnds.GetEnumerator(); it.MoveNext();) { DirectedEdge de = (DirectedEdge)it.Current; Edge e = de.Edge; if (de.LineEdge && !e.CoveredSet) { bool isCovered = op.IsCoveredByA(de.Coordinate); e.Covered = isCovered; } } }