private void MergeHulls(WorkBuffer <PartialHull> hulls, Event e)
        {
            //Swap pointers for merge search
            var tmp = e.A;

            e.A = e.B;
            e.B = tmp;
            var mergeIdx = BinarySearch.EQ(hulls.Data, e, FindSplit.Default, 0, hulls.UsedSize - 1);
            var upper    = hulls.Data[mergeIdx];
            var lower    = hulls.Data[mergeIdx - 1];

            lower.UpperIds = upper.UpperIds;
            hulls.RemoveAt(mergeIdx);

            if (Verbose)
            {
                Debug.Log("Merge: " + mergeIdx);
                DumpHulls(hulls);
                hulls.Dump();
            }
        }
Пример #2
0
        public bool IsConstraint(int i, int j)
        {
            var e = new Int2(Mathf.Min(i, j), Mathf.Max(i, j));

            return(BinarySearch.EQ(Edges, e, 0, Edges.Length) >= 0);
        }