예제 #1
0
 /**
  * Checks for any coincident ends of edges.
  *
  * @return a List of the coincident edges, if any
  */
 public Set checkCoincidentEdges() {
   Set coincidentEdges = new HashSet();
   for (Iterator i = nodeIterator(); i.hasNext(); ) {
     Node node = (Node) i.next();
     DirectedEdgeStar deStar = node.getOutEdges();
     DirectedEdge firstDE = null;
     DirectedEdge prevDE = null;
     for (Iterator j = deStar.iterator(); j.hasNext(); ) {
       DirectedEdge de = (DirectedEdge) j.next();
       if (firstDE == null) firstDE = de;
       if (prevDE != null) {
         if (isCoincidentEdge(de, prevDE)) {
           coincidentEdges.add(de.getEdge());
           coincidentEdges.add(prevDE.getEdge());
         }
       }
       prevDE = de;
     }
     if (firstDE != prevDE)
       if (isCoincidentEdge(firstDE, prevDE)) {
         coincidentEdges.add(firstDE.getEdge());
         coincidentEdges.add(prevDE.getEdge());
       }
   }
   return coincidentEdges;
 }
예제 #2
0
 private void findRightmostEdgeAtNode() {
   Node node = minDe.getNode();
   DirectedEdgeStar star = (DirectedEdgeStar) node.getEdges();
   minDe = star.getRightmostEdge();
   // the DirectedEdge returned by the previous call is not
   // necessarily in the forward direction. Use the sym edge if it isn't.
   if (!minDe.isForward()) {
     minDe = minDe.getSym();
     minIndex = minDe.getEdge().getCoordinates().length - 1;
   }
 }