2017-02-27 5 views
-2

processing(Javaベースの言語)には、map()という非常に便利な関数があり、5つの引数をとります。ある範囲から別の範囲に数値を再マップします。詳細については、公式文書hereをご覧ください。他の言語のmap()(処理中)に相当するものは何ですか?

他の言語、特にJavaで同じことがわかりました。それとも、私自身の機能を作るのに最高の解決策ですか?

答えて

0

だけ(処理引数名以下)に相当する、値を補間しています:

map(value, start1, stop1, start2, stop2) == 
    ((value - start1)/(stop1 - start1)) * (stop2 - start2) + start2 

これはかなり簡単です、確かにあなたの価値を回します[0.0, 1.0]の値に変換します。これは、開始または停止にどれくらいの距離があるかを示します(start1で0.0,1.0、stop1で)。その後、他の間隔に比例した値に変換します。

0

それは簡単な計算です:

static double map(double value, double start1, double stop1, double start2, double stop2) { 
    return (value - start1)/(stop1 - start1) * (stop2 - start2) + start2; 
} 
0

処理はオープンソースなので、GitHub hereのソースコードを見ると、これらの質問に答えることができます。

具体的には、hereは次のようになりますmap()機能への直接リンク、次のとおりです。

static public final float map(float value, 
           float start1, float stop1, 
           float start2, float stop2) { 
    float outgoing = 
     start2 + (stop2 - start2) * ((value - start1)/(stop1 - start1)); 
    String badness = null; 
    if (outgoing != outgoing) { 
     badness = "NaN (not a number)"; 

    } else if (outgoing == Float.NEGATIVE_INFINITY || 
       outgoing == Float.POSITIVE_INFINITY) { 
     badness = "infinity"; 
    } 
    if (badness != null) { 
     final String msg = 
     String.format("map(%s, %s, %s, %s, %s) called, which returns %s", 
         nf(value), nf(start1), nf(stop1), 
         nf(start2), nf(stop2), badness); 
     PGraphics.showWarning(msg); 
    } 
    return outgoing; 
    } 
関連する問題