コード例 #1
0
        /// <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);
        }
コード例 #2
0
 /// <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());
     }
 }