Skip to content

Instantly share code, notes, and snippets.

@fpillet
Created May 26, 2011 12:07
Show Gist options
  • Save fpillet/993002 to your computer and use it in GitHub Desktop.
Save fpillet/993002 to your computer and use it in GitHub Desktop.

Revisions

  1. fpillet created this gist May 26, 2011.
    19 changes: 19 additions & 0 deletions scale.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,19 @@
    /* Scale a value from one range to another
    * Example of use:
    *
    * // Convert 33 from a 0-100 range to a 0-65535 range
    * var n = scaleValue(33, [0,100], [0,65535]);
    *
    * // Ranges don't have to be positive
    * var n = scaleValue(0, [-50,+50], [0,65535]);
    *
    * Ranges are defined as arrays of two values, inclusive
    *
    * The ~~ trick on return value does the equivalent of Math.floor, just faster.
    *
    */
    function scaleValue(value, from, to) {
    var scale = (to[1] - to[0]) / (from[1] - from[0]);
    var capped = Math.min(from[1], Math.max(from[0], value)) - from[0];
    return ~~(capped * scale + to[0]);
    }