Grâce à ce post: tuiles hexagonales et trouver leurs voisins adjacents , je suis en mesure de collecter des tuiles adjacentes à une tuile donnée. Mais je suis plutôt coincé sur un algorithme qui ne me donne qu'un "anneau" de tuiles spécifié par un décalage. L'algorithme donné dans ce post Stack Overflow ne se soucie pas exactement de l'ordre dans lequel il collecte les tuiles.
Je sais qu'à chaque décalage 6 tuiles sont ajoutées.
- Le décalage 1 vous donne 6 tuiles (les premières tuiles adjacentes).
- Le décalage 2 vous donne 12.
- Le décalage 3 vous donne 18, etc.
Il y a une croissance constante de 6 à chaque décalage. Je suppose donc qu'il devrait y avoir une règle qui s'adapte à ces décalages. Je ne peux pas vraiment comprendre celui-ci. N'importe qui?
la source
J'ai trouvé cet article comme une très bonne référence pour les algorithmes de grille hexagonale, et sa section sur "Distances" fournit une méthode pour déterminer le nombre d'étapes entre deux tuiles. Si vous convertissez vos coordonnées axiales (xy) en coordonnées de cube (xyz), la distance est toujours égale au plus grand des décalages de coordonnées entre les deux tuiles, ou max (| dx |, | dy |, | dz |).
Une recherche exhaustive de la grille entière pour les tuiles à la distance souhaitée estO ( n2) avec les dimensions de la grille, mais c'est une implémentation simple qui fonctionne bien pour les petites grilles.
la source