25-08-2011, 09:18 AM
Pour ma part, je ne travaillerais pas hexagone par hexagone pour gèrer les rotations.
En utilisant les définitions (defs), les groupes (g) et les transform, tu peux facilement tirer partie de la puissance du SVG pour régler ton problème.
Voici par exemple, une approche possible
- Les différents hexagones sont placés dans les définitions (defs) avec un id correspondant. Ces définitions composeront ta bibliothèque de référence pour la construction de la carte
- Pour le rendu de la carte, à chaque hexagone devant être dessiné, tu pioches dans le contenu de tes définitions via xlink:href et tu appliques un transform/translate pour placer l'élément au bon endroit. L'ensemble est contenu dans un groupe (g).
- Une fois tous les hexagones correctement placés dans ton groupe, il suffit d'appliquer une dernière transformation pour effectuer la rotation et le redimensionnement (scale + rotate) et le tour est joué.
Voici un lien vers un vieil exemple
En cliquant sur les boutons pour changer le rendu (iso/défaut), il n'y a aucun réaffichage. Juste une manipulation de l'attribut "Transform".
En utilisant les définitions (defs), les groupes (g) et les transform, tu peux facilement tirer partie de la puissance du SVG pour régler ton problème.
Voici par exemple, une approche possible
- Les différents hexagones sont placés dans les définitions (defs) avec un id correspondant. Ces définitions composeront ta bibliothèque de référence pour la construction de la carte
- Pour le rendu de la carte, à chaque hexagone devant être dessiné, tu pioches dans le contenu de tes définitions via xlink:href et tu appliques un transform/translate pour placer l'élément au bon endroit. L'ensemble est contenu dans un groupe (g).
- Une fois tous les hexagones correctement placés dans ton groupe, il suffit d'appliquer une dernière transformation pour effectuer la rotation et le redimensionnement (scale + rotate) et le tour est joué.
Voici un lien vers un vieil exemple
En cliquant sur les boutons pour changer le rendu (iso/défaut), il n'y a aucun réaffichage. Juste une manipulation de l'attribut "Transform".
Quand on te dit qu'un projet est terminé à 90%, prépare toi pour les 90% suivant
Ninety-Ninety Rule
"Une guerre de religions, c'est quand deux peuples s'entretuent pour savoir qui a le meilleur ami imaginaire"
Vu sur IRC
Ninety-Ninety Rule
"Une guerre de religions, c'est quand deux peuples s'entretuent pour savoir qui a le meilleur ami imaginaire"
Vu sur IRC