用于在两个极限之间缩放数字的数学公式从0开始?

时间:2011-10-11 19:14:57

标签: math

例如,我有1到100之间的数字,我需要将它缩放到20~80之间。

示例:

1 scales to 20
100 scales to 80
50 scales to 50

2 个答案:

答案 0 :(得分:9)

你正在寻找一个函数f:

f(x) = ax +b

f(1)=20
f(100)=80

然后

a+b=20
100a+b=80

你得到:

99a +20 = 80

then a =60/99=20/33
and b = 20 - 20/33 = 20*(32/33)

请查看此问题以获取更多信息:

Invert and convert slider value

注意:如果50缩放到40,则转换不是线性的。所以你需要寻找另一种类型的功能:

f(x)= ax ** 2 + b x + c

答案 1 :(得分:1)

您需要更具体地了解您正在寻找的内容。您给出的规则不会产生一致的LINEAR缩放。

因为,如果它是线性的:

(1, 20) is on the line
(100, 80) is one the line

斜率是:

(80 - 20) / (100 - 1) = 60 / 99

行是

y - 20 = (60 / 99) * (x - 1)

然后:

y = (60 / 99) * (x - 1) + 20

然后,测试x = 50

y = (60 / 99) * (50 - 1) + 20 = 2940 / 99 + 20 != 40

因此,没有这样的LINEAR缩放。