/// <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.IsMarked = 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()); } }
/// <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.IsMarked = true; current = current.Next; } while (current != null && current != start); return edgeString; }