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(); } }
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); }