/// <summary> /// For an array of monotonically increasing values, returns /// the index i of the largest value such that array[i] <= x. /// If x is smaller than the first value, then -1 is returned. /// If x is greater than the last value, then a.Length is returned. /// </summary> public static int IndexOfLargestLessOrEqual <T>(this T[] a, T x) where T : IComparable { var r = new Range1i(0, a.Length - 1); if (x.CompareTo(a[0]) < 0) { return(-1); } if (x.CompareTo(a[r.Max]) > 0) { return(a.Length); } while (r.Size > 1) { var half = r.Center; if (x.CompareTo(a[half]) < 0) { r.Max = half; } else { r.Min = half; } } return(r.Min); }
/// <summary></summary> public static FilterIntensity Deserialize(JObject json) => new FilterIntensity(Range1i.Parse((string)json["Range"]));
/// <summary></summary> public FilterIntensity(Range1i range) { Range = range; }
private void Init() { m_indexes = new Range1i(0, m_items.Length - 1); // m_domain = new Range1d(m_params[0], m_params[m_indexes.Max]); }
public void Write(Range1i x) { Write(x.Min); Write(x.Max); }
private void Init() { m_indexes = new Range1i(0, m_items.Length - 1); }