Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: Grille Hexagonale avec vertex array  (Lu 1847 fois)

0 Membres et 1 Invité sur ce sujet

Clyx

  • Newbie
  • *
  • Messages: 9
    • Voir le profil
    • E-mail
Grille Hexagonale avec vertex array
« le: Octobre 06, 2016, 08:00:27 pm »
Bonsoir,

je suis en galère depuis bientôt 1 semaine en essayant de faire un algo me permettant de rendre une map (tilemap) hexagonale.

J'ai du mal au niveau des maths qui se cache derrière la science des hexagones c'est pourquoi je fait appel à vous.

J'aimerais savoir comment implémenter ce système à travers SFML de manière optimisée.
Pour le moment j'ai une classe héritant de Drawable et c'est à peu près tout.. enfin j'ai une méthode pour tenter d'initialiser mes hexagones mais je n'y parvient pas.

Dans la forme j'aimerais être capable de rendre une map de longueur W et de hauteur H, avec des carrés je n'ai aucun problème mais avec des hexagones je suis complètement paumé.

Voici ou j'en suis :

(click to show/hide)

PS: Mes hexagons sont orienté "Pointy" ou dit verticaux.

Toute aide est la bienvenue.


Merci d'avance.

brunnerant

  • Newbie
  • *
  • Messages: 18
    • Voir le profil
    • E-mail
Re : Grille Hexagonale avec vertex array
« Réponse #1 le: Novembre 10, 2016, 12:01:54 pm »
Premièrement, désolé de la réponse tardive, mais comme on dit, mieux vaut tard que jamais ! :P

Je pense que le gros problème avec les hexagones, c'est de définir un système de coordonnées qui tient la route. Ou mettre l'origine ? Que représente les coordonnées X et Y d'un hexagone ? Tu devrais te poser ces questions avant de commencer à implémenter ton projet.

J'ai trouvé une image qui pourrait t'aider :



Tu dois donc d'abord trouver la position de l'hexagone à l'écran en fonction de la position de l'hexagone dans le système de coordonnée. Par exemple, si je te donne l'hexagone 3-5 sur l'image, tu dois être capable de retrouver sa position à l'écran en faisant un peut de maths.
Voici une manière de faire:
Il faut que tu calcule les deux vecteur de ta base (i et j). En gros, il faut que tu calcule le vecteur pour te déplacer d'une unité selon l'axe x, et l'axe y. Ensuite tu n'as plus qu'à calculer la position de l'hexagone à l'aide de ces deux vecteurs.
Donc dans le cas de l'hexagone 3-5, par exemple, tu te déplaces de 3*le vecteur i, et de 5* le vecteur j (je t'ai fait un schéma sur Paint  ;D), et cela te donne la position de l'hexagone depuis l'origine (l'hexagone 0-0).
Pour ensuite calculer la position des sommets d'un hexagone, tu les calcules à partir de la position du centre de cet hexagone, tu devrais résussir

J'espère avoir répondu à ta question, et n'hésite pas à demander si ce n'était pas clair !
« Modifié: Novembre 10, 2016, 04:31:19 pm par brunnerant »

 

anything