private static List<LoessInterval> computeIntervals(double[] xvals, double xStep, int bandwidthInPoints)
{
List<LoessInterval> intervals = new List<LoessInterval>();
int[] bandwidthInterval = new int[] { 0, bandwidthInPoints - 1 };
double xMin = double.NegativeInfinity;
for (double x = xvals[0]; x <= xvals[xvals.Length - 1]; x += xStep)
{
var newBandwidthInterval = updateBandwidthInterval(x, xvals, bandwidthInterval);
if (newBandwidthInterval != null)
{
intervals.Add(new LoessInterval(xMin, x, bandwidthInterval));
xMin = x;
bandwidthInterval = newBandwidthInterval;
}
}
intervals.Add(new LoessInterval(xMin, double.PositiveInfinity, bandwidthInterval));
return intervals;
}