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
Кроме того, я должен отметить, что карта имеет немного другое значение в ruby, и более подходящее описание, вероятно, будет преобразование.
Других решений пока нет …