Ich gebe Ihnen einen Tipp, um loszulegen. Was Sie wirklich wollen, ist eine clevere oder effiziente Möglichkeit, alle Eckpunkte Ihres Polygons zu durchlaufen. Beginnen wir damit, einfach die Positionierung der oberen linken Ecke jedes Subpolygons zu betrachten.
Beginnend an der oberen linken Ecke Ihres Polygons, werden wir zuerst von links nach rechts und dann von oben nach unten durchlaufen. Lassen Sie sw
Ihre Unterbreite und sh
bezeichnen Sie Ihre Unterhöhe.
Also, was ist die Formel für die obere linke Ecke jedes Subpolygons? Nun, wir beginnen bei (min x, max y)
. Dies ist die obere linke Ecke des Subpolygons 1. Dann fügen wir sw
zum x-Wert hinzu, um die obere linke Ecke des Subpolygons 2 (min x + sw, max y)
zu erhalten. Dann ist die obere linke Ecke von Subpolygon 3 (min x + 2 * sw, max y)
.
Dann brauchen wir eine Höhe von sh
fallen bis auf die linke obere Ecke des Subpolygonfläche zu bekommen 4. Diese (min x, max y - sh)
ist. Dann gehen wir wieder nach links: (min x + sw, max y - sh)
für Subpolygon 5, (min x + 2 * sw, max y - sh)
.
Noch ein Muster sehen? Lassen Sie eine weitere Höhe von sh
herunter und gehen Sie wieder nach links: (min x, max y - 2 * sh)
, (min x + sw, max y - 2 * sh)
, (min x + 2 * sw, max y - 2 * sh)
.
Also, wenn ich meinen Index i
Bereich von 0 bis 8 lassen (was Ihre Subpolygone 1 bis 9 entsprechen wird), können Sie sehen, dass das allgemeine Muster für die obere linke Ecke Subpolygonfläche (i+1)
ist:
(min x + (i % 3) * sw, max y - (i/3) * sh)
.
Es sei angemerkt, dass die vorangehende (i/3)
eine ganzzahlige (abgerundete) Teilung ist, z. für Subpolygon 8, i = 7
und 7/3 = 2
.
Ich glaube, das ist genug, um loszulegen. Ich persönlich hätte es vorgezogen, in der unteren linken Ecke zu beginnen und von links nach rechts, von unten nach oben zu arbeiten, aber ich ging aufgrund Ihrer Nummerierung. Sie können ähnliche Formeln für die anderen Ecken finden, und ein wenig Nachdenken kann Ihnen helfen, diese Formeln in verschiedene Partitionen zu verallgemeinern (d. H., Sie betrachten die Division durch 3 und modulo 3 Teile).
Wie planen Sie, die Informationen in der 'hmap' abzubilden? Auch nur um zu überprüfen, Ihr Polygon ist für jetzt ein Viereck, das in 9 Teile geteilt werden muss, oder? Und weiter müssen Sie das Teil in seiner Koordinatenkarte speichern? – nullpointer
Wenn ich die ID zuweisen, versuche ich, die vier Koordinaten des Subpolygons zu bekommen und dann diese in der Hash-Map zu speichern. Ja, mein Polygon ist ein Viereck für jetzt, das in 9 Teile geteilt werden muss und das Teil speichern muss zu seiner Koordinatenkarte. – RKR