2017-10-27 3 views
0

Ich möchte in der Lage sein, ein Bild als Matrix zu machen und es in ein Polygon zu verwandeln.Wie kann ich eine Matrix in ein Polygon verwandeln

Das Bild wird eine unregelmäßige Form mit vielen Winkeln und im wesentlichen seine Außenkanten finden, die in ein Polygon (Array von Eckpunkten) verarbeitet werden können

Das Bild bereits so kodiert ist, kann ich alle seine Pixel erhalten, mache die Gesamtform (gefüllt). Ich weiß, wie ich einen Ursprung dafür finden und die anderen Pixel damit ausgleichen kann.

[Hintergrund] Ich versuche, Risiko zu einem Spiel zu machen. Ich möchte alle Territorien als Polygone abbilden, damit ich die Maus erkennen kann.

Ich weiß, dass ich einfach die Maus x, y übergeben und durch die Pixel iterieren kann, aber die Karte ist groß und das wäre nicht sehr effizient.

Hinweis: Ich plane, die Polygon-Bibliothek von libgdx zu verwenden, um sie zuzuordnen. Es benötigt ein eindimensionales Array von Floats für seine Eckpunkte.

+0

"Risiko in ein Spiel" * Gesicht Palme * eine digitale/programmierte/Java-Anwendung ... – ICP

+0

Durch Bild zu Polygon, meinst du nur das 2D-Bild auf ein flaches Vieleck, so dass die Maus klicken Sie einfach auf ein x, y Punkt? – markspace

+0

OK, ich denke, ich sehe, wohin das mit der Bibliothek libgdx geht. Ich nehme an, der richtige Weg ist "manuell". Für jede Karte/jedes Bild, die Sie haben, müssen Sie die Gebiete von Hand umreißen und diese Liste dann als separaten Parameter der Bibliotheksmethode zuführen. – markspace

Antwort

0

Eine Möglichkeit, dies zu tun, besteht darin, alle Pixel in der Form zu durchlaufen und diejenigen zu finden (und zu separieren), die neben Pixeln liegen, die nicht vom Bild getrennt sind.

Beispiel:

00111000 
01111100 
01111000 
00111110 

Ich könnte sich die oben in

00111000 
01000100 
01001000 
00111100 

Das ist sehr gut, aber was ich wirklich will, ist es wie folgt aussehen:

00101000 
01000100 
01001000 
00100100 

so Ich könnte dann 2,0 -> 4,0 -> 5,1 ... und so weiter gehen

Verwandte Themen