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]); }
/// <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); }