Erstellen Sie ein optimales Raster basierend auf n Elementen, Gesamtfläche und H: W-Verhältnis

Ich erstelle eine Anwendung, in der mehrere gleich große Rechtecke in einem Raster auf dem Bildschirm positioniert werden. Ich habe den größten Teil der Logik für die Größenänderung und Zentrierung eines Rechtecks in einer Zelle abgeschlossen, aber ich habe Probleme mit dem tatsächlichen Teil, der das Raster definiert, dem die Rechtecke entsprechen müssen.

Ideally, am Ende hätte ich eine Funktion wie diese (Pseudocode):


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

Mein ursprünglicher Stich dabei beinhaltete so etwas:


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

Dies würde gut funktionieren, wenn meine Objekte alle perfekte Quadrate wären, aber da es sich um Rechtecke handelt, ist in jeder Zelle eine Menge unbenutzter Leerraum vorhanden.

Haben Sie irgendwelche Gedanken oder Begriffe zu Google, die mich in die richtige Richtung weisen könnten?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage