Trasformare un disegno 2D su una superficie cilindrica

  • Creatore
    Topic
  • #122315
    Up
    0
    Down
    ::


    Come posso procedere per trasformare un mio disegno 2D realizzato con Tikz, i cui punti sono in un file di testo, in un disegno 3D, ma su di una superficie cilindrica?

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


      `
      documentclass[tikz,border=10pt]{standalone}
      \usepackage{tikz-3dplot} % Per una gestione comoda delle coordinate 3D
      \usepackage{pgfplots} % (opzionale) se vuoi leggere tabelle
      \pgfplotsset{compat=1.18}

      % Definisci i parametri: raggio del cilindro e larghezza del disegno 2D
      \def\R{2} % Raggio del cilindro
      \def\L{10} % Larghezza totale del disegno in unità (da 0 a L)

      % Macro che trasforma un punto (x,y) in coordinate 3D sul cilindro
      \newcommand{\transformPoint}[2]{%
      % Calcola l'angolo in gradi: TikZ lavora spesso in gradi
      \pgfmathsetmacro{\theta}{(#1/\L)*360}%
      % Calcola le coordinate 3D: (R*cos(theta), R*sin(theta), y)
      \pgfmathsetmacro{\Xcoord}{\R*cos(\theta)}%
      \pgfmathsetmacro{\Ycoord}{\R*sin(\theta)}%
      \pgfmathsetmacro{\Zcoord}{#2}%
      (\Xcoord,\Ycoord,\Zcoord)%
      }

      \begin{document}
      \tdplotsetmaincoords{70}{110} % Imposta una vista 3D
      \begin{tikzpicture}[tdplot_main_coords]
      % Per riferimento, disegna il bordo del cilindro (la circonferenza di base)
      \draw[gray, very thin] (0,0,0) circle (\R);

      % Supponiamo di avere alcuni punti: in un caso reale li leggeresti dal file
      % Esempio: lista di punti nel formato x/y
      \foreach \x/\y in {0/0, 2/1, 4/0.5, 6/1.5, 8/0.8, 10/1.2} { \draw[fill=red] \transformPoint{\x}{\y}};

      \draw[blue, thick] ;
      \transformPoint{0}{0} —
      \transformPoint{2}{1} —
      \transformPoint{4}{0.5} —
      \transformPoint{6}{1.5} —
      \transformPoint{8}{0.8} —
      \transformPoint{10}{1.2};

      \end{tikzpicture}
      \end{document}`

      Per cercare di circoscrivere il mio problema, vi posto un’altro codice. Al momento della compilazione mi viene segnalato un errore, appena dopo:
      `
      \foreach \x/\y in {0/0, 2/1, 4/0.5, 6/1.5, 8/0.8, 10/1.2} { \draw[fill=red] \transformPoint{\x}{\y}};
      `

      `
      document.tex: errore: 29: Package tikz Error: Giving up on this path. Did you forget a semicolon?. …{ \draw[fill=red] \transformPoint{\x}{\y}}
      `

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

Go to top