Ottimizzazione codice

  • Creatore
    Topic
  • #87664
    Up
    0
    Down
    ::


    Ho provato a buttar giù qualche riga di codice per fare un disegno.
    Ho letto la guida ArteTikz e adesso quanto scritto per me è una conquista.

    Vorrei solo capire come ottimizzare il codice originale.
    Ho pensato di utilizzare un altro ciclo foreach per l’asse x ma così finirei a spezzare il disegno in molti più pezzi.

    Suggerimenti?

    `\begin{figure}[h]
    \centering
    \begin{tikzpicture}
    \foreach \i in {0,0.5,1,1.5,2,2.5}
    \draw [scale=.4](0,\i)–++(1,0)–++(0.3,1)–++(1,0)–++(0.3,-1)–++(1,0)–++(0.3,1)–++(1,0)–++(0.3,-1)–++(1,0)–++(0.3,1)–++(1,0)–++(0.3,-1)–++(1,0)–++(0.3,1)–++(1,0)–++(0.3,-1)–++(1,0)–++(0.3,1)–++(1,0)–++(0.3,-1)–++(1,0);
    \foreach \i in {0,1.2,2.4}
    \draw [scale=.4](16,\i)–++(1.6,0)–++(-0.3,1)–++(1,0)–++(-0.3,-1)–++(1.6,0)–++(-0.3,1)–++(1,0)–++(-0.3,-1)–++(1.6,0)–++(-0.3,1)–++(1,0)–++(-0.3,-1)–++(1.6,0)–++(-0.3,1)–++(1,0)–++(-0.3,-1)–++(1.6,0)–++(-0.3,1)–++(1,0)–++(-0.3,-1)–++(1.6,0);
    \end{tikzpicture}
    \caption{Differenza di stoccaggio per le lamiere}
    \label{fig:stocc}
    \end{figure}`

Visualizzazione 5 filoni di risposte
  • Autore
    Risposte
    • #87665
      Up
      0
      Down
      ::

      marchetto” post=87130Ho provato a buttar giù qualche riga di codice per fare un disegno.
      Ho letto la guida ArteTikz e adesso quanto scritto per me è una conquista.

      Vorrei solo capire come ottimizzare il codice originale.
      Ho pensato di utilizzare un altro ciclo foreach per l’asse x ma così finirei a spezzare il disegno in molti più pezzi.

      Suggerimenti?

      `\begin{figure}[h]
      \centering
      \begin{tikzpicture}
      \foreach \i in {0,0.5,1,1.5,2,2.5}
      \draw [scale=.4](0,\i)–++(1,0)–++(0.3,1)–++(1,0)–++(0.3,-1)–++(1,0)–++(0.3,1)–++(1,0)–++(0.3,-1)–++(1,0)–++(0.3,1)–++(1,0)–++(0.3,-1)–++(1,0)–++(0.3,1)–++(1,0)–++(0.3,-1)–++(1,0)–++(0.3,1)–++(1,0)–++(0.3,-1)–++(1,0);
      \foreach \i in {0,1.2,2.4}
      \draw [scale=.4](16,\i)–++(1.6,0)–++(-0.3,1)–++(1,0)–++(-0.3,-1)–++(1.6,0)–++(-0.3,1)–++(1,0)–++(-0.3,-1)–++(1.6,0)–++(-0.3,1)–++(1,0)–++(-0.3,-1)–++(1.6,0)–++(-0.3,1)–++(1,0)–++(-0.3,-1)–++(1.6,0)–++(-0.3,1)–++(1,0)–++(-0.3,-1)–++(1.6,0);
      \end{tikzpicture}
      \caption{Differenza di stoccaggio per le lamiere}
      \label{fig:stocc}
      \end{figure}`

      Non una risposta diretta 🙂

      Prova a guardare la mia risposta in How to plot a discontinuous function curve and diagram of Markov chain with TikZ?: puoi definirti un comandino semplice che, ad esempio, con un determinato simbolo avanzi in direzione x, con un secondo simbolo in direzione y e terzo simbolo in entrambe le direzioni. Ti evita qualche parentesi tonda e –++ e forse è più intuitivo, ma le coordinate le devi comunque piazzare tu alla fine.

      Ciao
      Claudio

    • #87666
      Up
      0
      Down
      ::


      Il codice che ho ottenuto per la prima figura è questo:
      `
      \begin{tikzpicture}
      \foreach \i in {0,0.5,…,2.5}{
      \foreach\l in {0,1,…,4}
      \draw[scale=.4](\l*2.8,\i)–++(1,0)–++(0.3,1)–++(1,0)–++(0.3,-1)–++(1,0);}
      \end{tikzpicture}
      `

      Sta a te ora studiartelo e riapplicarlo al secondo caso, ma non dovrebbe essere così difficile ora. ;D

    • #87667
      Up
      0
      Down
      ::


      Grazie per entrambe le risposte.
      Ho impiegato un po a comprendere bene il codice di CFIANDRA ma ho imparato cose 🙂 nuove
      Avevo pensato di fare anche io una cosa simile al codice di SKEVIN93, ma così ho visto che la linea disegnata non è continua ma si suddivide in più parti ogni “piano” della pigna.

      Grazie per le dritte

      Ciao
      Marco

    • #87668
      Up
      0
      Down
      ::


      Scusa ma in che senso si suddivide in più parti? Ho provato a compilare il tuo codice di fianco al mio e non noto differenze anche al massimo ingrandimento. Ogni parte si sovrappone perfettamente alla precedente e si crea una linea continua. A te da un risultato differente?

    • #87669
      Up
      0
      Down
      ::


      No il risultato è identico ma siccome è il primo disegno che faccio con tikz sto cercando di imparare ed essere più rigoroso possibile. Penso che la differenza tra il mio comando e il tuo sta nel fatto che io disegno una linea spezzata unica per tutta la greca mentre con il tuo codice fati 5 pezzi di greca e li posizioni in fila. in questo mio esercizio il tuo codice va bene ma potrebbe succedere di avere linee mal raccordate in certi angoli (vedi figura 5 della guida ArteTikz.).
      Ripeto: in questo esempio il tuo codice va benissimo ai fini pratici e ti ringrazio.

      Ciao
      Marco

    • #87670
      Up
      0
      Down
      ::


      Chiedo scusa allora, ho mal interpretato il tuo ultimo post.
      Si, effettivamente il codice va bene per questo tipo di disegni, magari se fossero state delle curve da raccordare in modo lineare il mio codice non si prestava bene per questo lavoro, perché le linee sarebbero spezzate nei punti di raccordo e magari il codice richiedeva più lavoro.

      Comunque, prego è stato un piacere aiutarti. 😀

      ciao,
      Marco

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

Go to top