Marco87″ post=73675Credete che sia impossibile rifare il disegno con i normali comandi di [tt]TikZ?[/tt]
Con questo intervento rispondo principalmente a @Marco87 e a @cfiandra, che si sono cimentati insieme a me nella messa in pratica dell’idea che avevo rivelato. Come ho detto, non mi è piaciuta la sintassi del pacchetto tikz-3dplot; in particolare, l’assenza di possibilità di modificare il rapporto di riduzione dei versori coordinati. Per questo motivo, ho deciso di provare la libreria di 3d di TikZ, non ancora documentata. Essa fa attualmente veramente poco e manca nel codice di una riga essenziale, che ho dovuto aggiungere per potere utilizzare il sistema di coordinate sferico (che, tanto per semplificare la vita, adotta una convenzione differente da quella di pgfplots). Quello che ci serviva però c’è: la possibilità di disegnare in 2D su piani paralleli ai piani coordinati e, con l’aggiunta di qualche riga di codice, anche su piani meridiani qualsiasi.
Il risultato e il codice che lo produce è riportato in allegato. Non sono pienamente soddisfatto dell’effetto di dissolvenza, cioè non sono riuscito a trovare un effetto radiale più graduale verso l’esterno, perciò mi sono dovuto accontentare di una semplice dissolvenza lineare. Il problema penso che sia in parte dovuto alla diversa lunghezza dei versori coordinati, ma anche dove mi sarei aspettato un comportamento corretto (sul piano verticale), non sono riuscito ad ottenere quello che volevo. Se voi siete in grado di migliorarlo, meglio così. Per il resto, credo sia solo una questione di gusto (a parte l’occhio che necessiterebbe di un vero grafico).
Il codice è abbastanza semplice e spiegato nei commenti. Si possono variare in due passaggi l’azimut e l’elevazione, se non piacciono, oppure ruotare il sistema di riferimento (un po’ più complicato) o modificare il rapporto di riduzione.
Fatemi sapere che ne pensate (anche i committenti Lorenzo e Tommaso che si sono già espressi negativamente in passato).
Ciao
[attachment=340]view.tex[/attachment]
[attachment=341]view.pdf[/attachment]
P.S. Per comodità il codice lo riporto anche nel messaggio.
`\documentclass{article}
\usepackage[sc]{mathpazo}
\linespread{1.05}
\usepackage[T1]{fontenc}
\usepackage{textcomp}
\usepackage[utf8]{inputenc}
\usepackage[italian]{babel}
\usepackage{caption}
\usepackage[svgnames]{xcolor}
\usepackage{tikz}
\usetikzlibrary{3d,calc,fadings}
\def\azimut{70} % definizione dell'angolo di azimut nel sistema di pgfplots
\def\el{35} % definizione dell'angolo di elevazione
\pgfmathsetmacro{\az}{270+\azimut} % calcolo dell'azimut nel sistema ISO
\pgfmathsetmacro{\xaz}{cos(\az)}
\pgfmathsetmacro{\yaz}{sin(\az)}
\pgfmathsetmacro{\xel}{cos(\el)}
\pgfmathsetmacro{\yel}{sin(\el)}
\makeatletter
\pgfset{/tikz/cs/radius/.store in=\tikz@cs@radius} % aggiunge una riga saltata nel codice della libreria 3D
\tikzoption{canvas is meridian plane at viewpoint}[]{% definisce il piano verticale passante per l'origine
\def\tikz@plane@origin{\pgfpointxyz{0}{0}{0}}% e il punto di vista
\def\tikz@plane@x{\pgfpointxyz{\xaz}{\yaz}{0}}%
\def\tikz@plane@y{\pgfpointxyz{0}{0}{1}}%
\tikz@canvas@is@plane
}
\makeatother
\tikzfading [name=dissolvenza, top color=transparent!0, bottom color=transparent!100]
\begin{document}
\begin{figure}
\centering
% I numeri assegnati ad x ed y sono le componenti delle proiezioni dei versori dei tre assi sul quadro.
% Per correggere la prospettiva, è stata utilizzata un'assonometria cavaliera frontale dimetrica
% con rapporto di riduzione circa pari a 2 (stimato ad occhio).
\begin{tikzpicture} [x={(1cm,0cm)}, y={(0.53cm,0.53cm)}, z={(0cm,1cm)}, scale=5]
% costruzione sull'equatore (azimut)
\begin{scope} [canvas is xy plane at z=0]
\fill [Coral, path fading=dissolvenza, fading angle=\azimut/2]
(0,0) — (0,-1) arc (270:\az:1); % angolo di azimut
\draw [-stealth, DarkRed] (0,-0.3) arc (270:\az:0.3); % arco orientato di azimut
\end{scope}
% costruzione sul meridiano (elevazione)
\begin{scope} [canvas is meridian plane at viewpoint]
\fill [SkyBlue, path fading=dissolvenza, fading angle=90+\el/2]
(0,0) — (1,0) arc (0:\el:1); % angolo di elevazione
\draw [gray, thick] (0,0) — (\xel,\yel); % asse visivo
\draw [gray, thick, dash pattern=on 5pt off 5pt, dash phase=5pt]
(\xel,\yel) — (1.2*\xel,1.2*\yel); % prolungamento dell'asse visivo
\draw [gray, dashed, thick] (0,0) — (1,0); % proiezione dell'asse visivo
\draw [-stealth, MidnightBlue] (0.3,0) arc (0:\el:0.3); % arco orientato di elevazione
% costruzione dell'occhio in prospettiva
\begin{scope} [shift={(1.32*\xel,1.32*\yel)}, rotate=\el]
\draw [clip] (-0.097,0.026) — (0,0) — (-0.097,-0.026);
\filldraw [SkyBlue, draw=black] (-0.075,0) circle (0.015 and 0.025);
\draw (-0.08,0.012) arc (105:-105:0.005 and 0.012);
\draw (-0.097,0.026) — (0,0) — (-0.097,-0.026);
\end{scope}
\end{scope}
% assi cartesiani
\draw [-latex] (0,0,0) — (1,0,0) node
{$x$}; % asse x
\draw [-latex] (0,-1,0) — (0,0.7,0) node
{$y$}; % asse y
\draw [-latex] (0,0,0) — (0,0,1) node
{$z$}; % asse z
% etichette degli angoli
\draw [DarkRed] (xyz spherical cs: longitude=180-\azimut/2, latitude=0, radius=0.15)
node {$\alpha$}; % etichetta dell'azimut
\draw [MidnightBlue] (xyz spherical cs: longitude=180-\azimut, latitude=\el/2, radius=0.15)
node {$\varepsilon$}; % etichetta dell'elevazione
\end{tikzpicture}
\caption{Definizione dell'azimut $\alpha$ e dell'elevazione $\varepsilon$ secondo la convenzione adottata da pgfplots. Nel caso specifico è $\alpha=\azimut^\circ$ e $\varepsilon=\el^\circ$.}
\end{figure}
\end{document}`