/// <summary> /// Возвратить индексы элементов массива точек, в которых компонента x наиболее близка к указанным значениям /// </summary> /// <param name="farr"></param> /// <param name="tmin"></param> /// <param name="tmax"></param> /// <returns></returns> private static Tuple <int, int> GetMinMaxIndexies(Point[] farr, double tmin, double tmax) { if (double.IsNaN(tmin)) { tmin = farr[0].x; } if (double.IsNaN(tmax)) { tmax = farr.Last().x; } var tmpmas = farr.Select(p => p.x).ToArray(); var tmpvec = new Vectors(tmpmas); int indmin = Array.IndexOf(tmpmas, tmpvec.BinaryApproxSearch(tmin)); int indmax = Array.IndexOf(tmpmas, tmpvec.BinaryApproxSearch(tmax)); return(new Tuple <int, int>(indmin, indmax)); }