lorenzo.pantieri” post=99529Buongiorno 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… 😉
Potresti provare con una sfumatura: `
\begin{tikzpicture}[font=\small,x=5mm, y=5mm, scale=.75]
\begin{scope}[draw=darkgray]
\filldraw[top color=lightgray!40,bottom color=lightgray, shading angle=30] (0,0) rectangle (4,1);
\filldraw[top color=lightgray!40,bottom color=lightgray, shading angle=45,rounded corners=2] (1,1.1)rectangle (3,1.6);
\filldraw[top color=lightgray!40,bottom color=lightgray, shading angle=45,] (1.8,1.7) rectangle (2.3,8);
\filldraw[top color=lightgray!40,bottom color=lightgray, shading angle=45,rounded corners=2] (1.5,8.1)rectangle (2.6,8.6);
\filldraw[top color=lightgray!40,bottom color=lightgray, shading angle=45,] (-4,8.7) rectangle (8,9.1);
\filldraw[rounded corners=2,top color=lightgray!40,bottom color=lightgray, shading angle=45,] (1.8,8.8)rectangle (2.3,9.8);
\node[name=c1,shape=semicircle,shape border rotate=180, inner sep=3.75mm,draw=darkgray, top color=lightgray!30,bottom color=lightgray, shading angle=45,] 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, top color=lightgray!50,bottom color=lightgray, shading angle=45,] 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}
` Attenzione: in questo caso inserire le varie opzioni direttamente in scope produrrebbe un risultato sgradito, un riempimento nero. Però, puoi definire uno stile per [tt]top color=lightgray!40,bottom color=lightgray, shading angle=45[/tt] e utilizzarlo di conseguenza (a me è tornato più comodo fare copia e incolla, ma appesantisce parecchio il codice).
Ciao
Claudio