Это должно сработать:
define map(v, r1, r2, t1, t2)
{
norm = (v-r1)/(r2-r1);
return (t1*(1-norm) + t2*norm);
}
Объяснение:
- норма v масштабируется до значения от 0 до 1, относящегося к r1и r2.
- Следующая строка вычисляет точку между t1 и t2, используя norm в процентах.
Пример использования:
map (0, 0, 100, -2, 2) // 0 mapped to -2..2 in the range 0..100
-2.0
map (50, 0, 100, -2, 2) // 50 mapped to -2..2 in the range 0..100
0
map (100, 0, 100, -2, 2) // 100 mapped to -2..2 in the range 0..100
2.0
map (-90, -100, 20, -4, 2) // -90 mapped to -4..2 in the range -100..20
-3.5