我的任务是在一个范围内取两个值,并计算它们之间的距离百分比。问题在于范围也应该应用指数曲线。
数字范围从1到100,介于1和100之间的距离。 3应该是2而没有指数曲线。曲线乘数为0.5时,该值应该大大减小,因为值之间的距离在开始时较小而在结束时较大。
问题是这个计算在javascript中不起作用。在下面的示例中,应用指数计算,但1和1之间的差异。 3是4.196,已经太大了。 97&的区别99是29.698,应该更大。
const getPercentage = (value, max) => 100 / max * value;
const calculateTrajectory = (value, trajectory) => value * Math.pow(value, trajectory);
const getDistance = (value1, value2, max, min, trajectory) => {
const baseMax = max - min;
const value = [getPercentage(value1 - min, baseMax), getPercentage(value2 - min, baseMax)];
value.sort((a, b) => a - b);
value[0] = calculateTrajectory(value[0], trajectory);
value[1] = calculateTrajectory(value[1], trajectory);
return value[1] - value[0];
}
const addDistance = (distance, id) => {
document.body.innerHTML += `${id}: ${distance}<br />`;
}
addDistance(getDistance(1, 3, 100, 0, 0.5), 'A'); // 4.196152422706632
addDistance(getDistance(97, 99, 100, 0, 0.5), 'B'); // 29.698355961331572
addDistance(getDistance(1, 3, 100, 0, 0), 'C'); // 2
您可以在此处看到此示例:https://jsfiddle.net/zeqp1gs3/3/
以下是指数曲线的示例,但我无法在我的jsfiddle示例中重新创建此计算:https://codepen.io/krazyjakee/pen/brEKpW