Sie können dies durch eine Reihe von "freien" Rechtecken modellieren, beginnend mit einem einzelnen mit Koordinaten von 0,0, Größe (x, y). Jedes Mal, wenn Sie ein weiteres Rechteck hinzufügen müssen, wählen Sie eines der verbleibenden "freien" Rechtecke, generieren Sie ein neues Rechteck (mit Koordinaten oben links und Größe, so dass es vollständig enthalten ist) und teilen Sie dieses Rechteck sowie alle anderen überlappenden " frei "Rechteck, so dass Kinder verbleibenden freien Raum auszudrücken. Dies führt zu 0 bis 4 neuen Rechtecken (0, wenn das neue Rechteck genau der Größe des alten freien Rechtecks entspricht; 4, wenn es in der Mitte ist, und so weiter). Im Laufe der Zeit werden Sie immer mehr und mehr freie Bereiche bekommen, also werden Rechtecke, die Sie erstellen, auch kleiner.
Ok, keine sehr ausführliche Erklärung, es ist einfacher, auf Whiteboard zu zeigen. Aber das Modell ist eines, das ich verwendet habe, um den Startort für neu geschnittene, eingefügte GUI-Komponenten zu finden; Es ist einfach, die verfügbaren Bildschirmbereiche zu verfolgen und (zum Beispiel) den linken oder obersten Bereich auszuwählen.
http://gamedev.stackexchange.com/questions/6730/how-to-randomly-place-rectangle-inside-a-larger-bounding-rectangle-without-inter –