Frage

Wenn ich tile Quadrate und die Quadrate können durch ihre Koordinaten definiert werden, wie kann ich Formen aus mehreren Plätzen in Vektoren vereinfachen, die jede Kante der gesamten Form definieren? Pseudo-Code oder allgemeine Begriffe sind in Ordnung.

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top