InterpolatingMap

A navigable map that supports flexible interpolation between values.

InterpolatingMap is a wrapper around a TreeMap<Double, T> that queries a custom interpolation strategy to approximate values between stored keys. Exact matches return stored values; intermediate keys are interpolated using the configured strategy.

Interpolation Strategies

Two interpolation paradigms are supported:

Local Interpolation: Uses an (T, T, Double) -> T function operating on two adjacent control points and a blend parameter \(t \in 0.0, 1.0\). Efficient and suitable for linear, polynomial, and other pointwise methods.

Global Interpolation: Uses a (NavigableMap<Double, T>).(Double) -> T lambda with access to all control points. Enables spline interpolation and methods requiring multi-point context.

Usage Examples

Linear interpolation (local):

val map = InterpolatingMap.linear()
map[0.0] = 0.0
map[1.0] = 1.0
map[2.0] = 4.0
println(map[0.5]) // 0.5 (linearly interpolated)

Catmull-Rom spline interpolation (local):

val map = InterpolatingMap.spline()
map[0.0] = 0.0
map[1.0] = 1.0
map[2.0] = 0.5
println(map[1.5]) // Smooth spline-interpolated value

Type Parameters

T

the value type stored in the map

Throws

if keys and values lists have differing lengths

Constructors

Link copied to clipboard
constructor(tree: TreeMap<Double, T>, interpolate: (T, T, Double) -> T)
constructor(getter: NavigableMap<Double, T>.(Double) -> T)
constructor(interpolator: (T, T, Double) -> T)
constructor(getter: NavigableMap<Double, T>.(Double) -> T, keys: List<Double>, values: List<T>)
constructor(interpolator: (T, T, Double) -> T, keys: List<Double>, values: List<T>)

Types

Link copied to clipboard
object Companion

Properties

Link copied to clipboard
Link copied to clipboard
open override val keys: MutableSet<Double?>
Link copied to clipboard
open override val size: Int
Link copied to clipboard
open override val values: MutableCollection<T?>

Functions

Link copied to clipboard
open override fun ceilingEntry(p0: Double?): Map.Entry<Double?, T?>?
Link copied to clipboard
open override fun ceilingKey(p0: Double?): Double?
Link copied to clipboard
open override fun clear()
Link copied to clipboard
open override fun comparator(): Comparator<in Double?>?
Link copied to clipboard
open override fun containsKey(key: Double?): Boolean
Link copied to clipboard
open override fun containsValue(value: T?): Boolean
Link copied to clipboard
open override fun descendingKeySet(): NavigableSet<Double?>?
Link copied to clipboard
open override fun descendingMap(): NavigableMap<Double?, T?>?
Link copied to clipboard
open override fun firstEntry(): Map.Entry<Double?, T?>?
Link copied to clipboard
open override fun firstKey(): Double?
Link copied to clipboard
open override fun floorEntry(p0: Double?): Map.Entry<Double?, T?>?
Link copied to clipboard
open override fun floorKey(p0: Double?): Double?
Link copied to clipboard
open operator override fun get(key: Double): T

Gets the value associated with the given key, using interpolation if necessary.

Link copied to clipboard
open override fun headMap(p0: Double?, p1: Boolean): NavigableMap<Double?, T?>?
open override fun headMap(p0: Double?): SortedMap<Double?, T?>?
Link copied to clipboard
open override fun higherEntry(p0: Double?): Map.Entry<Double?, T?>?
Link copied to clipboard
open override fun higherKey(p0: Double?): Double?
Link copied to clipboard
open override fun isEmpty(): Boolean
Link copied to clipboard
open override fun lastEntry(): Map.Entry<Double?, T?>?
Link copied to clipboard
open override fun lastKey(): Double?
Link copied to clipboard
open override fun lowerEntry(p0: Double?): Map.Entry<Double?, T?>?
Link copied to clipboard
open override fun lowerKey(p0: Double?): Double?
Link copied to clipboard
open override fun navigableKeySet(): NavigableSet<Double?>?
Link copied to clipboard
open override fun pollFirstEntry(): Map.Entry<Double?, T?>?
Link copied to clipboard
open override fun pollLastEntry(): Map.Entry<Double?, T?>?
Link copied to clipboard
open override fun put(key: Double?, value: T?): T?
Link copied to clipboard
open override fun putAll(from: Map<out Double?, T?>)
Link copied to clipboard
open fun putFirst(k: Double?, v: T?): T?
Link copied to clipboard
open fun putLast(k: Double?, v: T?): T?
Link copied to clipboard
open fun reversed(): NavigableMap<Double?, T?>?
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open override fun subMap(p0: Double?, p1: Boolean, p2: Double?, p3: Boolean): NavigableMap<Double?, T?>?
open override fun subMap(p0: Double?, p1: Double?): SortedMap<Double?, T?>?
Link copied to clipboard
open override fun tailMap(p0: Double?, p1: Boolean): NavigableMap<Double?, T?>?
open override fun tailMap(p0: Double?): SortedMap<Double?, T?>?