Skip to content

Instantly share code, notes, and snippets.

@brianmcallister
Created October 17, 2016 15:40
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save brianmcallister/f0c62be9956e1e67df5fa6ef7e8abc95 to your computer and use it in GitHub Desktop.
Save brianmcallister/f0c62be9956e1e67df5fa6ef7e8abc95 to your computer and use it in GitHub Desktop.
Scale an input number between an input range proportionally down to be in an output range.
// @flow
/**
* Scale an input number between an input range proportionally down to be
* in an output range.
*
* @param {number} input - Input number.
* @param {Array<number, number>} inputRange - The input range.
* @param {Array<number, number>} outputRange - The output range.
*
* @returns {number}
*/
const scaleRange = (
input: number,
inputRange: Array<number>,
outputRange: Array<number>
): number => {
const [inMin, inMax] = inputRange;
const [outMin, outMax] = outputRange;
return ((input - inMin) * (outMax - outMin)) / ((inMax - inMin) + outMin);
};
export default scaleRange;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment