диапазоны масштабирования - PullRequest
       13

диапазоны масштабирования

7 голосов
/ 21 сентября 2009

например у меня есть два диапазона

                       (1) 0 to 3
                       (2) 10 to 15

в диапазоне (1) у меня есть числа от 0 до 3, где 0 - это минимум, а 3 - это максимальное значение ... (оно также имеет значения 1 и 2) ...

Теперь я хотел изменить масштаб обоих диапазонов (1) и (2), чтобы они составляли от 0 до 1. Можете ли вы показать мне, как это сделать, или хотя бы указать на полезные сайты? Большое спасибо!

1 Ответ

28 голосов
/ 21 сентября 2009

То, что вы описываете, называется линейной интерполяцией .

В общем случае предположим, что у вас есть значение c между a и b, и вы хотите значение x между 0 и 1, которое основано на относительном положении c между a и b. Уравнение для x выглядит следующим образом:

x := (c - a) / (b - a)

Итак, если у вас есть значение от 10 до 15 (скажем, 11), и вы хотите значение от 0 до 1, вы вводите значения в уравнение выше:

x := (11 - 10) / (15 - 10)
x := 1/5

Другими словами, 11 составляет одну пятую пути от 10 до 15.


Еще более общий случай (когда у вас есть значение c между a и b и вы хотите значение x между y и z), x вычисляется следующим образом :

x := (c - a) * (z - y) / (b - a) + y

В вашем случае z = 1 и y = 0.

...