Я делаю рельеф местности, и у меня есть библиотека perlin, которая дает мне случайные числа от -1 до +1. Я хочу преобразовать это в шкалу 0-255. Как правильно это сделать?
mathematics
Thraka
источник
источник
Диапазон
-1
до1
общего диапазона2
. Так что вам нужно масштабировать его соответствующим образом, чтобы добраться до255
. Что-то вроде этого:Таким образом, вы сначала добавляете
1
, чтобы получить0..2
затем умножить с,127.5
чтобы получить диапазон0..255
источник
Через силу масштабирования и смещения.
Из вашего значения вычтите минимальное значение вашего диапазона. Это даст вам значение в диапазоне [0..2].
Разделите это на ширину исходного диапазона, чтобы получить значение в диапазоне [0..1].
Умножьте это на ширину целевого диапазона, чтобы получить значение в диапазоне [0..255].
Добавьте базу целевого диапазона, чтобы получить значение в целевом диапазоне, которое для этого случая совпадает с предыдущим шагом.
В итоге:
источник
Надеюсь это поможет.
источник
Переведите входной диапазон, чтобы получить минимальное значение, равное нулю, добавив 1 (отрицательное значение минимального значения) -1 .. 1 -> 0 .. 2
Поскольку выходной диапазон начинается с нуля, ничего для этого не делайте.
Масштабируйте новый входной диапазон так, чтобы он соответствовал выходному диапазону, это легко, поскольку теперь они оба начинаются с нуля: умножьте значение на 255/2 0..2 * 2/255 -> 0..255
Выполнено!
Пример:
0,5 пойдет: (0,5 + 1) * 127,5 = 191,25 -0,5 пойдет: (-0,5 + 1) * 127,5 = 63,75
источник
Допустим,
x
исходный ввод иy
ожидаемый вывод. У нас есть как минимум две точки (x, y) (-1, 0) (1, 255)Так как мы хотим сделать линейную интерполяцию, мы можем посмотреть в уравнение формы
y = m*x + c
С вышеупомянутыми двумя пунктами мы можем решить для
m
иc
только это будет сделано, вы получите уравнение преобразования.Обратите внимание, что этот метод работает и для других типов уравнений. Например, если вы хотите экспоненциальную или квадратичную интерполяцию.
источник
v = (1-a)*x + (a)*y
. Я не понимаю, как этот ответ имеет большое отношение к задаваемому вопросу, так как все, что он хочет, - это отображение диапазона.