[Résolu][SVG] Dessiner des motifs pour une carte d'hexagones - Version imprimable +- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org) +-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38) +--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51) +--- Sujet : [Résolu][SVG] Dessiner des motifs pour une carte d'hexagones (/showthread.php?tid=5846) |
RE: [SVG] Dessiner des motifs pour une carte d'hexagones - Myrina - 11-12-2011 Pour l'ajustement, il n'y a pas grand chose à faire à part être un peu moins rigoureux mathématiquement parlant. Il vaut mieux travailler avec des entiers si possible car de toute façon, un pixel n'est pas divisible. Ensuite, pour la gestion de la "frontière", il faut passer par des couches: l'eau, puis la frontière en enfin les terres. Voici ce que j'ai obtenu vite fait (pas optimisé): http://myrina.free-h.net/testSVG.html RE: [SVG] Dessiner des motifs pour une carte d'hexagones - Sephi-Chan - 11-12-2011 (11-12-2011, 01:35 PM)Myrina a écrit : Pour l'ajustement, il n'y a pas grand chose à faire à part être un peu moins rigoureux mathématiquement parlant. Il vaut mieux travailler avec des entiers si possible car de toute façon, un pixel n'est pas divisible. Sur ton exemple, tu n'as pas ce soucis d'ajustement, du coup c'est plus esthétique. Comment as-tu fait ? Comment as-tu déterminé les points de ton polygone "base" et quelle a été ta formule pour déterminer les attributs X et Y des use ?(11-12-2011, 01:35 PM)Myrina a écrit : Ensuite, pour la gestion de la "frontière", il faut passer par des couches: l'eau, puis la frontière en enfin les terres. Pour être sur qu'on parle de la même chose avec le terme "frontière" : je ne veux pas tracer la frontière que j'ai dessiné en rouge sur mon second schéma. Je veux seulement dessiner les cercles et les routes entre eux. Merci pour ton aide en tout cas, car j'ai vraiment une aversion viscérale pour les maths et SVG n'est de fait pas mon ami. RE: [SVG] Dessiner des motifs pour une carte d'hexagones - Myrina - 11-12-2011 (11-12-2011, 02:00 PM)Sephi-Chan a écrit :J'ai simplement fait de l'arrondi à l'entier puis un décalage par un multiple de ce nombre.(11-12-2011, 01:35 PM)Myrina a écrit : Pour l'ajustement, il n'y a pas grand chose à faire à part être un peu moins rigoureux mathématiquement parlant. Il vaut mieux travailler avec des entiers si possible car de toute façon, un pixel n'est pas divisible. En X, la taille de l'hexagone vaut donc, en arrondi, 52 pixels. Ensuite, pour le Y, comme la distance de 45 pixels conserve un espace, j'ai simplement réduit à 44 pixels. Pour la frontière, je dirai juste que l'on est pas sur la même longueur d'ondes car je ne vois (visualise) toujours pas ce que tu désires obtenir. RE: [SVG] Dessiner des motifs pour une carte d'hexagones - Sephi-Chan - 11-12-2011 Ok, je reformule. Sur ce schéma, on voit 3 hexagones. C'est ma forme de base. Au sommet de chaque hexagone, j'ai tracé un cercle. Ce cercle représente l'emplacement d'un territoire. Ensuite, j'ai dessiné des routes qui relient ces cercles. Le tout forme donc un petit hexagone aux sommets cassés. Ceci représente une parcelle de ressource. En soit, un hexagone de base ne dessine que sa partie des choses : son fragment de cercle, son fragment de route. C'est l'assemblage de plusieurs de ces hexagones qui forment la map. Et après, il y a les tuiles "bord de l'eau", qui peuvent ne pas avoir de routes sur certaines arrêtes, comme le montre le second schéma : Est-ce que c'est plus clair ? RE: [SVG] Dessiner des motifs pour une carte d'hexagones - Myrina - 11-12-2011 j'ai remis à jour le SVG; est-ce mieux ainsi? http://myrina.free-h.net/testSVG.html Pour les changements, j'ai déplacé le dessin des "frontières" après celui des tuiles de terres puis je les ai doublé afin de dessiner en deux couleurs les routes. RE: [SVG] Dessiner des motifs pour une carte d'hexagones - Sephi-Chan - 11-12-2011 J'aime bien le rendu ! C'est très proche de ce que je veux (à quelques épaisseurs près) ! Est-ce que tu pourrais montrer le code que tu utilises pour générer ça ? Et que penses-tu de l'approche qui consiste à laisser à chaque hexagone la responsabilité d'afficher ce qu'il doit afficher, plutôt que de fonctionner en couche ? Chacun afficherait ou non ses portions d'arc de cercle et ses portions de route. Ça se prête assez bien à mon mode de stockage de l'information et je suppose que c'est assez simple à faire quand on maîtrise SVG. J'aurais en gros un modèle (dans les defs ) unique pour les hexagones terrestres (puisqu'ils dessinent la portion de cercle de tous leurs sommets et toutes leurs arrêtes), puis autant de modèles que nécessaire pour les hexagones de mer (une vingtaine de combinaisons).
RE: [SVG] Dessiner des motifs pour une carte d'hexagones - Myrina - 11-12-2011 Je n'ai pas fait de code généré, j'ai juste fait une page HTML avec du SVG inline en partant du code généré obtenu avec ton exemple. RE: [SVG] Dessiner des motifs pour une carte d'hexagones - Sephi-Chan - 11-12-2011 Ok, ça a du te prendre vachement de temps ! :o Et pour la seconde partie de mon message ? :p RE: [SVG] Dessiner des motifs pour une carte d'hexagones - Myrina - 11-12-2011 Pour la seconde partie; je pense que tu ne coupe pas à la notion d'affichage en couche. C'est toujours ce qui est défini en dernier qui s'affiche au dessus des autres pour un même pixel. Sinon, j'ai vite porté en PHP la génération afin que tu vois une possibilité pour gérer les couches:
C'est pas joli, mélange de HTML et PHP, mais c'est juste pour illustrer. J'ai diminué la taille de l'île car ça me faisait beaucoup de paires à écrire pour illustrer : http://myrina.free-h.net/testSVG.php RE: [SVG] Dessiner des motifs pour une carte d'hexagones - Sephi-Chan - 11-12-2011 Merci ! J'ai avancé aussi de mon côté puisque j'approche de ce que je souhaitais avec l'approche "chaque hexagone gère son bout de terrain", mais je crois bien que le problème d'ajustement va me forcer à arrêter cette approche. Je jette un œil à ton script et je fais des essais avec. |