## org.jrobin.graph
Class CubicSplineInterpolator

    java.lang.Object
      org.jrobin.graph.Plottable
          org.jrobin.graph.CubicSplineInterpolator

public class CubicSplineInterpolator
extends Plottable

Class used to interpolate datasource values from the collection of (timestamp, values) points using natural cubic spline interpolation.

WARNING: So far, this class cannot handle NaN datasource values (an exception will be thrown by the constructor). Future releases might change this. Pass instances of this class to `RrdGraphDef.datasource()` to provide spline-interpolated datasource values to JRobin grapher.

Constructor Summary
`CubicSplineInterpolator(java.util.Date[] dates, double[] values)` Creates cubic spline interpolator from arrays of Date objects and corresponding datasource values.
`CubicSplineInterpolator(double[] x, double[] y)` Creates cubic spline interpolator for an array of 2D-points.
`CubicSplineInterpolator(java.util.GregorianCalendar[] dates, double[] values)` Creates cubic spline interpolator from arrays of GregorianCalendar objects and corresponding datasource values.
`CubicSplineInterpolator(long[] timestamps, double[] values)` Creates cubic spline interpolator from arrays of timestamps and corresponding datasource values.

Method Summary
`double` `getValue(double xval)` Calculates spline-interpolated y-value for the corresponding x-value.
`double` `getValue(long timestamp)` Method overriden from the base class.

Methods inherited from class org.jrobin.graph.Plottable
`getValue, getValue`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### CubicSplineInterpolator

    public CubicSplineInterpolator(long[] timestamps,
                                   double[] values)
                            throws RrdException

  Creates cubic spline interpolator from arrays of timestamps and corresponding datasource values.

Parameters:
  `timestamps` - timestamps in seconds
  `values` - corresponding datasource values
Throws:
  `RrdException` - Thrown if supplied arrays do not contain at least 3 values, or if timestamps are not ordered, or array lengths are not equal, or some datasource value is NaN.

### CubicSplineInterpolator

    public CubicSplineInterpolator(java.util.Date[] dates,
                                   double[] values)
                            throws RrdException

  Creates cubic spline interpolator from arrays of Date objects and corresponding datasource values.

Parameters:
  `dates` - Array of Date objects
  `values` - corresponding datasource values
Throws:
  `RrdException` - Thrown if supplied arrays do not contain at least 3 values, or if timestamps are not ordered, or array lengths are not equal, or some datasource value is NaN.

### CubicSplineInterpolator

    public CubicSplineInterpolator(java.util.GregorianCalendar[] dates,
                                   double[] values)
                            throws RrdException

  Creates cubic spline interpolator from arrays of GregorianCalendar objects and corresponding datasource values.

Parameters:
  `dates` - Array of GregorianCalendar objects
  `values` - corresponding datasource values
Throws:
  `RrdException` - Thrown if supplied arrays do not contain at least 3 values, or if timestamps are not ordered, or array lengths are not equal, or some datasource value is NaN.

### CubicSplineInterpolator

    public CubicSplineInterpolator(double[] x,
                                   double[] y)
                            throws RrdException

  Creates cubic spline interpolator for an array of 2D-points.

Parameters:
  `x` - x-axis point coordinates
  `y` - y-axis point coordinates
Throws:
  `RrdException` - Thrown if supplied arrays do not contain at least 3 values, or if timestamps are not ordered, or array lengths are not equal, or some datasource value is NaN.

Method Detail

### getValue

    public double getValue(double xval)

  Calculates spline-interpolated y-value for the corresponding x-value. Call this if you need spline-interpolated values in your code.

  Parameters:
    `xval` - x-value
  Returns:
    inteprolated y-value

### getValue

    public double getValue(long timestamp)

  Method overriden from the base class. This method will be called by the framework. Call this method only if you need spline-interpolated values in your code.

  Overrides:
    `getValue` in class `Plottable`
  Parameters:
    `timestamp` - timestamp in seconds
  Returns:
    inteprolated datasource value