private List findStabbedSegments(Coordinate stabbingRayLeftPt){
  List stabbedSegments=new ArrayList();
  for (Iterator i=subgraphs.iterator(); i.hasNext(); ) {
    BufferSubgraph bsg=(BufferSubgraph)i.next();
    Envelope env=bsg.getEnvelope();
    if (stabbingRayLeftPt.y < env.getMinY() || stabbingRayLeftPt.y > env.getMaxY())     continue;
    findStabbedSegments(stabbingRayLeftPt,bsg.getDirectedEdges(),stabbedSegments);
  }
  return stabbedSegments;
}

private List findStabbedSegments ( Coordinate stabbingRayLeftPt ) { List stabbedSegments = new ArrayList ( ) ; for ( Iterator i = subgraphs . iterator ( ) ; i . hasNext ( ) ; ) { BufferSubgraph bsg = ( BufferSubgraph ) i . next ( ) ; Envelope env = bsg . getEnvelope ( ) ; if ( stabbingRayLeftPt . y < env . getMinY ( ) || stabbingRayLeftPt . y > env . getMaxY ( ) ) continue ; findStabbedSegments ( stabbingRayLeftPt , bsg . getDirectedEdges ( ) , stabbedSegments ) ; } return stabbedSegments ; }
finds all non - horizontal segments intersecting the stabbing line . the stabbing line is the ray to the right of stabbingrayleftpt .
