Я хочу в общем случае интерполировать между диапазоном входных значений (скажем, между A и B) и получить диапазон выходных значений (скажем, между C и D). Иногда я хочу зафиксировать значение (чтобы B+10000 по-прежнему выдавало D), а иногда нет. Как это сделать?
Например, учитывая скорость ввода от 20 до 80 миль в час, я хочу настроить уровень масштабирования моей карты от 17 до 15:
Без зажима
| \
| \
17 | \
| \
| \
| \
| \
15 | \
| \
+----------\-
20 80 \
С зажимом
|
17 |----
| \
| \
| \
| \
15 | ----
|
+------------
20 80
Я нашел эту вспомогательную функцию, но (а) она не поддерживает фиксация сама по себе, требующая второго вызова функции, и (б) он поддерживает ввод только между 0 и 1.