javascript - 将 0 - 1 中的任何数字归一化的函数

标签 javascript performance math normalization

我正在尝试制作一个函数,它接受一个数字并将其从 0 - 1 归一化到其最小和最大界限之间。例如:

如果我想在 5 到 15 之间标准化 10 的值,我称之为:

val = 10; normalize(val, 5, 15); 返回 0.5

在 -10 和 5 之间归一化一个值 0

val = 0; normalize(val, -10, 5); 返回 0.666

这是我想出的功能:

function normalize(val, min, max){
  // Shift to positive to avoid issues when crossing the 0 line
  if(min < 0){
    max += 0 - min;
    val += 0 - min;
    min = 0;
  }
  // Shift values from 0 - max
  val = val - min;
  max = max - min;
  return Math.max(0, Math.min(1, val / max));
}

我的问题是:这是标准化一维值的最有效方法吗?我将以 60fps 的速度每帧调用此函数数千次,因此我希望尽可能优化它以减少计算负担。我一直在寻找归一化公式,但我找到的都是 2 维或 3 维解。

最佳答案

为什么不只是:

(val, max, min) => (val - min) / (max - min); 

关于javascript - 将 0 - 1 中的任何数字归一化的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39776819/

相关文章:

javascript - 正则表达式 - 仅获取文本/数字和额外内容

asp.net - 单击时禁用按钮

algorithm - 如何计算一个人的年、月、日年龄?

javascript - jQuery hide() 方法确实显示具有显示 :none ! 重要的元素

javascript - 使用回调函数和理解箭头表示法的正确方法

c++ - 如何诊断/分析瞬时性能命中,C++

python - 比较 2 个列表以找到相等或近似匹配,而不进行 N^2 迭代

java - 在java中翻转标志的计数器

javascript - 计算 SVG 圆弧的中心

php - 有没有一种聪明的方法可以用纯数学来做到这一点