Je vais vous donner un indice pour commencer. Ce que vous voulez vraiment, c'est une façon intelligente ou efficace de parcourir tous les sommets de votre polygone. Commençons par regarder le positionnement du coin supérieur gauche de chaque sous-polygone. En commençant dans le coin supérieur gauche de votre polygone, nous allons d'abord faire une boucle de gauche à droite, puis de haut en bas. Soit sw
dénote ta sous-largeur et sh
dénote ta sous-largeur.
Alors, quelle est la formule pour le coin supérieur gauche de chaque sous-polygone? Eh bien, nous commençons à (min x, max y)
. C'est le coin supérieur gauche du sous-polygone 1. Ensuite, nous ajoutons sw
à la valeur x pour obtenir le coin supérieur gauche du sous-polygone 2 (min x + sw, max y)
. Ensuite, le coin supérieur gauche du sous-polygone 3 est (min x + 2 * sw, max y)
.
Ensuite, nous devons descendre une hauteur de sh
pour obtenir le coin supérieur gauche du sous-polygone 4. Ceci est (min x, max y - sh)
. Ensuite, nous allons à nouveau de gauche à droite: (min x + sw, max y - sh)
pour le sous-polygone 5, (min x + 2 * sw, max y - sh)
.
Voir le modèle? Déroulez une autre hauteur de sh
et de nouveau de gauche à droite: (min x, max y - 2 * sh)
, (min x + sw, max y - 2 * sh)
, (min x + 2 * sw, max y - 2 * sh)
.
Donc, si je laisse mon index i
plage de 0 à 8 (qui correspondra à vos subpolygons 1 à 9), vous pouvez voir que le schéma général pour le coin supérieur gauche subpolygone (i+1)
est:
(min x + (i % 3) * sw, max y - (i/3) * sh)
.
Notez que la précédente (i/3)
est une division entière (arrondi à l'inférieur), par ex. pour le sous-polygone 8, i = 7
et 7/3 = 2
. Je crois que c'est suffisant pour vous aider à démarrer. Personnellement, j'aurais préféré commencer dans le coin inférieur gauche et travailler de gauche à droite, de bas en haut, mais je me suis basé sur votre numérotation. Vous pouvez trouver des formules similaires pour les autres coins, et un peu de réflexion peut vous aider à généraliser ces formules dans différentes partitions (c'est-à-dire regarder la division par 3 et modulo 3 parties).
Comment envisagez-vous de mapper les informations dans le 'hmap'? Aussi juste pour vérifier, votre polygone est un quadrilatère pour l'instant qui doit être divisé en 9 parties, non? Et plus loin vous avez besoin de stocker la partie à sa carte de coordonnées? – nullpointer
lorsque j'attribue l'identifiant, j'essaie d'obtenir les quatre coordonnées du sous-polygone puis de les stocker dans la carte de hachage.Oui mon polygone est un quadrilatère pour l'instant qui doit être divisé en 9 parties et doit stocker la partie à sa carte de coordonnées. – RKR