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
..然而它并不明显!
map(-30, -89.75, 89.75, 0, 360)
我正在寻找这样的东西:
有人告诉我有一种方法可以使用http://ruby-doc.org/core-1.9.3/Enumerable.html#method-i-map
..然而它并不明显!
如果我理解正确,我认为您只想将一个范围统一映射到另一个范围。所以,我们只需要计算它在输入范围内有多远,并返回输出范围的那一部分。
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
另外,我应该注意到 map 在 ruby 中的含义有点不同,更合适的描述可能是transform。