在其他编程语言(如处理)中,有一个功能可以将数字范围内的数字转换为不同范围内的数字.我想要做的是将鼠标的X坐标转换为例如0和15之间的范围.因此,浏览器的窗口尺寸(对于每个用户而言都不同)可能是,宽1394像素,当前的X坐标可能是563像素,我想将其转换为0到15的范围.
我希望找到一个jquery和javascript的功能,内置这个功能.我可以弄清楚自己做的这个数学,但我宁愿用更简洁和动态的方式来做.
我已经使用以下代码捕获屏幕尺寸和鼠标尺寸:
var $window = $(window); var $document = $(document); $document.ready(function() { var mouseX,mouseY; //capture current mouse coordinates var screenW,screenH; //capture the current width and height of the window var maxMove = 10; windowSize(); $document.mousemove( function(e) { mouseX = e.pageX; mouseY = e.pageY; }); $window.resize(function() { windowSize(); }); function windowSize(){ screenW = $window.width(); screenH = $window.height(); } });
感谢您的任何帮助,您可以提供.
解决方法
如果您希望在Number类中访问此类,可以将其添加为…
Number.prototype.map = function (in_min,in_max,out_min,out_max) { return (this - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; }
…其中您指定要输出的预期输入的“最小”和“最大”值以及要输出的“最小”和“最大”值.如果传入值本身不在in_min和in_max之间,这可能会产生超出范围的值.
使用它像这样:
var num = 5; console.log(num.map(0,10,-50,50)); // 0 console.log(num.map(-20,-100,100)); // 150
编辑:I’ve made this available as a Gist,所以你不必在今后看看.