当前位置: 首页 > 知识库问答 >
问题:

map()在处理过程中是如何工作的?

金钧
2023-03-14

我正在上一门使用处理的课。

我在理解map()函数时遇到了问题。

根据文件记载(http://www.processing.org/reference/map_.html):

将数字从一个范围重新映射到另一个范围。

在上面的第一个示例中,数字25从0到100范围内的值转换为从窗口的左边缘(0)到右边缘(宽度)的值。

如第二个示例所示,范围之外的数字不会被钳制到最小和最大参数值,因为范围之外的值通常是有意的和有用的。

类似于随机函数,但范围由用户设置?此外,我无法理解第一个例子的解释:它说数字被转换为0到100的值,变成了从屏幕边缘到边缘的值。我在想,为什么不直接把数字25转换成屏幕上的数值范围呢?

共有3个答案

巢靖
2023-03-14

如果你仔细想想,

只不过是计算百分比,

在百分比中,你的最终范围是0-100,初始范围是0-max(例如,你在所有科目中的最大分数是500,那么初始范围是0-500),

现在的解决方案,你可以做什么:

为了一步一步去理解

你的号码

你的初始范围

(finalMin-finalMax)你的最终射程

然后

N

________________________X(finalMax-finalMin)=表示N

(首字母最大-首字母最小)

现在N和百分比完全一样,而不是0到100作为范围,你有0到(finalMax finalMin)作为范围

为了将其转换为map()函数在处理过程中所做的finalMin到finalMax范围,

只要做最后一件事

现在你得到的答案是N

希望你们能理解解决方案

边浩漫
2023-03-14

可以这样想:将0到10的范围分成100个相等的部分。(每个部分将得到0.1)现在将0到100的范围分成100个相等的部分(每个部分将得到1),因此0到10范围内的0.1等于0到100范围内的1。如果你想找出0到10之间的5在0到100之间的位置,用5除以0到10部分的大小,再乘以0到100部分的大小,你就可以得到答案了!(50)

另外,我知道这不是它实际的工作原理,但我只是想举个例子来说明问题。

高高雅
2023-03-14

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));
}
 类似资料:
  • 上周我阅读了有关vertx的文档。我不明白的是vertx处理器是如何工作的?例如 和服务器是: (P.S.我知道我首先应该检查处理程序是否成功,然后采取一些措施,但为了简化代码,我删除了这种检查,如果在30秒内没有任何响应,则处理程序中会出现异常,也会从正式文档中删除。) 从上面的代码中,客户端每秒发送请求,并且不等待响应,但是它有一个处理程序,当响应到来时将执行该处理程序。 jdbcVertx监

  • 我试图在Pytorch中实现seq2seq模型,我对批处理有一些问题。例如,我有一批数据,其尺寸是 [batch_sizesequence_lengthsencoding_dimension] 其中,批次中每个示例的序列长度不同。 现在,我通过将批处理中的每个元素填充到最长序列的长度来完成编码部分。 通过这种方式,如果我向我的网络输入一个与上述形状相同的批次,我会得到以下输出: 输出,形状 隐藏状

  • 上面的以下代码用于在Minim库的处理过程中创建音频可视化程序。出于某种原因,我很难看到在代码的For循环中是如何形成一个圆的。总的来说,我还试图分解代码,并对正在发生的事情有更深的理解。我对以下内容感到困惑:'float x=250+cos(a)*(20*player.mix.get(I)+100);‘20倍加100是用来放大样本的吗?如果是这样,那么为什么圆可视化器不显示时,我摆脱20倍,只有

  • 我正在探索Cadence,有一个关于故障恢复的问题。我知道工作流是容错的(工作流历史被维护),以防工作流工作人员失败。我找不到活动工作人员的相同保证。例如:假设一个活动对服务A进行了RPC调用,这改变了一些远程对象状态;现在,让我们假设调用成功了,但活动工作人员在通知Cadence服务之前丢失了。在这种情况下,Cadence会在一个新工作人员上再次安排活动吗? 我知道如果服务A是幂等的,上述可能不

  • 我想了解Spring Batch是如何进行事务管理的。这不是一个技术问题,而是一个概念性的问题:Spring Batch使用什么方法?这种方法的后果是什么? 让我试着澄清一下这个问题。例如,在TaskletStep中,我看到步骤执行通常如下所示: 准备步骤元数据的几个JobRepository事务 每一块要处理的业务事务 更多JobRepository事务,用区块处理的结果更新步骤元数据 这似乎是

  • 我试图将CORS过滤器添加到SpringWeb应用程序中,但该过滤器未被执行。我在这里遵循了相关步骤:https://spring.io/guides/gs/rest-service-cors/无济于事。我没有用Spring靴。我正在3.0 servlet规范容器中使用Spring的WebApplicationInitializer引导我的应用程序。 我的应用程序中的其他一切都在工作:配置类、控制