-
- // Computing the inverse of toPercentYCoord. The function was arrived at with
- // the following steps:
- //
- // Original calcuation:
- // pct = (log(yRange[1]) - log(y)) / (log(yRange[1]) - log(yRange[0]));
- //
- // Multiply both sides by the right-side demoninator.
- // pct * (log(yRange[1]) - log(yRange[0])) = log(yRange[1]) - log(y);
- //
- // subtract log(yRange[1]) from both sides.
- // (pct * (log(yRange[1]) - log(yRange[0]))) - log(yRange[1]) = -log(y);
- //
- // and multiply both sides by -1.
- // log(yRange[1]) - (pct * (logr1 - log(yRange[0])) = log(y);
- //
- // Swap both sides of the equation,
- // log(y) = log(yRange[1]) - (pct * (log(yRange[1]) - log(yRange[0])));
- //
- // Use both sides as the exponent in 10^exp and we're done.
- // y = 10 ^ (log(yRange[1]) - (pct * (log(yRange[1]) - log(yRange[0]))));
- var logr0 = utils.log10(yRange[0]);
- var logr1 = utils.log10(yRange[1]);
- var exponent = logr1 - (pct * (logr1 - logr0));
- var value = Math.pow(utils.LOG_SCALE, exponent);
- return value;
+ // Note reversed yRange, y1 is on top with pct==0.
+ return utils.logRangeFraction(yRange[1], yRange[0], pct);