Man könnte jeweils vom Mittelpunkt aus "kreisförmig" alle Quadrate durchgehen und schauen, ob sie frei sind oder nicht.
Sollte eines frei sein, könnte man zählen wie groß die freie Fläche ist, zu der es gehört. Sobald man so eine Fläche gefunden hat, die groß genug für das Objekt ist, muss man auf die Form vergleichen, passt diese ist die gesuchte Position gefunden.
Nur so mein erster Gedanke dazu, sicherlich reichlich Möglichkeiten das zu optimieren.
z.B. durch zwischenspeichern der freien Flächen in ner Liste.
d.h. zuerst hat man genau eine solche Fläche, jeweils nach dem einfügen eines Objektes wird dann getestet ob es die bisherigen Flächen in mehrere aufteilt, wenn ja wird die Liste aktualisiert.
Um nun ein Objekt hinzuzufügen geht man die Flächen durch, sucht die "beste" und gut ist.
Hab das jetzt aber nicht so weiter durchdacht 