Создайте оптимальную сетку, основанную на 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, которые могли бы указать мне правильное направление?