Esagoni multipli e colorati

  • Creatore
    Topic
  • #99256
    Up
    0
    Down
    ::


    Salve a tutti. Vorrei creare degli esagoni colorati, magari da affiancare.
    L’idea sarebbe di creare un esagono e affiancarlo ad un altro, partendo dal basso, quindi ramificando verso l’altro. Preferibilmente attaccati (ma credo che si possa dare qualche millimetro di separazione).
    Ogni esagono dovrà essere colorato all’interno e si dovrà inserire una parola (o più parole) e / o un’immagine / icona

    vi posto un effetto che vorrei ottenere

    `
    http://i60.tinypic.com/2ylwsrb.png
    `

    Ovviamente non considerate nè i triangolini, nè le scritte all’interno.
    Mi piacerebbe fossero esagoni vettoriali (per non sgranare in caso di zoom del documento pdf).

    Vorrei evitare tikz , se possibile 🙂

Visualizzazione 14 filoni di risposte
  • Autore
    Risposte
    • #99257
      Up
      0
      Down
      ::

      golden_boy” post=98746Salve a tutti. Vorrei creare degli esagoni colorati, magari da affiancare.
      L’idea sarebbe di creare un esagono e affiancarlo ad un altro, partendo dal basso, quindi ramificando verso l’altro. Preferibilmente attaccati (ma credo che si possa dare qualche millimetro di separazione).
      Ogni esagono dovrà essere colorato all’interno e si dovrà inserire una parola (o più parole) e / o un’immagine / icona

      vi posto un effetto che vorrei ottenere

      `
      http://i60.tinypic.com/2ylwsrb.png
      `

      Ovviamente non considerate nè i triangolini, nè le scritte all’interno.
      Mi piacerebbe fossero esagoni vettoriali (per non sgranare in caso di zoom del documento pdf).

      Vorrei evitare tikz , se possibile 🙂

      Puoi dare un’occhiata qui.

      Ciao
      Claudio

    • #99258
      Up
      0
      Down
      ::


      Ho letto il post e fatto varie prove, ma non è spiegato come:
      – iniziare con un solo esagono e aggiungerne di volta in volta (e anche lavorare sul codice non è per niente facile. a me sembra che crei esagoni per file orizzontali e / o verticali, non uno ad uno)
      – colorare
      – inserire del testo

      A mio avviso risulterebbe molto farraginoso, anche se, indubbiamente, col tempo l’effetto sarebbe quello desiderato, ma mi sembra ci voglia troppo tempo. Non che voglia fare tutto in fretta, questa è solo una constatazione di fatto. Di sicuro ci lavorerò ancora sopra.

      Intanto ho provato questo codice

      `
      \documentclass{article}

      \usepackage{tikz}
      \usetikzlibrary{positioning}
      \usetikzlibrary{shapes.geometric}
      \usetikzlibrary{shapes.misc}

      \begin{document}

      \vspace{40pt}

      \begin{tikzpicture}
      \node[regular polygon, regular polygon sides=6, minimum width=2.5cm,draw,label=center:testo interno]
      (reg1) at (0,0){};
      \node[regular polygon, regular polygon sides=6, minimum width=2.5cm,draw,label=center:testo interno]
      (reg1) at (2,0.9){};
      \end{tikzpicture}

      \end{document}
      `

      il (0,0) e (2,0.9) sono le coordinate degli esagoni, per avvicinarli, ma più di questo non sono riuscito a fare in quanto basta modificare questi valori e gli esagoni risultano tutti fuori posto

    • #99259
      robitex
      Amministratore del forum
        Up
        0
        Down
        ::


        Secondo me disegnare gli esagoni non è un progetto adatto ad iniziare con la grafica in TeX.
        Che sia tikz metspost o pstricks inizia da cose di base.
        Fatto questo non avrai l’idea di scartare tikz come hai messo nel primo msg.
        R.

      • #99260
        GKT
        Partecipante
          Up
          0
          Down
          ::

          golden_boy” post=98755[…] A mio avviso risulterebbe molto farraginoso, anche se, indubbiamente, col tempo l’effetto sarebbe quello desiderato, ma mi sembra ci voglia troppo tempo. Non che voglia fare tutto in fretta, questa è solo una constatazione di fatto. Di sicuro ci lavorerò ancora sopra.[…]

          Se non vuoi usare TikZ, puoi usare un programma esterno per grafica vettoriale, tipo Inkscape per intenderci.
          La soluzione prospettata con TikZ è probailmente macchinosa, almeno all’inizio, ma dipende come al solito dal tempo che hai a disposizione o vuoi dedicare alla preparazione di figure di alta qualità.

          Lorenzo

        • #99261
          Up
          0
          Down
          ::

          robitex” post=98756Secondo me disegnare gli esagoni non è un progetto adatto ad iniziare con la grafica in TeX.
          Che sia tikz metspost o pstricks inizia da cose di base.
          Fatto questo non avrai l’idea di scartare tikz come hai messo nel primo msg.
          R.

          proverò magari fuori da latex come inizio allora 🙂

        • #99262
          Up
          0
          Down
          ::


          Ho provato a “pasticciare” un po’ con il tuo codice 😀 Cercherò di spiegarti cosa ho utilizzato per introdurti all’utilizzo di TiKz.
          `
          \begin{tikzpicture}
          \def\polyside{1.25cm}
          \pgfmathsetmacro\polyrad{sqrt(\polyside^2-(\polyside/2)^2)}
          \edef\polyrad{\polyrad cm}
          \newcommand\esagono[2][]{\node[#1,regular polygon, regular polygon sides=6, minimum width=2*\polyside,draw,label=center:testo interno] (reg1) at (#2){};
          \draw[fill](reg1) ++ (0,\polyrad*.4) — ++ (.25cm,0) — ++ (120:.5cm) — ++ (240:.5cm) — cycle;
          \draw[fill](reg1) ++ (0,-\polyrad*.4) — ++ (.25cm,0) — ++ (-120:.5cm) — ++ (-240:.5cm) — cycle;}
          \foreach\x in {0,…,4}{
          \foreach\y in {0,…,4}{\esagono[yshift=2*\y*\polyrad]{30:2*\x*\polyrad}}}
          \end{tikzpicture}
          `
          Innanzitutto ho definito [tt]\polyside[/tt] che rappresenta il lato del poligono (nel nostro caso un esagono). In tal modo puoi modificare direttamente il suo valore senza doverlo sostituire in tutto il documento. Faccio calcolare poi a TiKz la distanza tra il centro del poligono e il centro del lato e lo memorizzo come [tt]\polyrad[/tt] (il giochetto con la primitiva [tt]\edef[/tt] lo fatto per aggiungere [tt]cm[/tt] alla macro).

          Fatto ciò definisco una nuova macro con due argomenti, uno facoltativo e uno obbligatorio: l’argomento facoltativo sono le opzioni che eventualmente puoi passare al nodo, mentre quello obbligatorio sono le sue coordinate. Il comando prevede prima la creazione di un nodo di nome [tt]reg1[/tt] con la forma esagonale come lo hai impostato tu e poi, partendo dal suo centro (la coordinata [tt]reg1[/tt] corrisponde con il centro del nodo se non indicato diversamente) disegna i due triangoli, riempendoli con l’opzione [tt]fill[/tt]. In fine i comandi [tt]\foreach[/tt] permettono di attuare dei cicli.

          Spero che la spiegazione sia sufficientemente chiara. 😀

        • #99263
          Up
          0
          Down
          ::


          la spiegazione è chiara ma se copio il tuo codice mi produce 2 pagine bianche senza niente dentro… anche ricompilando più volte, chiudendo e aprendo latex … 😕

        • #99264
          Up
          0
          Down
          ::


          Faccio una piccola correzione al mio stesso codice. 😀 Nel preambolo aggiungi
          `
          \newlength{\polyside}
          \newlength{\polyrad}
          \newcommand\esagono[2][]{\node[#1,regular polygon, regular polygon sides=6, minimum width=2*\polyside,draw,label=center:testo interno] (reg1) at (#2){};
          \draw[fill](reg1) ++ (0,\polyrad*.4) — ++ (.25cm,0) — ++ (120:.5cm) — ++ (240:.5cm) — cycle;
          \draw[fill](reg1) ++ (0,-\polyrad*.4) — ++ (.25cm,0) — ++ (-120:.5cm) — ++ (-240:.5cm) — cycle;}
          `
          mentre il tuo codice diventa
          `
          \begin{tikzpicture}
          \setlength{\polyside}{1.5cm}
          \pgfmathsetlength\polyrad{sqrt(\polyside^2-(\polyside/2)^2)}
          \foreach\x in {0,…,4}{
          \foreach\y in {0,…,4}{\esagono[yshift=2*\y*\polyrad]{30:2*\x*\polyrad}}}
          \end{tikzpicture}
          `
          In questo modo non hai problemi legati alle dimensioni e puoi tranquillamente modificare il lato dell’esagono cambiando il valore di [tt]\polyside[/tt]. Rispetto a prima uso delle lunghezze, definite con il comando [tt]\newlength[/tt] nel preambolo.

        • #99265
          Up
          0
          Down
          ::


          ok, ora funziona. grazie mille!

          unica cosa che mi sfugge: come faccio a disegnarne ad uno ad uno?? così da riempirne uno per volta??
          perchè la mia idea è far corrispondere ad ogni esagono un argomento / una funzione. quindi devo farne uno ad uno perchè non so quanti ne farò e come li sistemerò 😀

        • #99266
          Up
          0
          Down
          ::


          Semplice: utilizzi un comando [tt]\esagono[/tt] per volta, invece di impiegare [tt]\foreach[/tt].
          `
          \begin{tikzpicture}
          \esagono[opzioni]{}
          \esagono{
          }
          ….
          \end{tikzpicture}
          `
          Se devi aggiungere del testo all’esagono o cambiarlo basta che utilizzi le opzioni del comando e gli passi [tt]label[/tt]. Devi solo cambiare questa riga nella definizione di [tt]\esagono[/tt]
          `
          \node[regular polygon, regular polygon sides=6, minimum width=2*\polyside,draw,#1] (reg1) at (#2){};
          `

        • #99267
          Up
          0
          Down
          ::


          è troppo se ti chiedo un esempio di codice con un esagono e uno con due esagoni?
          così capisco meglio visivamente e con il codice come fare per aggiungerne 😛

        • #99268
          Up
          0
          Down
          ::


          `
          \documentclass{article}

          \usepackage{tikz}
          \usetikzlibrary{shapes.geometric,shapes.misc}

          \newlength{\polyside}
          \newlength{\polyrad}
          \newcommand\esagono[2][]{\node[regular polygon, regular polygon sides=6, minimum width=2*\polyside, draw, #1] (reg1) at (#2){};
          \draw[fill](reg1) ++ (0,\polyrad*.4) — ++ (.25cm,0) — ++ (120:.5cm) — ++ (240:.5cm) — cycle;
          \draw[fill](reg1) ++ (0,-\polyrad*.4) — ++ (.25cm,0) — ++ (-120:.5cm) — ++ (-240:.5cm) — cycle;}

          \begin{document}
          % un esagono
          \begin{tikzpicture}
          \setlength{\polyside}{1.5cm}
          \esagono[label=center:primo esagono]{0,0}
          \end{tikzpicture}

          %due esagoni
          \begin{tikzpicture}
          \setlength{\polyside}{1.5cm}
          \esagono[label=center:primo esagono]{0,0}
          \esagono[label=center:secondo esagono]{30:\polyrad+.5cm}
          \end{tikzpicture}
          \end{document}
          `
          Per ulteriori personalizzazioni, ti consiglio di leggere una guida per TiKz (o consultare il voluminoso manuale). Qualche guida la trovi nella sezione documentazione del sito 😉

        • #99269
          Up
          0
          Down
          ::


          ho provato a usare questo codice, adattato alle mie esigenze: purtroppo l’esagono B si riesce a mettere solo al lato che si vede compilando.
          se metto l’esagono C, non sono non posso collocarlo dove voglio, ma viene ridotto di dimensione … strano

          `
          \documentclass{article}
          \usepackage{tikz}
          \usetikzlibrary{shapes}

          \begin{document}

          \begin{tikzpicture}
          \begin{scope}
          [
          every node/.style={anchor=west,
          regular polygon,
          regular polygon sides=6,
          draw,
          minimum width=2cm,
          outer sep=0},
          transform shape
          ]

          \node (A) {Testo A};
          \node (B) at (A.corner 1) {Testo B};
          \node (C) at (B.corner 4) {C};
          % \node (D) at (A.corner 5) {DECF};
          % \node (E) at (D.corner 5) {E};

          \end{scope}
          \end{tikzpicture}

          \end{document}
          `

        • #99270
          Up
          0
          Down
          ::


          `
          \documentclass{article}
          \usepackage{tikz}
          \usetikzlibrary{shapes}

          \begin{document}

          \begin{tikzpicture}
          \begin{scope}
          [
          every node/.style={
          regular polygon,
          regular polygon sides=6,
          draw,
          minimum width=2.5cm,
          outer sep=0},
          ]

          \node (A) {Testo A};
          \node (B) at (A.corner 1) [anchor=corner 3] {Testo B};
          \node[anchor=corner 3] (C) at (B.corner 5) {C};
          \node (D) at (A.corner 5)[anchor=corner 2] {DECF};
          \node[anchor=corner 2] (E) at (D.corner 5) {E};
          \end{scope}
          \end{tikzpicture}
          \end{document}
          `
          Non è C ad essere troppo piccolo: sono A e B che si sono allargati. 😀 Ricorda che la chiave [tt]minimum width[/tt] imposta la dimensione minima: se il testo del nodo è troppo largo, si espande per adattarsi. Togli [tt]anchor=west[/tt] dalle impostazioni di [tt]every node[/tt] e imposta l’ancora per ogni singolo nodo.

        • #99271
          Up
          0
          Down
          ::


          grazie ancora! ora dovrei essere a posto 😀

          non sapevo che si fossero allargati gli altri :mrgreen:

      Visualizzazione 14 filoni di risposte
      • Devi essere connesso per rispondere a questo topic.

      Go to top