private static double Interpolate(double value, List<double> valuesList,
List<double> interpList)
{
int idx = Utils.ValueIndex(value, valuesList);
// out of bounds, interpolation unknown
if (idx < 0)
{
return idx;
}
// no interpolation needed, first value in list
if (idx == 0)
{
return interpList.First();
}
double x = value;
double x1 = valuesList[idx - 1];
double x2 = valuesList[idx];
double y1 = interpList[idx - 1];
double y2 = interpList[idx];
return Utils.Interpolate(x, x1, x2, y1, y2);
}