/// <summary> /// /// </summary> /// <param name="start"></param> /// <returns></returns> private EdgeString BuildEdgeStringStartingWith(LineMergeDirectedEdge start) { EdgeString edgeString = new EdgeString(factory); LineMergeDirectedEdge current = start; do { edgeString.Add(current); current.Edge.Marked = true; current = current.Next; }while (current != null && current != start); return(edgeString); }
/// <summary> /// /// </summary> private void Merge() { if (mergedLineStrings != null) { return; } edgeStrings = new ArrayList(); BuildEdgeStringsForObviousStartNodes(); BuildEdgeStringsForIsolatedLoops(); mergedLineStrings = new ArrayList(); for (IEnumerator i = edgeStrings.GetEnumerator(); i.MoveNext();) { EdgeString edgeString = (EdgeString)i.Current; mergedLineStrings.Add(edgeString.ToLineString()); } }