Re: L’arte di fare grafici di funzione con LaTeX

#73958
Up
0
Down
::


Ciao,

ho “finito” il disegno:
`\begin{figure}[tb]
\centering
\tdplotsetmaincoords{70}{110}
\begin{tikzpicture}[tdplot_main_coords,scale=1]
%origine
\coordinate [label=175:{\tiny\parbox{1.5cm}{\centering Center of \\ Plot Box}}] (o) at (0,0,0);

%asse x
\coordinate [label=0:$x$] (x) at (0,5.5,0);
\draw [thick,-stealth'] (o) — (x);
%asse y
\coordinate [label=70:$y$] (y) at (-4.5,0,0);
\coordinate (yneg) at (4.5,0,0);
\draw [thick,-stealth'] (o) — (y);
%tratto y<0
\draw [thick] (o) — (yneg);
%asse z
\coordinate [label=above:$z$] (z) at (0,0,3);
\draw [thick,-stealth'] (o) — (z);

%segmento piano xy
\fill [gray!50,opacity=.75] (o) — (3,4.5,0) — +(0,0,3) — (o);
\draw (o) — (3,4.5,0) — +(0,0,3) — (o);

%elevazione
\tdplotgetpolarcoords{1}{1}{1}
\tdplotsetthetaplanecoords{56.310}
\tdplotdrawarc[tdplot_rotated_coords,-freccia45]{(o)}{2.1}{90}{60.983}{anchor=west}{\small Elevation}

%azimuth
\tdplotdrawarc[-freccia45]{(o)}{1.5}{0}{56.310}{anchor=north}{\small Azimuth}

%viewpoint
\def\dista{6}
\def\distb{5}
\def\tana{2/3}
\coordinate (cen) at (\dista*\tana,\dista,\dista*\tana);
\coordinate (sup) at ($(cen)+(canvas polar cs:radius=.75cm,angle=180)$);
\coordinate (inf) at ($(cen)+(canvas polar cs:radius=.75cm,angle=225)$);
\coordinate (pupilla) at ($(cen)+(canvas polar cs:radius=.475cm,angle=202.5)$);
\coordinate [label=above:\tiny Viewpoint] (vp) at ($(sup)!.5!(cen)$);

\draw (inf) — (cen) — (sup);

\tdplotgetpolarcoords{1}{1}{1}
\tdplotsetthetaplanecoords{123.690}
\tdplotdrawarc[tdplot_rotated_coords]{(cen)}{.5}{226.5}{275}{anchor=west}{}

\fill [black] (pupilla) circle (.025cm);

\end{tikzpicture}
\label{fig:nomeFigura}
\caption{Didascalia.}
\end{figure}`
per il quale bisogna caricare nel preambolo:
`\usepackage{tikz}
\usetikzlibrary{arrows}
\usetikzlibrary{backgrounds}
\usetikzlibrary{calc}
\usetikzlibrary{intersections}
\usetikzlibrary{positioning}
\usetikzlibrary{shadows}
\usetikzlibrary{shapes}
\usetikzlibrary{through}
\usetkzobj{all}
\usepackage{tikz-3dplot}

\pgfarrowsdeclare{freccia45}{freccia45}
{
\pgfmathsetlengthmacro{\rex}{\pgfgetarrowoptions{freccia45}+1.28\pgflinewidth}
\pgfarrowsleftextend{0pt}
\pgfarrowsrightextend{\rex}
}
{
\pgfmathsetlengthmacro{\lun}{\pgfgetarrowoptions{freccia45}/cos(22.5)}
\pgfsetdash{}{+0pt}
\pgfsetmiterjoin
\pgfpathmoveto{\pgfpointadd{\pgfqpoint{\pgfgetarrowoptions{freccia45}}{0pt}}{\pgfqpointpolar{157.5}{\lun}}}
\pgfpathlineto{\pgfqpoint{\pgfgetarrowoptions{freccia45}}{0pt}}
\pgfpathlineto{\pgfpointadd{\pgfqpoint{\pgfgetarrowoptions{freccia45}}{0pt}}{\pgfqpointpolar{-157.5}{\lun}}}
\pgfpathclose
\pgfusepathqstroke
}
\def\miodef{3.5pt} % imposta il valore utilizzato per default
\pgfsetarrowoptions{freccia45}{\miodef} % valore utilizzato se /punta non viene invocato
\pgfkeys{/punta/.default=\miodef, /punta/.code={\pgfsetarrowoptions{freccia45}{#1}}}`

Alcuni commenti:
[ol]
[li]Il risultato ottenuto non mi dispiace, mentre il codice che ho usato non mi piace molto; sarò grato di qualsiasi consiglio vogliate darmi;[/li]
[li]Lo stile [tt]freccia45[/tt] è stato creato da Liverpool a seguito di una mia richiesta. A mio parere è esteticamente più bella di quelle disponibili di default in [tt]TikZ[/tt] (si veda la documentazione dalla pagina 256). In ogni caso, se non vi piace, è semplice cambiare lo stile;[/li]

  • Ho dato al riempimento grigio una certa trasparenza. Se preferite lo stile usato nel sito della MathWorks, la tolgo;
  • La “zona viewpoint” è stata realizzata con un codice a dir poco rozzo. Anche qui gradirò molto qualsiasi consiglio;
  • Per ridimensionare il disegno, basta cambiare il valore della chiave [tt]scale[/tt] alla 4° riga del codice;
  • Infine, come devo modificare il disegno affinché soddisfi le esigenze della guida? (Sempre che vi sembri un buon candidato… ;)).
  • [/ol]

    Ciao e grazie,
    Marco.

    Go to top