我正在上一堂使用处理的课程。
我在理解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));
}