我正在上一堂使用处理的课程。
我在理解map()函数时遇到问题。
根据它的文档(http://www.processing.org/reference/map_.html):

将数字从一个范围重新映射到另一个范围。
在上面的第一个示例中,数字25从0到100范围内的值转换为从窗口(0)的左边缘到右边缘(宽度)的值。
如第二个示例所示,超出范围的数字不会限制在最小和最大参数值,因为超出范围的值通常是有意且有用的。

是类似于随机函数,但范围是由用户设置的吗?另外,我无法理解第一个示例的解释:它说数字被转换为0到100的值,该值从屏幕的边缘到边缘。我在想为什么不直接将数字25转换为与屏幕有关的值的范围?

最佳答案

map()功能是一个有用的快捷方式,您不会后悔花了很多时间来理解它。
这是它的语法:

variable2 = map(variable1,min1,max1,min2,max2);

该函数在两个值范围之间建立比例:

min1:min2 = max1:max2

您可以将其读取为:min1到min2,max1到max2。
variable1存储介于第一范围min1〜max1之间的值。
variable2获得第二个范围min2〜max2之间的值。

这是函数为程序员解决的方程式:

variable2 = min2 +(max2-min2)*((variable1-min1)/(max1-min1))

这是Processing map()函数背后的Java代码:

static public final float map(float value,
                              float istart,
                              float istop,
                              float ostart,
                              float ostop) {
    return ostart + (ostop - ostart) * ((value - istart) / (istop - istart));
}

09-03 18:34