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