示例#1
0
            public void SortOutgoingHalfedges(Comparison <TE> compare)
            {
                var hedges = OutgoingHalfedges.ToArray();

                Array.Sort(hedges, compare);

                int last = hedges.Length - 1;

                for (int i = 0; i < last; i++)
                {
                    hedges[i].Twin.MakeConsecutive(hedges[i + 1]);
                }

                hedges[last].Twin.MakeConsecutive(hedges[0]);
            }
示例#2
0
            /// <summary>
            ///
            /// </summary>
            /// <param name="compare"></param>
            public void SortOutgoingHalfedges <K>(Func <TE, K> getKey)
                where K : IComparable <K>
            {
                var hedges = OutgoingHalfedges.OrderBy(getKey);

                var itr = hedges.GetEnumerator();

                if (!itr.MoveNext())
                {
                    return;
                }

                var first = itr.Current;
                var prev  = first;

                while (itr.MoveNext())
                {
                    var he = itr.Current;
                    prev.Twin.MakeConsecutive(he);
                    prev = he;
                }

                prev.Twin.MakeConsecutive(first);
            }