(有关此工作原理的更详细说明,请参见我的答案。)
这对于评论来说有点太长了。两个尺度是否一致并不重要,尽管你的:你说1
(最慢)对应pi/256
(最慢),50
(最快)对应pi/8
(最快)。 1 < 50
, 和pi/256 < pi/8
.
因此,如果这是正确的顺序:
>>> a0, a1 = 1., 50.
>>> b0, b1 = pi/256, pi/8
>>> def rescale(x):
... return ((x-a0)/(a1-a0)) * (b1-b0) + b0
...
>>> rescale(1)
0.01227184630308513
>>> rescale(1) == pi/256
True
>>>
>>> rescale(50)
0.39269908169872414
>>> rescale(50) == pi/8
True
25
靠近中间的某个地方:
>>> rescale(25)
0.198603553435643
如果你想1
对应最快的速度,那么只需翻转b0
和b1
:
>>> a0, a1 = 1., 50.
>>> b0, b1 = pi/8, pi/256
>>> def rescale(x):
... return ((x-a0)/(a1-a0)) * (b1-b0) + b0
...
>>> rescale(1)
0.39269908169872414
>>> rescale(50)
0.012271846303085143
该公式继续适用。