在其他语言中,map()(来自处理)的等价物是什么?

时间:2017-02-27 03:27:41

标签: java processing

processing(基于java的语言)中,有一个非常方便的函数叫map(),它有5个参数。它将一个数字从一个范围重新映射到另一个范围。有关详细信息,请查看官方文档here

我很难在其他语言中找到它,特别是在java中。或者是制作我自己的功能的最佳解决方案?

3 个答案:

答案 0 :(得分:0)

这是一个简单的计算:

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

答案 1 :(得分:0)

只是内插一个值,相当于(跟随处理参数名称):

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

这相当简单,实际上您将值转换为[0.0, 1.0]中的值,它会告诉您启动或停止它的距离是多少({1}}在start1,0.0在stop1然后你把它变成一个与另一个间隔成比例的值。

答案 2 :(得分:-1)

处理是开源的,因此可以通过查看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;
  }