根据正/负输入,我如何获得介于0和1之间的值?

时间:2012-03-21 00:04:29

标签: algorithm math

我需要生成0到1之间的数字(用于不透明度),准确反映这个数字的数字:

-249.76684980273333 和 249.76684980273333

例如,-249.76684980273333为0.00,而249.76684980273333为1.00

3 个答案:

答案 0 :(得分:10)

只做

x / (2.0*M) + 0.5

其中M = 249.76684980273333


要解决此类问题,您需要找到描述特定线性方程的公式。等式会将您的“大”数字(输入x)映射到0-1(输出y)之间的数字。

您可以使用以下两点的公式:

enter image description here

在你的情况下,既然你说“-249.76684980273333将是0.00,而249.76684980273333将是1.00”,那么应该清楚你所感兴趣的两个不同点是:

(x1, y1) = -249.76684980273333, 0.00
(x2, y2) = 249.76684980273333, 1.00

将这些替换为公式,并以y = m*x + b之类的行的形式求解,从中您可以轻松编写算法。

希望这有帮助!

答案 1 :(得分:6)

function scale(min, max, value) {
    return value/(max-min) + min
}

min =您的范围的最小值,在您的示例中,-249.76684980273333
max =范围的最大值,在您的示例中,249.76684980273333
value =您正在测试的值

答案 2 :(得分:1)

你想要

y = (x+249.76684980273333)/(2*249.76684980273333);