/**
 *	Normalizes a number from another range into a number between 0 and 1.
 *	Identical to map(number, lo, hi, 0, 1);
 *	Numbers outside the range are not clamped to 0 and 1, because out-of-range numbers are often intentional and useful.
 *
 *	@param	num		number to be converted
 *	@param	lo		lower bound of number's current range
 *	@param	hi		upper bound of number's current range
 *
 *	@return	Number
 *
 */
function norm(num, lo, hi) {
	return (num - lo) / (hi - lo);
}

/**
 *	Re-maps a number from one range to another.
 *	Numbers outside the range are not clamped to 0 and 1, because out-of-range numbers are often intentional and useful.
 *
 *	@param	num		number to be converted
 *	@param	lo		lower bound of number's current range
 *	@param	hi		upper bound of number's current range
 *	@param	tLo		lower bound of number's target range
 *	@param	tHi		upper bound of number's target range
 *
 *	@return	Number
 *
 */
function map(num, lo, hi, tLo, tHi) {
	return ((tHi - tLo) * (num - lo) / (hi - lo)) + tLo;
}

/**
 *	Calculates a number between two numbers at a specific increment.
 *
 *	@param	num1	first number
 *	@param	num2	second number
 *	@param	amt		amount (0 - 1) to interpolate between numbers; e.g., 0.5 is half way between numbers
 *
 *	@return	Number
 *
 */
function lerp(num1, num2, amt) {
	return ((num2 - num1) * amt) + num1;
}

