Example #1
0
        private int Locate(WorkBuffer <Int3> cells, int a, int b, int c)
        {
            var x = a;
            var y = b;
            var z = c;

            if (b < c)
            {
                if (b < a)
                {
                    x = b;
                    y = c;
                    z = a;
                }
            }
            else if (c < a)
            {
                x = c;
                y = a;
                z = b;
            }

            if (x < 0)
            {
                return(-1);
            }

            return(BinarySearch.EQ(cells.Data, new Int3(x, y, z), 0, cells.UsedSize - 1));
        }
        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();
            }
        }
Example #3
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);
        }