Изменение величины (от-до) исходя из другой величины (от-до)

Помогите в вопросе, может кто сталкивался.

Не могу сам додуматься как написать в математической формуле решение. Есть величины длины и высоты от которых будет меняться третье число (оно допустим от 0 до 8), именно, что от 0 до 8 иначе перебор или недобор.

То есть, есть величины:

from random import*
width     #длина  - величина изменяемая пользователем (от 0 до 640)
height    #высота - величина изменяемая пользователем (от 0 до 360)
width_max = 640     #длина - величина постоянная
height_max = 360    #высота- величина постоянная
size      # размер от 0 до 8ми (который мы будем получать имея входные данные "длины" и "высоты")

И необходимо изменять Size исходя из значения width и height, чем больше тем больше другое...

Если кто-то поможет в написании формулы или подскажет может уже есть готовая функция (изменения значения от-до исходя из значений от-до) Заранее спасибо.


Ответы (2 шт):

Автор решения: CrazyElf

Если я вас правильно понял, то как-то так:

max_width = 640
max_height = 360
max_size = 8
size = (max_size + 1) * width * height // (max_width * max_height + 1)
→ Ссылка
Автор решения: becouse

Можно рассмотреть такой вариант. Width от 0 до 4, height от 0 до 4.

   max_width =640
   max_height =360
   bit_width=max_width//4
   bit_height=max_height//4

   d_width= width /bit_width
   d_height= height /bit height
   size = d_width + d height
   size_int = round (size, 0)

Вообще чтобы перевести отрезок [0,a] в [0,b] нужно все элементы [0,a] умножить на b/a.

Для пилообразной функции с максимумом в 300 и нулем в 150 и 450 получаем

   d_width = 4-4*abs(witdh-300)/150
→ Ссылка