import type { Fn2 } from "@thi.ng/api"; import type { Transducer } from "./api.js"; /** * Higher order interpolation transducer. The resulting transducer forms a * sliding window of input values and calls `fn` (the given interpolation * function) `n` times for the current window and a normalized time value to * produce the requested number of interpolated values per interval. Yields a * sequence of interpolated values. * * @remarks * If the optional `src` iterable is given, `interpolate` returns an iterator of * interpolated values. No values will be produced if the number of inputs is * less than given `window` size. * * Note: The *very last* input value can never be fully reached and might need * to be explicitly duplicated in the input, e.g. via the {@link extendSides} * iterator... * * See also: * * - {@link interpolateHermite} * - {@link interpolateLinear} * - {@link extendSides} * * @example * ```ts tangle:../export/interpolate.ts * import { interpolate } from "@thi.ng/transducers"; * * const res = [...interpolate( * // interpolation function * ([a, b], t) => a + (b - a) * t, * // window size * 2, * // num samples per window * 8, * // input values * [0, 1, 0, 2] * )]; * * console.log(res); * // [ 0, 0.125, 0.25, 0.375, 0.5, 0.625, 0.75, 0.875, * // 1, 0.875, 0.75, 0.625, 0.5, 0.375, 0.25, 0.125, * // 0, 0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75 ] * ``` * * @param fn - * @param window - * @param n - */ export declare function interpolate(fn: Fn2, window: number, n: number): Transducer; export declare function interpolate(fn: Fn2, window: number, n: number, src: Iterable): IterableIterator; //# sourceMappingURL=interpolate.d.ts.map