Question

Quelle est la meilleure façon de dessiner une grille hexagonale algorithmiquement? Comment dois-je les présenter dans les données?

Par exemple, dans une grille carrée, je pourrais simplement enregistrer x-y coordonnées ..

Était-ce utile?

La solution

est un de bibliothèque propre pour les jeux AS3, il a quelques classes d'hexagone qui pourraient être à portée de main dans votre recherche. Cet article a quelques détails très agréable sur les carreaux hexagonaux en Flash .

Autres conseils

Il existe plusieurs façons de gérer les coordonnées de carte hexagonaux et la plupart d'entre eux insistent sur le fait unintuitively sur les cartographier à coordonnées x-y qui est seulement important pour le rendu. Une certaine forme de coordonnées polaires est généralement préférable. J'ai une bibliothèque Perl pour gérer la plupart des calculs de vecteurs qui est très utile informatique point de référence comme l'IA et d'autres arbres de recherche.

http://en.wikipedia.org/wiki/Polar_coordinate_system

Pour les sièges bon marché, les coordonnées polaires parcelles un point que l'origine (comme le graphique cartésien standard xy), choisit un vecteur comme base de référence (comme le cartésien) et désigne alors des points comme (magnitude, degrés).

Lorsque cela touche vraiment une course à domicile avec des cartes hexagonales est que chaque angle pur est un multiple de 60 degrés. Si vous attribuez chaque côté hexagonal d'un parement ((a, b, d, e, f, g) et d'appliquer un vecteur comme une grandeur et en face, plusieurs propriétés utiles émergent.

1) Chaque hexagone peut être représenté comme une somme de deux vecteurs adjacents (ou un vecteur unique lorsque le second vecteur est une amplitude 0 ou d'un élément d'identité). par exemple. 1a + 1b = 1A1B ou 1b1a. De toute façon, il est un traversal de 2 hexagones, d'une magnitude de 2, et désigne un hexagone unique à partir de l'origine (0,0). 2) Les vecteurs non adjacents peuvent toujours être simplifiées pour deux vecteurs adjacents appliquant ces règles: 2) Negation: 1A + 1D = 0, 1B + 1E = 0, 1C + 1F = 0, par exemple, 3) Combinaison: 1A + 1B 1C =, 1B + 1C 1D =, 1C 1E + = 1D, 1D + 1F = 1E, 1F + 1A = 1F

Compte tenu de ces principes à l'esprit, un missile qui doit traverser l'espace réel, doit préserver les vecteurs comme concaténation ou ordre de traversals plus petits. 1A + 1A + 1C + 1C représente un missile qui se déplace de deux hexagones et ensuite banques brusquement (120 degrés) et se déplace de deux hexagones, mettant fin à sa traversée seulement deux hexagones mais 60 degrés hors cours de sa direction initiale.

L'ordinateur cible ou d'explosion résultant, cependant, ne peuvent se soucier de la gamme, simplifiant ainsi ces vecteurs en utilisant ces règles peuvent être importantes. Pour calculer la distance la plus courte entre deux points quelconques, concaténer simplement les vecteurs et les simplifier.

Il est aussi de créer assez facile une carte hexagonale et rendre Création d'un objet Hex comme l'origine des propriétés, Magnitude = 0, vecteur = NULL, Étiquette (en option) = une chaîne de caractères (j'aime faire de cette valeur lisible par l'homme), Name = 0 (concaténation du Magnitude et Vector), et quitte = Array (vous 6 noeuds peuplent, sauf wormholes ou autre). Tracer l'origine centrée sur le pixel que vous choisissez de rendre le centre de la carte. Rendre l'hexagone. Choisissez un rayon de votre carte

Foreach Magnitude, --- remplir l'anneau avec chaque combinaison de vecteurs adjacents. Il y a plusieurs façons de le faire, mais le plus simple est de choisir un seul vecteur comme base, puis traverser hexagones Magnitude dans une direction et de l'orbite appropriée avec un virage à 60 degrés. par exemple. Pour Magnitude 3, commencez à 3E, puis aller 3A, 3B, 3C, 3D, 3E, 3F calculer chaque hexagone comme des sommes du dernier hex traversé et le nouveau vecteur hexagonal unique. --- Dans chacun de ces hexagones, appliquez TRIG pour calculer où le pixel central doit être par rapport à votre pixel d'origine et rendre l'hexagone

L'espoir qui aide quelqu'un. Hex roche Maps. ce qui les rend suce un peu.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top