Disegnare una parte di trave

  • Creatore
    Topic
  • #59335
    Up
    0
    Down
    ::


    Buongiorno a tutti! Ho un disegno che non riesco a realizzare in tikz. Per capire come è fatto il pezzo lo potete immaginare come composto tagliando una trave a sezione cilindrica in direzione del suo asse con un piano e prendendo la parte di trave sottostante ad esso. Per chiarire sarebbe la parte di trave sotto la corda CD nell’esempio di codice. Come potete vedere ho provato in 3 modi a disegnare questo pezzo con una leggera prospettiva ma non ci sono riuscito.
    Nel primo caso la prospettiva si perde perchè gli archi sono disegnati male.
    Nel secondo caso provando a dare 3 coordinate ai punti dovrei avere il parametro “z radius” per l’arco ma non c’è ed anche utilizzando “y radius” sembra che ci siano problemi di compatibilità tra i comandi.
    Il terzo caso è la soluzione manuale ma insoddisfacente quando poi si va a tracciare la linea sottostante.
    Ecco il codice:
    `\documentclass{article}

    \usepackage{tikz}

    \begin{document}
    \begin{tikzpicture}
    %sezione
    \draw[thick] (0,0) circle[radius=2];
    %corda
    \draw (-1.88,-0.68) node

    {$C$} — (1.88,-0.68)
    node

    {$D$};
    \end{tikzpicture}\par\vspace{2cm}
    \begin{tikzpicture}
    \draw (0,0) — (4,0) — (5,1) — (1,1) — cycle;
    \draw (4,0) arc[radius=0.71,start angle=225,end angle=405];
    \draw (0,0) arc[radius=0.71,start angle=225,end angle=405];
    \end{tikzpicture}\par\vspace{2cm}
    \begin{tikzpicture}
    \draw (0,0,0) — (4,0,0) — (4,0,2) — (0,0,2) — cycle;
    \draw (4,0,0) arc[y radius=2cm,start angle=0,end angle=-180];
    \end{tikzpicture}\\\par\vspace{2cm}
    \begin{tikzpicture}
    \draw (0,0,0) — (4,0,0) — (4,0,2) — (0,0,2) — cycle;
    \draw[rounded corners=20pt] (4,0,0) — (4,-1,1) — (4,0,2);
    \draw[rounded corners=20pt] (0,0,0) — (0,-1,1) — (0,0,2);
    \draw (0,-0.6,1) — (4,-0.6,1);
    \end{tikzpicture}
    \end{document} `
    Qualche idea?

    Grazie mille
    Fra

