我正在尝试制作一个函数,它接受一个数字并将其从 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/