我正在尝试重新创建在Java处理中使用的地图函数。它永远不会崩溃,我只会得到不好的输出。
在下面,您将找到我当前正在使用的功能。我完全被困在这里,所以任何帮助将不胜感激。
最上面的两行特别是在任何数字超出函数范围的情况下。
function map(number, loworig, highorig, lowconversion, highconversion)
{
if (number < loworig) number = loworig;
else if (number > highorig) number = highorig;
var num = highorig-loworig;
var newnum = number-num;
var ratio = newnum/num;
var convnum = highconversion - lowconversion;
var newconv = convnum*ratio;
var result = newconv + convnum;
return result;
}
编辑:我只是回头看我的代码,并且我做了一些硬编码的数字移位,以使其在工作的时间内正常工作。基本上,我猜不到该功能是否正确,但我似乎无法弄清楚为什么该功能不起作用。
从源代码中(在注释上进行了较小的重新格式化):
/**
* Re-maps a number from one range to another. In the example above,
* the number '25' is converted from a value in the range 0..100 into
* a value that ranges from the left edge (0) to the right edge (width)
* of the screen.
*
* Numbers outside the range are not clamped to 0 and 1, because
* out-of-range values are often intentional and useful.
*/
static public final float map(float value,
float start1, float stop1,
float start2, float stop2) {
return start2 + (stop2 - start2) * ((value - start1) / (stop1 - start1));
}
因此转换为JavaScript:
function map(value, start1, stop1, start2, stop2) {
return start2 + (stop2 - start2) * ((value - start1) / (stop1 - start1));
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句