Visualizzazione 1 filone di risposte
  • Autore
    Risposte
    • #59336
      Up
      0
      Down
      ::


      Ciao,

      hai chiesto una cosa che è tutto tranne che banale. Hai due strade:

      La prima è aiutarti con il pacchetto tkz-3dplot. In questo caso il codice che propongo è il seguente
      `
      \documentclass{standalone}

      \usepackage{tikz}
      \usetikzlibrary{calc,intersections}

      \usepackage{tikz-3dplot}

      \begin{document}
      \centering

      \def\radius{5}
      \def\h{3}
      \pgfmathsetmacro{\AC}{sqrt(\radius^2-\h^2)}
      \pgfmathsetmacro{\angleChord}{acos(\h/\radius)}
      \begin{tikzpicture}
      % circle
      \coordinate (O) at (0,0);
      \draw[thick,name path=circle] (O) circle[radius=\radius];

      % Chord
      \path[name path=rough_chord] ($(O)+(\radius,-\h)$)–($(O)-(\radius,\h)$);
      \path[name intersections={of=circle and rough_chord}];
      \coordinate (A) at (intersection-1);
      \coordinate (B) at (intersection-2);
      \draw (A)node

      {$A$}–(B)node

      {$B$};

      % High
      \coordinate (C) at ($(A)!(O)!(B)$);
      \draw[dashed](O)–(C)node[midway,right]{$h$};

      % draw center
      \fill (O)circle(.5mm)node[above]{$O$};

      % draw angle
      \draw[dashed](A)–(O)–(B);
      \draw[<->]($(O)-(0,\h/2)$)arc[radius = \h/2,
      start angle = 270,
      delta angle = -\angleChord];
      \node[below] (theta) at ($(O)+({-90-\angleChord/2}:\h/2)$){$\theta$};
      \end{tikzpicture}

      \vskip 2cm

      \tdplotsetmaincoords{70}{30}
      \begin{tikzpicture}[tdplot_main_coords]
      \def\MetaLunghezza{3}

      % ARCS
      %->1
      \tdplotsetrotatedcoords{0}{90}{-90}
      \coordinate (Shift) at (\MetaLunghezza,0,0);
      \tdplotsetrotatedcoordsorigin{(Shift)}
      \tdplotdrawarc[tdplot_rotated_coords,]{(0,0,0)}{\radius}{90-\angleChord}{90+\angleChord}{}{}

      %->2
      \def\ang{65}
      \coordinate (Shift) at (-\MetaLunghezza,0,0);
      \tdplotsetrotatedcoordsorigin{(Shift)}
      \tdplotdrawarc[tdplot_rotated_coords,]{(0,0,0)}{\radius}{90-\angleChord}{\ang}{}{}

      % plane cut
      \draw[dashed] (-\MetaLunghezza,0,0)–(\MetaLunghezza,0,0);
      \draw[fill=white](-\MetaLunghezza,-\AC,-\h)–
      (-\MetaLunghezza,\AC,-\h)–
      (\MetaLunghezza,\AC,-\h)–
      (\MetaLunghezza,-\AC,-\h)–
      cycle;

      % connecting line
      \pgfmathsetmacro{\pointX}{-\MetaLunghezza}
      \pgfmathsetmacro{\pointY}{-\radius*cos(\ang)}
      \pgfmathsetmacro{\pointZ}{-\radius*sin(\ang)}
      \coordinate (point) at (\pointX,\pointY,\pointZ);
      \draw(point)–++(2*\MetaLunghezza,0,0);

      \end{tikzpicture}
      \end{document}
      `

      che da il seguente risultato(clicca sull’immagine per ingrandire):

      Hai quattro parametri con cui giocare:
      1. \radius
      2. \h distaza della corda dal centro dlla sezione circolare
      3. \MetaLunghezza della trav
      4. \ang angolo che serve per disegnae bene la retta inferiore che unisce le sue curve in prospettiva

      La seconda soluzione è affidarti al programma Sketch raggiungibile qui

      Nellaa seconda non dovresti usare il trucchetto che ho usato con il parametro \ang, ma dovresti dare ad ogni faccia del cilindro un colore diverso.

      Spero di esserti stato di aiuto.

      Michele

      P.S. Il disegno ti serve nell’ambito della teoria delle travi, in particolare per la formula di Jourawski per determinare il taglio?

    • #59337
      Up
      0
      Down
      ::


      Grande! Questo pacchetto non lo conscevo e mi sembra che tu sappia usarlo benissimo!
      La soluzione interna mi piace di più in quanto sto cercando di disegnare tutte le immagini in tikz! Studierò bene il tuo codice, grazie

      Ciao
      Fra

      P.S. Hai colto in pieno il problema! 😀 Sto scrivendo una pseudo dispensa (in pratica trascrivo i miei appunti) per il corso di meccanica dei solidi che sto seguendo. Ho visto che hai chiesto poco tempo fa quale fosse il font dell’università di Pisa. Sei uno studente? Io studio li! 😉

      EDIT: il disegno dovrebbe essere completato! Ho creato un esempio compilabile per chi volesse vedere il risultato:
      `\documentclass{article}
      \usepackage{tikz,tikz-3dplot}
      \usepackage{amsmath}

      \usetikzlibrary{calc,intersections}

      \newcommand{\pdev}[2]{\dfrac{\partial #1}{\partial #2}}

      \begin{document}
      \tdplotsetmaincoords{70}{30}
      \begin{tikzpicture}[tdplot_main_coords]
      \def\radius{3}
      \def\h{2}
      \pgfmathsetmacro{\AC}{sqrt(\radius^2-\h^2)}
      \pgfmathsetmacro{\angleChord}{acos(\h/\radius)}
      \def\MetaLunghezza{2}
      \pgfmathsetmacro{\interv}{(2*\AC)/9}
      \pgfmathsetmacro{\secondo}{\AC-\interv}
      \pgfmathsetmacro{\hsigma}{(\radius+\h)/2}

      % ARCS
      %->1
      \tdplotsetrotatedcoords{0}{90}{-90}
      \coordinate (Shift) at (\MetaLunghezza,0,0);
      \tdplotsetrotatedcoordsorigin{(Shift)}
      \tdplotdrawarc[tdplot_rotated_coords,]{(0,0,0)}{\radius}{90-\angleChord}{90+\angleChord}{}{}

      %->2
      \def\ang{65}
      \coordinate (Shift) at (-\MetaLunghezza,0,0);
      \tdplotsetrotatedcoordsorigin{(Shift)}
      \tdplotdrawarc[tdplot_rotated_coords]{(0,0,0)}{\radius}{90-\angleChord}{\ang}{}{}

      % connecting line
      \pgfmathsetmacro{\pointX}{-\MetaLunghezza}
      \pgfmathsetmacro{\pointY}{-\radius*cos(\ang)}
      \pgfmathsetmacro{\pointZ}{-\radius*sin(\ang)}
      \coordinate (point) at (\pointX,\pointY,\pointZ);
      \draw(point)–++(2*\MetaLunghezza,0,0);
      %sigma
      \draw[-latex] (\MetaLunghezza,0,-\hsigma) —
      ($(\MetaLunghezza,0,-\hsigma) + (1,0,0)$)
      node

      {$\sigma_z + \pdev{\sigma_z}{z}dz$};
      \draw[-latex] ($(-\MetaLunghezza,0,-\hsigma) + (0,0,0)$) —
      ($(-\MetaLunghezza,0,-\hsigma)+(-1,0,0)$) node

      {$\sigma_z$};

      % plane cut
      %\draw[dashed] (-\MetaLunghezza,0,0)–(\MetaLunghezza,0,0);
      \draw[fill=white](-\MetaLunghezza,-\AC,-\h)–
      (-\MetaLunghezza,\AC,-\h)–
      (\MetaLunghezza,\AC,-\h)–
      (\MetaLunghezza,-\AC,-\h)–
      cycle;

      %tau
      \draw ($(\MetaLunghezza,-\AC,-\h) + (-1,0,0)$) —
      ($(\MetaLunghezza,\AC,-\h) + (-1,0,0)$);
      \foreach \y in {-\AC,-\secondo,…,\AC}
      \draw[-latex] ($(\MetaLunghezza,\y,-\h) + (-1,0,0)$) —
      ($(\MetaLunghezza,\y,-\h) + (-2,0,0)$);
      \node at ($(\MetaLunghezza,0.5,-\h) + (-2.5,0,0)$) {$\tau_{zy}$};

      %dz
      \draw[help lines] (-\MetaLunghezza,\AC,-\h) —
      ($(-\MetaLunghezza,\AC,-\h) + (0,1,0)$);
      \draw[help lines] (\MetaLunghezza,\AC,-\h) —
      ($(\MetaLunghezza,\AC,-\h) + (0,1,0)$);
      \draw[help lines,<->] ($(-\MetaLunghezza,\AC,-\h) + (0,0.9,0)$)
      — ($(\MetaLunghezza,\AC,-\h) + (0,0.9,0)$)
      node[fill=white,midway,sloped]{$dz$};
      \end{tikzpicture}
      \end{document}`
      Grazie ancora ad azoun! Leggendo la documentazione di tikz-3dplot sono riuscito ad interpretare tutto il codice che mi hai fornito! Il pacchetto è molto interessante!

      Ciao
      Fra

Visualizzazione 1 filone di risposte
  • Devi essere connesso per rispondere a questo topic.

Go to top