UNPKG

d3-jsnext

Version:
26 lines (21 loc) 620 B
import { d3$bisect } from '../arrays/bisect'; function d3_scale_polylinear(domain, range, uninterpolate, interpolate) { var u = [], i = [], j = 0, k = Math.min(domain.length, range.length) - 1; // Handle descending domains. if (domain[k] < domain[0]) { domain = domain.slice().reverse(); range = range.slice().reverse(); } while (++j <= k) { u.push(uninterpolate(domain[j - 1], domain[j])); i.push(interpolate(range[j - 1], range[j])); } return function(x) { var j = d3$bisect(domain, x, 1, k) - 1; return i[j](u[j](x)); }; } export { d3_scale_polylinear };