MCPcopy Create free account
hub / github.com/microsoft/SandDance / polymap

Function polymap

docs/tests/v2/es6/js/sanddance.js:107066–107086  ·  view source on GitHub ↗
(domain, range, interpolate)

Source from the content-addressed store, hash-verified

107064}
107065
107066function polymap(domain, range, interpolate) {
107067 var j = Math.min(domain.length, range.length) - 1,
107068 d = new Array(j),
107069 r = new Array(j),
107070 i = -1; // Reverse descending domains.
107071
107072 if (domain[j] < domain[0]) {
107073 domain = domain.slice().reverse();
107074 range = range.slice().reverse();
107075 }
107076
107077 while (++i < j) {
107078 d[i] = normalize(domain[i], domain[i + 1]);
107079 r[i] = interpolate(range[i], range[i + 1]);
107080 }
107081
107082 return function (x) {
107083 var i = (0, _d3Array.bisect)(domain, x, 1, j) - 1;
107084 return r[i](d[i](x));
107085 };
107086}
107087
107088function copy(source, target) {
107089 return target.domain(source.domain()).range(source.range()).interpolate(source.interpolate()).clamp(source.clamp()).unknown(source.unknown());

Callers

nothing calls this directly

Calls 3

normalizeFunction · 0.70
interpolateFunction · 0.70
minMethod · 0.45

Tested by

no test coverage detected