Ich suche nach einer Pseudocode-Logik, die n
gleich große Bereiche in einem bestimmten Polygon findet. Zwischen oder außerhalb der übereinstimmenden Bereiche darf kein Platz sein. Die erste gültige Übereinstimmung der Bereiche sollte zurückgegeben werden.
Angenommen, folgendes Polygon [2,2, 3,1, 5,1, 5,4, 4,5, 2,3]
als Eingabe:
... und 3
als Parameter könnte eine gültige Ausgabe sein [ [2,2, 3,2, 3,3, 4,3, 4,5, 2,3], [2,2, 3,1, 5,1, 4,2, 4,3, 3,3, 3,2], [4,5, 4,2, 5,1, 5,4] ]
:
Eine weitere gültige Ausgabe mit Parameter 3
ist [ [3,4, 3,3, 4,3, 4,2, 3,2, 3,1, 2,2, 2,3], [4,3, 4,2, 3,2, 3,1, 5,1, 5,3], [3,4, 3,3, 5,3, 5,4, 4,5] ]
:
Bitte beachten Sie, dass Bereiche nicht denselben Mittelpunkt haben müssen. Ein oder mehrere Bereiche können zufällig genau zwischen andere Bereiche innerhalb des Polygons fallen.
Hier ist ein weiteres Beispiel für die Eingabe / Ausgabe von Beispielen.
Angenommen, folgendes Polygon [1,3, 1,1, 7,1, 7,2, 8,2, 8,3, 5,6, 4,6]
als Eingabe:
..und 5
als Parameter könnte eine gültige Ausgabe sein [ [1,3, 1,1, 3,1, 3,2, 4,3, 3,4, 3,3], [3,2, 3,1, 7,1, 7,2, 6,2, 6,3, 5,3, 5,2], [6,2, 8,2, 8,3, 6,5, 5,5, 5,4, 6,4], [1,3, 3,3, 3,4, 5,5, 6,4, 6,5, 7,5, 6,6, 5,6], [3,4, 4,3, 3,2, 5,2, 5,3, 6,3, 6,4, 5,4, 4,5] ]
:
Folgende Annahmen werden getroffen:
Die Richtung aller Grenzen ist durch 45 teilbar
Ganzzahlige Koordinaten werden für alle Polygone verwendet
Der ganzzahlige Bereich des Eingabepolygons ist immer durch teilbar
n
Alle Polygone können entweder konvex oder konkav sein
lösbar, dh
n
Bereiche können richtig in das angegebene Polygon passen