Ваша задача - поместить n
прямоугольники с фиксированным отношением C=W/H = 4/3
в прямоугольный контейнер angular с заданными Width
и Height
Пусть масштабированная высота прямоугольника равна h
(неизвестно пока), ширина равна w = C * h
Каждая строка сетки содержит nr
маленькие прямоугольники
nr = Floor(Width / (C * h)) // rounding down
Каждый столбец содержит nc
строк
nc = Floor(Height / h)
Запись неравенство
n <= nc * nr
n <= Floor(Width / (C * h)) * Floor(Height / h)
и решить его для неизвестного h
(найти максимально возможное h
значение)
Для реальных значений параметров h
может быть найдено получение начального приблизительного значения:
h0 = Ceil(Sqrt(Width * Height / (n * C))) //rounding up
и уменьшающееся значение h
, пока неравенство не станет истинным