org.onebusaway.utility

## Class 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

Constructors
Constructor and Description
`InterpolationLibrary()`
• ### Method Summary

Methods
Modifier and Type Method and Description
`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)```
`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,
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 © 2014 OneBusAway. All Rights Reserved.