如何使用Ruby的Enumerable .map方法在C ++中执行类似于map的操作

时间:2012-12-07 03:47:22

标签: c++ ruby enumerable

map(-30, -89.75, 89.75, 0, 360) 

我正在寻找这样的地方:

  • -30是输入值。
  • -89.75至89.75是可能的输入值的范围
  • 0 - 360是要映射到
  • 的最终范围

我被告知有办法使用http://ruby-doc.org/core-1.9.3/Enumerable.html#method-i-map

执行此操作

..然而,它不是很明显!

1 个答案:

答案 0 :(得分:1)

如果我理解正确,我想你只想将一个范围统一映射到另一个范围。因此,我们只需要计算它在输入范围内的距离,并返回输出范围的那一部分。

def map_range(input, in_low, in_high, out_low, out_high)
  # map onto [0,1] using input range
  frac = (input - in_low) / (in_high-in_low)
  # map onto output range
  frac * (out_high-out_low) + out_low
end

另外,我应该注意到地图在ruby中有一些不同的含义,更合适的描述可能是 transform