Re: Le mie (dis)avventure con TikZ

#96817
lorenzo.pantieri
Partecipante
    Up
    0
    Down
    ::


    Buongiorno e buona domenica a tutti.

    Sono alle prese con l’immagine di una bilancia, e la vorrei migliorare dandole un po’ di tridimensionalità. Provo a spiegarmi con un codice compilabile.
    `\documentclass{article}
    \usepackage[dvipsnames]{xcolor}
    \usepackage{tikz,subfig}
    \usetikzlibrary{shapes,shapes.geometric}

    \begin{document}

    \newcommand{\base}{%
    \filldraw[fill=black!90, draw=gray!80,rounded corners,shading=radial, inner color=white, outer color=gray!90]%
    (-2.4cm, -0.2cm) rectangle (2.4cm,0.4cm);
    }

    \newcommand{\aste}{%
    \fill[fill=black!90,rounded corners,shading=radial, inner color=white, outer color=gray!90]%
    (-1.25mm,3mm) rectangle (1.25mm,4.3cm);
    }

    \newcommand{\disco}{%
    \filldraw[fill=gray!20,draw=gray, rounded corners, shade,shading=radial, inner color=white, outer color=blue!50]%
    (-.6cm, .4cm) rectangle (.6cm,0.8cm);
    }
    \begin{tikzpicture}[scale=.7,font=\small]
    \foreach \n/\a in {-15.25mm,0,15.25mm}{
    \begin{scope}[xshift=\a]
    \aste
    \end{scope}
    }

    \foreach \n/\x in {1/0cm}{%
    \begin{scope}[xshift=\x]
    \base
    \end{scope}
    }

    \foreach \n/\y in {0,.4cm,…,3.2cm}{%
    \begin{scope}[xshift=15.75mm,yshift=\y]
    \disco
    \end{scope}
    }
    \end{tikzpicture}

    \begin{figure}
    \centering
    \subfloat[][\label{fig:mattone1}]{
    \begin{tikzpicture}[font=\small,x=5mm, y=5mm, scale=.75]
    \begin{scope}[fill=lightgray, draw=darkgray]
    \filldraw (0,0) rectangle (4,1);
    \filldraw[rounded corners=2] (1,1.1)rectangle (3,1.6);
    \filldraw (1.8,1.7) rectangle (2.3,8);
    \filldraw[rounded corners=2] (1.5,8.1)rectangle (2.6,8.6);
    \filldraw (-4,8.7) rectangle (8,9.1);
    \filldraw[rounded corners=2] (1.8,8.8)rectangle (2.3,9.8);

    \node[name=c1,shape=semicircle,shape border rotate=180, inner sep=3.75mm,draw=darkgray, fill=lightgray] at (-4,3)
    {};
    \node (a) at (-4,8.7) {};
    \draw (a.center)–(c1.arc start);
    \draw (a.center)–(c1.arc end);

    \node[name=c2,shape=semicircle,shape border rotate=180, inner sep=3.75mm,draw=darkgray, fill=lightgray] at (8,3)
    {};
    \node (b) at (8,8.7) {};
    \draw (b.center)–(c2.arc start);
    \draw (b.center)–(c2.arc end);

    \filldraw[fill=BrickRed, draw=BrickRed](-5,4) rectangle (-3,5);
    \filldraw[fill=BrickRed, draw=BrickRed](7,4) rectangle (8,5);
    \filldraw[fill=white] (8.3,4) rectangle (9.7,5.1);
    \filldraw[fill=white] (8.6,5.1) rectangle (9.4,5.4);
    \node () at (9,4.5) {$1$kg};
    \end{scope}
    \end{tikzpicture}
    }
    \qquad
    \subfloat[][\label{fig:mattone2}]{
    \begin{tikzpicture}[font=\small,x=5mm, y=5mm, scale=.75]
    \begin{scope}[fill=lightgray, draw=darkgray] %, xshift=10cm]
    \filldraw (0,0) rectangle (4,1);
    \filldraw[rounded corners=2] (1,1.1)rectangle (3,1.6);
    \filldraw (1.8,1.7) rectangle (2.3,8);
    \filldraw[rounded corners=2] (1.5,8.1)rectangle (2.6,8.6);
    \filldraw (-4,8.7) rectangle (8,9.1);
    \filldraw[rounded corners=2] (1.8,8.8)rectangle (2.3,9.8);

    \node[name=c1,shape=semicircle,shape border rotate=180, inner sep=3.75mm,draw=darkgray, fill=lightgray] at (-4,3)
    {};
    \node (a) at (-4,8.7) {};
    \draw (a.center)–(c1.arc start);
    \draw (a.center)–(c1.arc end);

    \node[name=c2,shape=semicircle,shape border rotate=180, inner sep=3.75mm,draw=darkgray, fill=lightgray] at (8,3)
    {};
    \node (b) at (8,8.7) {};
    \draw (b.center)–(c2.arc start);
    \draw (b.center)–(c2.arc end);

    \filldraw[fill=BrickRed, draw=BrickRed](-4.5,4) rectangle (-3.5,5);
    \filldraw[fill=white] (7.3,4) rectangle (8.7,5.1);
    \filldraw[fill=white] (7.6,5.1) rectangle (8.4,5.4);
    \node () at (8,4.5) {$1$kg};
    \end{scope}
    \end{tikzpicture}
    }
    \caption{Un mattone pesa un chilo più mezzo mattone. Quanto pesa un mattone?}
    \label{fig:mattone}
    \end{figure}
    \end{document}`
    La prima immagine riproduce un pallottoliere: come vedete le sfumature le danno una bella tridimensionalità.

    Invece la secondo immagine, che ritrae una bilancia, è molto piatta. Mi suggerite come modificare il codice della bilancia per avere un effetto di sfumatura analogo a quello del pallottoliere?

    Grazie anticipate!
    L.

    P.S. Tutti i suggerimenti per migliorare il codice sono più che benvenuti… 😉

    Go to top