Переопределение стоимости
Обработка имеет большую функцию, которую я использую все время:
map(value, low1, high1, low2, high2)
http://processing.org/reference/map_.html
Он переназначает value
(который имеет ожидаемый диапазон от low1
до high1
) в целевой диапазон от low2
до high2
).
Я хочу понять математику за ней, чтобы я мог использовать ее на других языках.
Кто-нибудь хочет бросить мне кость и помочь мне ее перестроить? Я понимаю, что это ерп, который был перемасштабирован и снова смещен... чувствуя, что мозг мертв сегодня утром.
Ответы
Ответ 1
Из вашего описания, это должно быть сделано, правильно?
low2 + (value - low1) * (high2 - low2) / (high1 - low1)
Найдите, как далеко вы попадете в первый диапазон, масштабируйте это расстояние на отношение размеров диапазонов и насколько далеко вы должны находиться во втором диапазоне.
Ответ 2
Я хотел бы добавить, что иногда полезно найти коэффициент между low1 и high1, чтобы вы могли модулировать его кривой, прежде чем использовать коэффициент как LERP t.
Итак, t = (значение-low1)/(high1-low1), чтобы получить относительное положение значения в строке low1 до high1.
Затем вы можете модулировать t с помощью некоторого фильтра кривой, например, гамма, смещение, коэффициент усиления и т.д. Кроме того, зажмите t между 0 и 1, если вы ограничите значения, которые превышают установленные минимумы и максимумы.
И затем используйте t для LERP между low2 и high2 как: finalvalue = low2 * (1-t) + high2 * t