siomin_ note

0 post

    #JavaScriptre-mapping

    指定範囲へ数値の再マッピング【JavaScript】

    April 06, 2020

    p5.jsなどを用いたクリエイティブコーディングでよく使う、数値の再マッピングをする関数の模倣です。

    ライブラリ外でも使いたくて自前に用意したので、ついでに解説します。

    数値の再マッピング?

    ある範囲にある数値を、指定範囲での同位の数値へ変換するという事です。

    例えば、

    0 ~ 10 という範囲上での 2 を、

    -50 ~ 50 の範囲上での数値に変換すると -30 になります。

    計算式

    (target_num - in_max) * (out_max - out_min) / (in_max - in_min) + out_max

    • target_num : 変換したい数値
    • in_min : 入力の最小値
    • in_max : 入力の最大値
    • out_min : 出力の最小値
    • out_max : 出力の最大値

    解説

    分かりやすく区分けして書きます。

    
    const map = (target_num, in_min, in_max, out_min, out_max) => {
    
        // 入力値(最大)と変換したい値の "差"
    	const input_diff = in_max - target_num
    
        // 入力値の長さ
    	const input_range = in_max - in_min
    
        // 出力値の長さ
    	const output_range = out_max - out_min
    
        // (差 / 長さ) で "割合" を出す
    	const percentage = input_diff / input_range
    
        // 前項の "割合" を使って "出力値側" の、最大値との "差" を出す
    	const out_diff = percentage * output_range
    
        // "出力の最大値" から "出力値側の差" を除く
        // ※ "output_range" からではなく "out_max" から
    	const rs = out_max - out_diff
    
        //結果
    	return rs
    }
    

    “差” を出す・除く部分で in_min , out_min を代わりに使っても同様の結果を出せます。


    © 2020, siomin_