Ich fange gerade an ein Art Mustererkennungsproblem in Java umzusetzen.
Auf einem regelmässigen Gitter ( horz. und vert. gleicher Abstand) gibt es ausgezeichnete Punkte, die mit einem "x" markiert sind.
Wie viele Rechtecke kann man bilden, indem man jeweils vier der x-Punkte als Eckpunkte nimmt und diese durch gerade Strecken verbindet ?
Die Rechtecke dürfen auch "schräg" liegen.
Zusätzlich soll ich ermitteln wieviele der Rechtecke Quadrate sind und eine Flächenstatistik erstellen.
Ein Beispiel der Daten die ich einlese:
Ich suche gerade einen möglichst effizienten Algorithmus und habe irgendwie noch keine Ahnung.
Hat jemand eine gute Idee ?
Auf einem regelmässigen Gitter ( horz. und vert. gleicher Abstand) gibt es ausgezeichnete Punkte, die mit einem "x" markiert sind.
Wie viele Rechtecke kann man bilden, indem man jeweils vier der x-Punkte als Eckpunkte nimmt und diese durch gerade Strecken verbindet ?
Die Rechtecke dürfen auch "schräg" liegen.
Zusätzlich soll ich ermitteln wieviele der Rechtecke Quadrate sind und eine Flächenstatistik erstellen.
Ein Beispiel der Daten die ich einlese:
Java:
*Dies ist ein 4x5 Beispiel mit 2 Rechtecken, davon 2 Quadrate
*1. Zeile: Dimensionen, danach Gitter zeilenweise
*/
4 5
0x0x0
0x000
0x0xx
00x00
Als Ausgabe möchte ich so etwas produzieren wie:
1.Rechteck: (1,2) (1,4) (3,4) (3,2)
2.Rechteck: (1,4) (3,5) (4,3) (2,2)
Insgesamt: 2 Rechtecke davon 2 Quadrate
Anzahl mit Flaeche 4: 1
Anzahl mit Flaeche 5: 1
Ich suche gerade einen möglichst effizienten Algorithmus und habe irgendwie noch keine Ahnung.
Hat jemand eine gute Idee ?