Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何规范化从[a,b]到[c,d]的范围,其中a映射到d,b映射到c_Javascript_Angularjs_Algorithm - Fatal编程技术网

Javascript 如何规范化从[a,b]到[c,d]的范围,其中a映射到d,b映射到c

Javascript 如何规范化从[a,b]到[c,d]的范围,其中a映射到d,b映射到c,javascript,angularjs,algorithm,Javascript,Angularjs,Algorithm,例如,我有一个从[0,15]到[0,1]的距离范围,我需要将它们映射到[0,1]元素的不透明度 距离为0的元素不透明度应为1,距离为15的元素不透明度应为0 我尝试了法线最小最大归一化,它将0映射到0,15映射到1,但我需要相反的结果 我用于常规标准化的公式: ((currentValue-min)/(max-min))*(newMax-newMin)+newMin((currentValue-min)/(max-min))*(newMin-newMax)+newMax) 你应该做这个把戏 公式

例如,我有一个从[0,15]到[0,1]的距离范围,我需要将它们映射到[0,1]元素的不透明度

距离为0的元素不透明度应为1,距离为15的元素不透明度应为0

我尝试了法线最小最大归一化,它将0映射到0,15映射到1,但我需要相反的结果

我用于常规标准化的公式:

((currentValue-min)/(max-min))*(newMax-newMin)+newMin
((currentValue-min)/(max-min))*(newMin-newMax)+newMax

你应该做这个把戏

公式应为:

newMax - ((currentValue - min)/ (max - min)) * (newMax - newMin) 
((currentValue-min)/(max-min))*(newMax-newMin)
计算从根到当前值的新距离,由于新范围的根位于
newMax
,因此,我们得到了公式。

您应该先
.reverse()
范围数组。从这里开始,它只是匹配两个数组的边界。可能是这样:

var distances =  [0,1,2,3,4,5,6];
var opacity = {min: 0, max: 1};

var result = [];

distances.reverse().forEach(function(distance){
  var step = opacity.min+((opacity.max-opacity.min)/distances.length);
  var item = {
    distance: distance,
    opacity: opacity.min+distance*step
  }
  result.push(item);
});

console.log(result);

你用什么语言?纯CSS无法处理算法。我投票将此问题作为离题题结束,因为这是一个数学问题。@KarolyHorvath是的,这是一个数学问题,但它可能在javascript/angular中有特定的实现,或者有人可能在编程中遇到过类似的问题。我还添加了公式,这几乎正是我在Javascript中使用的代码。你的公式有什么问题?@PhamTrung它将0映射到0,15映射到1,我正在寻找15映射到0,0映射到1