package com.ewjordan.util;
import java.util.Arrays;
public class MathUtil {
/** Linearly maps a value from one range to another. */
public static double map(double val, double fromMin, double fromMax, double toMin, double toMax) {
double mult = (val - fromMin) / (fromMax-fromMin);
double res = toMin + mult*(toMax-toMin);
return res;
}
public static double findFractile(double fract, double[] vals) {
Arrays.sort(vals);
double dindex = MathUtil.map(fract, 0.0, 1.0, 0, vals.length-1);
int indexLo = (int)dindex;
int indexHi = indexLo + 1;
if (indexLo < 0) indexLo = 0;
if (indexHi > vals.length-1) indexHi = vals.length-1;
double resid = dindex - indexLo;
return MathUtil.map(resid, 0, 1, vals[indexLo], vals[indexHi]);
}
}