/// <summary> /// Calculate y=y(x) for arbitrary x. Works fine only for line series with ordered x values. /// </summary> /// <param name="series"></param> /// <param name="firstindex"></param> /// <param name="lastindex"></param> /// <param name="xvalue"></param> /// <returns>y=y(xvalue) where xvalue is arbitrary x value.</returns> private double InterpolateLineSeries(Steema.TeeChart.WPF.Styles.Custom series, int firstindex, int lastindex, double xvalue) { int index; for (index = firstindex; index <= lastindex; index++) { if (index == -1 || series.XValues.Value[index] > xvalue) { break; } } // safeguard if (index < 1) { index = 1; } else if (index >= series.Count) { index = series.Count - 1; } // y=(y2-y1)/(x2-x1)*(x-x1)+y1 double dx = series.XValues[index] - series.XValues[index - 1]; double dy = series.YValues[index] - series.YValues[index - 1]; if (dx != 0.0) { return(dy * (xvalue - series.XValues[index - 1]) / dx + series.YValues[index - 1]); } else { return(0.0); } }
private double InterpolateLineSeries(Steema.TeeChart.WPF.Styles.Custom series, double xvalue) { return(InterpolateLineSeries(series, series.FirstVisibleIndex, series.LastVisibleIndex, xvalue)); }