2017-02-27 3 views
-2

In processing (eine Java-basierte Sprache) gibt es eine sehr praktische Funktion namens map(), die 5 Argumente dauert. Es wird eine Nummer von einem Bereich zu einem anderen neu zugeordnet. Werfen Sie einen Blick auf die offizielle Dokumentation here für Details.Was entspricht map() (von der Verarbeitung) in anderen Sprachen?

Ich habe Probleme, es in anderen Sprachen zu finden, besonders in Java. Oder ist die beste Lösung, um meine eigene Funktion zu erfüllen?

Antwort

0

Das ist nur ein Wert interpoliert, die (nach der Verarbeitung Argument-Namen) entspricht:

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

Diese ziemlich trivial ist, in der Tat drehen Sie Ihren Wert in einen Wert in [0.0, 1.0], der Ihnen sagt, wie viel zu starten oder zu stoppen ist (0.0 bei start1, 1.0 bei stop1) und dann drehen Sie es in einen Wert proportional zu dem anderen Intervall.

0

Es ist eine einfache Rechnung:

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

Die Verarbeitung ist Open-Source, daher können Fragen wie diese beantwortet werden, indem Sie den Quellcode auf GitHub here betrachten.

Insbesondere here ist ein Link direkt auf die map() Funktion, die wie folgt aussieht:

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; 
    } 
Verwandte Themen