MCPcopy Index your code
hub / github.com/SuperMap/iClient-JavaScript / linearMap

Function linearMap

libs/echarts/echarts.simple.js:18862–18905  ·  view source on GitHub ↗

* Linear mapping a value from domain to range * @memberOf module:echarts/util/number * @param {(number|Array. )} val * @param {Array. } domain Domain extent domain[0] can be bigger than domain[1] * @param {Array. } range Range extent range[0] can be bigger than range[1]

(val, domain, range, clamp)

Source from the content-addressed store, hash-verified

18860 * @return {(number|Array.<number>}
18861 */
18862function linearMap(val, domain, range, clamp) {
18863 var subDomain = domain[1] - domain[0];
18864 var subRange = range[1] - range[0];
18865
18866 if (subDomain === 0) {
18867 return subRange === 0
18868 ? range[0]
18869 : (range[0] + range[1]) / 2;
18870 }
18871
18872 // Avoid accuracy problem in edge, such as
18873 // 146.39 - 62.83 === 83.55999999999999.
18874 // See echarts/test/ut/spec/util/number.js#linearMap#accuracyError
18875 // It is a little verbose for efficiency considering this method
18876 // is a hotspot.
18877 if (clamp) {
18878 if (subDomain > 0) {
18879 if (val <= domain[0]) {
18880 return range[0];
18881 }
18882 else if (val >= domain[1]) {
18883 return range[1];
18884 }
18885 }
18886 else {
18887 if (val >= domain[0]) {
18888 return range[0];
18889 }
18890 else if (val <= domain[1]) {
18891 return range[1];
18892 }
18893 }
18894 }
18895 else {
18896 if (val === domain[0]) {
18897 return range[0];
18898 }
18899 if (val === domain[1]) {
18900 return range[1];
18901 }
18902 }
18903
18904 return (val - domain[0]) / subDomain * subRange + range[0];
18905}
18906
18907/**
18908 * Convert a percent string to absolute number.

Callers 2

echarts.simple.jsFile · 0.70
pieLayoutFunction · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected