例如,我有1到100之间的数字,我需要将它缩放到20~80之间。
示例:
1 scales to 20
100 scales to 80
50 scales to 50
答案 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缩放。