Verfahren zum als Punkte in Vektoren definiert geflieste Quadrate Kombinieren
Lösung
Das erste, was ich denken kann, ist (wahrscheinlich nicht die effizienteste Art und Weise):
1) Holen Sie den Begrenzungsrahmen des gesamten Fliesen - die min (x), min (y) bis max (x), max (y) für alle x und y Ihrer Fliesen
2) Für jede Zeile, mit STATE beginnen == Leer, Iterierte über jede Spalte: STATE Änderungen FULL, wenn Sie einen Platz treffen, und leer, wenn Sie ein Loch finden. Jedes Mal, STATE geht von leer bis voll, speichern Sie die linke Hand Liniensegment von diesem Platz und jedes Mal STATE von FULL geht auf LEER, speichern Sie die rechte Hand Liniensegment von diesem Platz.
3) Wiederholen oben in der Y-Achse
Jetzt haben Sie einen Satz nur die äußersten Liniensegmente enthalten, können Sie diese kombinieren, die kolinear sind usw. und die Gesamtform erhalten.
Dies funktioniert für nicht-konvexe Formen und auch, wenn Sie Löcher in Fliesen haben.