17 lines
557 B
JavaScript
17 lines
557 B
JavaScript
|
// `Math.scale` method implementation
|
||
|
// https://rwaldron.github.io/proposal-math-extensions/
|
||
|
module.exports = Math.scale || function scale(x, inLow, inHigh, outLow, outHigh) {
|
||
|
if (
|
||
|
arguments.length === 0
|
||
|
/* eslint-disable no-self-compare */
|
||
|
|| x != x
|
||
|
|| inLow != inLow
|
||
|
|| inHigh != inHigh
|
||
|
|| outLow != outLow
|
||
|
|| outHigh != outHigh
|
||
|
/* eslint-enable no-self-compare */
|
||
|
) return NaN;
|
||
|
if (x === Infinity || x === -Infinity) return x;
|
||
|
return (x - inLow) * (outHigh - outLow) / (inHigh - inLow) + outLow;
|
||
|
};
|