org.onebusaway.utility
Class InterpolationLibrary

java.lang.Object
  extended by org.onebusaway.utility.InterpolationLibrary

public class InterpolationLibrary
extends Object

Generic methods to support interpolation of values against a sorted key-value map given a new target key.

Author:
bdferris

Constructor Summary
InterpolationLibrary()
           
 
Method Summary
static double interpolate(double[] keys, double[] values, double target, EOutOfRangeStrategy outOfRangeStrategy)
           
static
<KEY extends Number,VALUE,ANY_KEY extends KEY,ANY_VALUE extends VALUE>
VALUE
interpolate(InterpolationStrategy<KEY,VALUE> interpolationStrategy, EOutOfRangeStrategy outOfRangeStrategy, SortedMap<ANY_KEY,ANY_VALUE> values, ANY_KEY target)
          Given a SortedMap with key-values that of arbitrary type and a InterpolationStrategy to define interpolation over those types, interpolate a value for a target key within the key-range of the map.
static
<K extends Number,V extends Number>
double
interpolate(SortedMap<K,V> values, K target)
          Same behavior as #interpolate(SortedMap, Number, EOutOfRangeStrategy) but with a default {@link EOutOfRangeStrategy} of {@link EOutOfRangeStrategy#INTERPOLATE}.
static
<K extends Number,V extends Number>
double
interpolate(SortedMap<K,V> values, K target, EOutOfRangeStrategy outOfRangeStrategy)
          Given a SortedMap with key-values that all extend from Number, interpolate using linear interpolation a value for a target key within the key-range of the map.
static double interpolatePair(double fromValue, double toValue, double ratio)
          Simple numeric interpolation between two double values using the equation ratio * (toValue - fromValue) + fromValue
static double interpolatePair(double keyA, double valueA, double keyB, double valueB, double targetKey)
          Simple numeric interpolation between two pairs of key-values and a third key.
static
<K extends Number,V>
V
nearestNeighbor(SortedMap<K,V> values, K target)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

InterpolationLibrary

public InterpolationLibrary()
Method Detail

interpolate

public static <K extends Number,V extends Number> double interpolate(SortedMap<K,V> values,
                                                                     K target)
Same behavior as #interpolate(SortedMap, Number, EOutOfRangeStrategy) but with a default {@link EOutOfRangeStrategy} of {@link EOutOfRangeStrategy#INTERPOLATE}.

Parameters:
values - a sorted-map of key-value number pairs
target - the target key used to interpolate a value
outOfRangeStrategy - the strategy to use for a target key that outside the key-range of the value map
Returns:
an interpolated value for the target key

interpolate

public static <K extends Number,V extends Number> double interpolate(SortedMap<K,V> values,
                                                                     K target,
                                                                     EOutOfRangeStrategy outOfRangeStrategy)
Given a SortedMap with key-values that all extend from Number, interpolate using linear interpolation a value for a target key within the key-range of the map. For a key outside the range of the keys of the map, the outOfRange EOutOfRangeStrategy strategy will determine the interpolation behavior.

Parameters:
values - a sorted-map of key-value number pairs
target - the target key used to interpolate a value
outOfRangeStrategy - the strategy to use for a target key that outside the key-range of the value map
Returns:
an interpolated value for the target key

nearestNeighbor

public static <K extends Number,V> V nearestNeighbor(SortedMap<K,V> values,
                                                     K target)

interpolate

public static double interpolate(double[] keys,
                                 double[] values,
                                 double target,
                                 EOutOfRangeStrategy outOfRangeStrategy)

interpolatePair

public static double interpolatePair(double fromValue,
                                     double toValue,
                                     double ratio)
Simple numeric interpolation between two double values using the equation ratio * (toValue - fromValue) + fromValue

Parameters:
fromValue -
toValue -
ratio -
Returns:
ratio * (toValue - fromValue) + fromValue

interpolatePair

public static double interpolatePair(double keyA,
                                     double valueA,
                                     double keyB,
                                     double valueB,
                                     double targetKey)
Simple numeric interpolation between two pairs of key-values and a third key. Here, ratio = (targetKey - keyA) / (keyB - keyA) and the result is ratio * (valueB - valueA) + valueA.

Parameters:
fromValue -
toValue -
ratio -
Returns:
ratio * (toValue - fromValue) + fromValue

interpolate

public static <KEY extends Number,VALUE,ANY_KEY extends KEY,ANY_VALUE extends VALUE> VALUE interpolate(InterpolationStrategy<KEY,VALUE> interpolationStrategy,
                                                                                                       EOutOfRangeStrategy outOfRangeStrategy,
                                                                                                       SortedMap<ANY_KEY,ANY_VALUE> values,
                                                                                                       ANY_KEY target)
Given a SortedMap with key-values that of arbitrary type and a InterpolationStrategy to define interpolation over those types, interpolate a value for a target key within the key-range of the map. For a key outside the range of the keys of the map, the outOfRange EOutOfRangeStrategy strategy will determine the interpolation behavior.

Parameters:
interpolationStrategy - the interpolation strategy used to perform interpolation between key-value pairs of arbitrary type
outOfRangeStrategy - the strategy to use for a target key that outside the key-range of the value map
values - a sorted-map of key-value pairs
target - the target key used to interpolate a value
Returns:
an interpolated value for the target key


Copyright © 2011 OneBusAway. All Rights Reserved.