Re: Spettro elettromagnetico con TikZ

#85185
Liverpool
Partecipante
    Up
    0
    Down
    ::

    logos” post=84628non so come far collimare il comando [tt]\color[wave]{555}[/tt] con l’opzione fill all’interno di un rettangolo, oppure per fare uno shading ad hoc.

    Se vuoi usare il modello [tt]wave[/tt] in [tt]TikZ[/tt], devi caricare prima il pacchetto [tt]xcolor[/tt] con l’opzione [tt]rgb[/tt] in modo tale che i colori vengano convertiti direttamente nello spazio di colore rgb, che è supportato direttamente da [tt]TikZ[/tt] (al contrario di wave).
    Se ho ben capito, tu avresti voluto fare una cosa del genere (puoi aumentare o ridurre a piacere il numero di colori):
    `\documentclass{standalone}
    \usepackage[rgb]{xcolor}
    \usepackage{tikz}
    \usetikzlibrary{arrows}
    \usepackage{siunitx}
    \def\n{400} % numero di colori
    \def\x{10cm} % lunghezza dello spettro

    \begin{document}
    \begin{tikzpicture}
    \foreach \i in {1,…,\n} {
    \pgfmathsetmacro{\L}{380+400/(\n-1)*(\i-1)}
    \definecolor{temp}{wave}{\L}
    \fill ({(\i-1)/\n*\x},0) rectangle +({\x/\n},1cm);
    }
    \draw

    node [below=1cm, font=\footnotesize] {$\frac{\nu}{\SI{1}{THz}}$}
    (0,-1) — (\x,-1) node [above, font=\footnotesize] {$\frac{\lambda_0}{\SI{1}{nm}}$};
    \foreach \i in {400,450,…,750}
    \draw ({(\i-380)/400*\x},-0.95) — +(0,-0.05) node [above, font=\footnotesize] {\i};
    \foreach \i in {750,700,…,400}
    \draw ({(789.47-\i)/404.86*\x},-1.05) — +(0,0.05) node [below, font=\footnotesize] {\i};
    \end{tikzpicture}
    \end{document}`

    [attachment=684]prova1.png[/attachment]
    Occhio che, se provi a rasterizzare l’immagine, potresti avere l’effetto indesiderato “mille righe”, che puoi avere anche su alcuni visualizzatori rapidi ma meno accurati. Se hai questo problema, sostituisci il [tt]fill[/tt] con questa riga:
    `\fill ({(\i-1)/\n*\x},0) rectangle +({\x/\n+0.2pt},1cm);`
    nella quale il valore di 0.2 punti (7 centesimi di millimetro) è aggiunto proprio per coprire eventuali “buchi”. E per essere proprio pignoli, subito dopo il primo ciclo inserisci questa riga che serve a rimuovere l’ultima linea spuria di 0.2 punti:
    `\draw [white, line width=0.2pt] ({\x+0.1pt},0) — +(0,1cm);`
    Ciao

    Osservazione: nei calcoli le divisioni precedono le moltiplicazioni per evitare di sforare la dimensione massima consentita da TikZ che, se non sbaglio, è intorno a 19 piedi.

    Attachments:
    You must be logged in to view attached files.

    Go to top