我有一个JavaScript滑块,根据其位置输出0到1之间的值.我想将该值转换为介于100和1000之间的另一个比例的值,但是基于100到1000之间的一组数据点的分布.
这里的用例是,当有一组非常接近的数字时,我希望滑块对变化不太敏感.例如…让我们说比例尺中的值是:
100,200,300,500,1000
值100-500可能会占据滑块的前80%,因为它们分布较近,因此可以更容易地在它们之间进行选择.
显然有计算这个的数学函数,可能涉及标准偏差和系数.有人知道这是什么吗?
最佳答案
在大规模的值之间使用线性插值,类似于
var bigValues = [100,1000];
var input; /* will vary in the range [0.0..1.0] */
var idx; /* index of nearest entry in bigValues below input */
var frac; /* fraction [0.0..1.0) in interval in bigValues */
var output;
/* try some test values for input */
for (var i = 0; i<=20; i++) {
input = i * 0.05;
idx = Math.floor(input * (bigValues.length - 1));
frac = (input - (idx) / (bigValues.length - 1)) * (bigValues.length - 1);
if (frac == 0) { /* no need to calculate */
output = bigValues[idx];
}
else {
output = bigValues[idx] + (bigValues[idx+1] - bigValues[idx]) * frac;
};
document.write(input + ',' + output + '