Создайте оптимальную сетку, основанную на n-элементах, общей площади и соотношении H: W

Я создаю приложение, которое берет несколько прямоугольников одинакового размера и размещает их в сетке на экране. У меня есть большая часть логики для изменения размера и центрирования прямоугольника внутри ячейки, но у меня возникли проблемы с реальной частью, которая определяет сетку, которой должны соответствовать прямоугольники.

В идеале, в конце концов, у меня будет такая функция (псевдокод):


function getGridDimensions (rect surface, int numItems, float hwRatio) {
    // do something to determine grid-height and grid-width
    return gridDimensions;
}

Мой первоначальный удар по этому связан с чем-то вроде этого:


gridHeight = surface.width / sqrt(numItems);
gridWidth = surface.height / sqrt(numItems);

Это бы хорошо работало, если бы все мои вещи были идеальными квадратами, но, поскольку они прямоугольники, в каждой ячейке много неиспользованного пустого пространства.

Какие-нибудь мысли или условия для Google, которые могли бы указать мне правильное направление?

Ответы на вопрос(1)

Ваш ответ на вопрос