【问题标题】:How to scale any number range to between a value of 0 and 1 in JavaScript如何在 JavaScript 中将任何数字范围缩放到 0 和 1 之间的值
【发布时间】:2014-03-02 04:11:37
【问题描述】:

我正在用网络音频 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;


});

【问题讨论】:

    标签: javascript math


    【解决方案1】:

    你将你的价值除以可能的最大值。

    假设您的值是 50,值的范围是 0 到 100,那么 50/100 = 0.5。

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

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

    【讨论】:

    • 虽然正确,但这更像是一个评论而不是一个答案。也许您可以通过一两个数学实现的示例进行扩展?
    • 谢谢。现在我觉得自己像个笨蛋
    【解决方案2】:

    假设屏幕的宽度是 w,高度是 h。

    你的答案:

    当前XPosition/w 当前位置/小时

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-29
      • 1970-01-01
      • 1970-01-01
      • 2015-10-18
      • 1970-01-01
      • 2012-06-28
      相关资源
      最近更新 更多