如何在JavaScript中将任意数字范围缩放到0到1之间

时间:2014-03-02 04:11:37

标签: javascript math

我正在使用网络音频API做这个小实验,我希望垂直轴影响振荡器的增益值(参见下面的小提琴)。我需要将画布顶部和画布底部之间的值缩放到0到1之间,以便Y轴上的mousemove事件可听见地影响增益。我认为这是一个通用的数学问题,可以应用于任何数字范围,但我只是不知道该怎么做。

http://jsfiddle.net/63Y54/

var audioContext = new webkitAudioContext();



oscillator = undefined ;

$("#myCanvas").mousedown(function() {
    var osc = audioContext.createOscillator(); 
    gainNode = audioContext.createGainNode();
    oscillator = osc;
    oscillator.start(0);

});


$("#myCanvas").mouseup(function() {
    oscillator.stop();
});



$("#myCanvas").mousemove(function(event) {
    console.log(event.pageX);
    console.log(event.pageY);
    oscillator.type = "sawtooth";
    gainNode.gain.value = (event.pageX);
    oscillator.connect(gainNode); 
    gainNode.connect(audioContext.destination); 
    oscillator.frequency.value = event.pageX;


});

2 个答案:

答案 0 :(得分:1)

您可以将值除以最大值。

假设你的值是50,值的范围是0到100,然后是50/100 = 0.5。

同样,如果您的值为0,则0/100 = 0.

如果您的值为100,则100/100 = 1.

答案 1 :(得分:0)

让我们说屏幕的宽度是w,高度是h。

你的回答:

currentXPosition / w的 currentYPosition / h的

您可以根据自己的要求对其进行舍入。对于Y,你可能需要否定它,因为Y Pos是负的,即 - (currentYPosition / h)