Mar*_*eau 17 mapping algorithm distribution
我试着搜索,但由于我的问题的性质,我无法找到令人满意的东西.
我的问题如下:我试图将范围从0到2000(尽管理想情况下上限可调)的数字映射到范围从10到100的小得多的区间.上限将映射(2000-> 100)和也是下限.除此之外,一个比区间[0; 2000]中的另一个条目更大的条目理想地大于[0; 100]中的映射条目
我认为这个问题不是特定于语言的,但如果您想知道,我今天正在使用Javascript.
Nis*_*ant 41
To map
[A, B] --> [a, b]
use this formula
(val - A)*(b-a)/(B-A) + a
Run Code Online (Sandbox Code Playgroud)
正如在另一个答案中正确提到的那样,它是线性映射.
基本上
y = m*x + c
c = intersection at y-axis
m = slope determined by two known point (A, a), (B, b) = (b-a)/(B-A)
Run Code Online (Sandbox Code Playgroud)
小智 5
我认为,不是给你直接映射的公式,更好的方法是解释它背后的想法:
假设我们想要将区间[0,1]映射到区间[1,3],这可以看作是找到f(x)= Ax + B的问题,使得从区间[0,1]给出任何x,将导致f(x)为/导致区间[1,3].
从这个角度来看,我们已经知道一些价值观:
从(1)和(2),我们可以得出结论,将区间[0,1]到[1,3]的函数映射为f(x)= 2x + 1.
在你的情况下,你现在应该具备所有必要的知识,能够将[0,2000]间隔映射到[10,100].
归档时间: |
|
查看次数: |
12094 次 |
最近记录: |