Portare oggetti in secondo piano

  • Creatore
    Topic
  • #81877
    Up
    0
    Down
    ::


    Ciao a tutti..passate bene le feste? Ho un nuovo problema con Tikz..vorrei realizzare con tikz un disegno simile a quello che allego..
    [attachment=575]file_1.pdf[/attachment]
    Se qualcuno avesse qualche idea..

    Grazieeeeee..

    Attachments:
    You must be logged in to view attached files.
Visualizzazione 8 filoni di risposte
  • Autore
    Risposte
    • #81878
      Up
      0
      Down
      ::


      Ho spulciato il manuale ma non ho trovato qualcosa che mi soddisfacesse!

    • #81879
      Up
      0
      Down
      ::


      Ciao Orlando,

      quando disegni con [tt]TikZ[/tt] l’ordine con cui dai i comandi conta. Quindi, se prima disegni il rettangolo e lo riempi, e poi disegni l’arco e lo riempi, otterrai proprio il risultato dell’immagine che vuoi riprodurre. Altrimenti puoi usare quanto viene descritto a pagina 663 del manuale di [tt]TikZ.[/tt]

      Ciao,
      Marco.

    • #81880
      Up
      0
      Down
      ::


      E come faccio a riempire l’arco? cioè io ho provato a fare così:
      • disegno parabola esterna e riempio
      • disegno parabola interna e riempio di bianco così mi rimane colorato solo lo spazio tra le due parabole
      Quando però riempio di bianco la parabola interna mi si nasconde parte del rettangolo..cosa sbaglio?

    • #81881
      OldClaudio
      Partecipante
        Up
        0
        Down
        ::


        Hai letto bene la risposta di Marco87?

        Prima devi disegnare le due parabole riempite e POI devi disegnare il rettangolo.

        In ogni caso se concateni i percorsi delle due parabole puoi ripeire solo lo spazio descritto dal loro contorno.

      • #81882
        Up
        0
        Down
        ::


        Ciao OldClaudio, Marco ha scritto “se prima disegni il rettangolo e lo riempi, e poi disegni l’arco e lo riempi, otterrai proprio il risultato dell’immagine che vuoi riprodurre.” quindi non capisco la tua risposta..comunque mi interesserebbe sapere come si concatenano due parabole od oggetti in generale..grazie..

      • #81883
        OldClaudio
        Partecipante
          Up
          0
          Down
          ::


          Io ho capito che volevi il “ferro di cavallo” sopra il rettangolo.

          Per concatenare i path devi fare come nell’ultimo disegno di settore con l’interno verde che c’è nell’esempio del mauale di TikZ a pagina 31, prima dlel’inizio del §2.14. In pratica connetti scrivendo i percorsi parziali con — o (nell’esempio non c’è} con .. Il §2.13 è tutto dedicato a queste cose.

        • #81884
          Up
          0
          Down
          ::


          Ciao Orlando,

          seguendo il “principio della sequenzialità” (come lo definisco io :D), ecco come puoi fare:
          `% TikZ
          \usepackage{tikz}
          % Librerie
          \usetikzlibrary{automata}
          \usetikzlibrary{arrows}
          \usetikzlibrary{backgrounds}
          \usetikzlibrary{calc}
          \usetikzlibrary{hobby}
          \usetikzlibrary{intersections}
          \usetikzlibrary{mindmap}
          \usetikzlibrary{patterns}
          \usetikzlibrary{positioning}
          \usetikzlibrary{shadows}
          \usetikzlibrary{shapes}
          \usetikzlibrary{through}
          \usetikzlibrary{trees}
          % Pacchetti
          \usepackage{tkz-euclide}
          \usetkzobj{all}

          \begin{tikzpicture}
          % definizioni e macro
          \def\l{3}
          \def\h{5}
          \def\xrad{7}
          \pgfmathsetmacro{\apx}{\l/3}
          \pgfmathsetmacro{\apy}{\h/6}
          \pgfmathsetmacro{\yrad}{\h/2-\apy}
          \def\dy{1}
          \def\xprad{4}
          \pgfmathsetmacro{\yprad}{\yrad-\dy}

          % coordinate
          %rettangolo
          \coordinate (a) at (0,0);
          \coordinate (b) at ($(a)+(\l,0)$);
          \coordinate (c) at ($(a)+(\l,\h)$);
          \coordinate (d) at ($(a)+(0,\h)$);

          %arco
          \coordinate (a') at (\apx,\apy);

          % disegno rettangolo
          \fill [cyan!55] (a) — (b) — (c) — (d) — cycle;
          \draw (a) — (b) — (c) — (d) — cycle;

          % disegno arco
          \fill [cyan!55] (a') arc [start angle=270, delta angle=180,x radius=\xrad, y radius=\yrad] — ++(0,-\dy) arc [start angle=90, delta angle=-180,x radius=\xprad, y radius=\yprad] — cycle;
          \draw (a') arc [start angle=270, delta angle=180,x radius=\xrad, y radius=\yrad] — ++(0,-\dy) arc [start angle=90, delta angle=-180,x radius=\xprad, y radius=\yprad] — cycle;
          \end{tikzpicture}`

          Ciao,
          Marco.

        • #81885
          Up
          0
          Down
          ::


          Ciao Orlando,

          ti propongo anche la soluzione che prevede l’uso dei layer. L’esempio è identico a quello di prima, ma con la differenza che ora a governare è la scelta del layer e non l’ordine con cui si scrive il codice:
          `\begin{tikzpicture}
          % layer
          \pgfdeclarelayer{primoLayer}
          \pgfdeclarelayer{secondoLayer}
          \pgfsetlayers{primoLayer,main,secondoLayer}

          % definizioni e macro
          \def\l{3}
          \def\h{5}
          \def\xrad{7}
          \pgfmathsetmacro{\apx}{\l/3}
          \pgfmathsetmacro{\apy}{\h/6}
          \pgfmathsetmacro{\yrad}{\h/2-\apy}
          \def\dy{1}
          \def\xprad{4}
          \pgfmathsetmacro{\yprad}{\yrad-\dy}

          % coordinate
          %rettangolo
          \coordinate (a) at (0,0);
          \coordinate (b) at ($(a)+(\l,0)$);
          \coordinate (c) at ($(a)+(\l,\h)$);
          \coordinate (d) at ($(a)+(0,\h)$);

          %arco
          \coordinate (a') at (\apx,\apy);

          % disegno rettangolo
          \fill [cyan!55] (a) — (b) — (c) — (d) — cycle;
          \draw (a) — (b) — (c) — (d) — cycle;

          % disegno arco
          \begin{pgfonlayer}{primoLayer}
          \fill [cyan!55] (a') arc [start angle=270, delta angle=180,x radius=\xrad, y radius=\yrad] — ++(0,-\dy) arc [start angle=90, delta angle=-180,x radius=\xprad, y radius=\yprad] — cycle;
          \draw (a') arc [start angle=270, delta angle=180,x radius=\xrad, y radius=\yrad] — ++(0,-\dy) arc [start angle=90, delta angle=-180,x radius=\xprad, y radius=\yprad] — cycle;
          \end{pgfonlayer}
          \end{tikzpicture}`
          Infatti ora, anche se l’arco è disegnato dopo (nel codice), viene disegnato sotto il rettangolo. Ricorda che se usi i layer, devi sempre dichiarare il layer [tt]main,[/tt] altrimenti qualsiasi cosa tu disegni fuori dall’ambiente [tt]pgfonlayer[/tt] non ti verrà disegnato.

          Ciao,
          Marco.

        • #81886
          Up
          0
          Down
          ::


          Ciao Orlando,

          OrlandoE come faccio a riempire l’arco? cioè io ho provato a fare così:
          • disegno parabola esterna e riempio
          • disegno parabola interna e riempio di bianco così mi rimane colorato solo lo spazio tra le due parabole
          Quando però riempio di bianco la parabola interna mi si nasconde parte del rettangolo..cosa sbaglio?

          Ti succede questo perché se il percorso che vuoi riempire non è chiuso, ci pensa [tt]TikZ[/tt] a chiuderlo, unendo il punto finale e quello iniziale con un segmento, e poi esegue il riempimento. Prova con quest’esempio:
          `\begin{tikzpicture}
          \fill (0,0) arc (0:75:3cm);
          \end{tikzpicture}`
          Nel tuo caso, questo segmento che unisce punto finale e punto iniziale si trova dentro il rettangolo, e pertanto quando viene eseguito il riempimento viene cancellato parte del rettangolo stesso. Come vedi nella soluzione che ti ho proposto, il riempimento viene eseguito nel percorso chiuso dato dall’unione delle due ellissi e dei due segmenti che le uniscono.

          Spero di esserti stato utile. Ciao,
          Marco.

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

      Go to top