指数增加值之间的距离不相加

时间:2017-07-31 14:55:20

标签: javascript math exponential

我的任务是在一个范围内取两个值,并计算它们之间的距离百分比。问题在于范围也应该应用指数曲线。

数字范围从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

0 个答案:

没有答案