Hallo,

ich versuche schon seit einiger Zeit das Spektrum des sichtbaren Lichts in TikZ zu zeichnen. Leider bin ich noch nicht weit gekommen. Mein Problem ist, dass ich auch das Spektrum von verschiedenen Elementen zeichnen möchte (z.B. https://de.wikipedia.org/wiki/Datei:Visible_spectrum_of_hydrogen.jpg)

Nun habe ich das colorwav package gefunden, mit dem Wellenlänen in RGB-Werte umgewandelt werden können. nur leider schaffe ich es nicht das spektrum zu zeichnen.

Ein einfacher Test dauert beim Kompilieren leider ewig und es kommt kein Ergebnis:

Open in Online-Editor
\documentclass{standalone}

 \usepackage{tikz}
 \usepackage{colorwav}
 \usepackage{xcolor}

 \begin{document}

\StoreRGBofWaveLength{\Rval}{\Gval}{\Bval}{700};
\definecolor{leftcol}{rgb}{\Rval, \Gval, \Bval};
\StoreRGBofWaveLength{\Rval}{\Gval}{\Bval}{550};
\definecolor{midcol}{rgb}{\Rval, \Gval, \Bval};
\StoreRGBofWaveLength{\Rval}{\Gval}{\Bval}{400};
\definecolor{rightcol}{rgb}{\Rval, \Gval, \Bval};   
\begin{tikzpicture}
    \draw[left color=leftcol, middle color=midcol, right color=rightcol] (0,0) rectangle (1,1);
\end{tikzpicture}
\end{document}

Es wäre super wenn mir jemand einen Tipp geben könnte, wie ich das Spektrum in Tikz zeichnen kann.

Gruß Thomas

gefragt 21 Apr '15, 20:10

lustiger_molch's gravatar image

lustiger_molch
85126
Akzeptiert-Rate: 0%

@lustiger_molch Willkommen in der TeXwelt. In Deinem Code sind ein paar Syntaxfehle. middle color hat nur dann eine Auswirkung, wenn es nach right color und left color steht. Allerdings brauchst Du vermutlich sowieso mehr als nur drei Farben.

(21 Apr '15, 23:35) esdd

Zum einen musst Du den Befehl natürlich richtig schreiben, also \storeRGBofWavelength und zum anderen gehört sowohl nach diesem Befehl als auch nach \definecolor kein Semikolon hin.

Hier ist ein Vorschlag für Spektalllinien und das gesamte Lichtspektrum:

Open in Online-Editor
\documentclass[margin=5pt,varwidth]{standalone}
\usepackage{tikz}
\usepackage{colorwav}

\usepackage{etoolbox}
\renewcommand*{\do}[1]{
  \storeRGBofWavelength{\Rval}{\Gval}{\Bval}{#1}
  \definecolor{wl#1}{rgb}{\Rval, \Gval, \Bval}
}
\docsvlist{380,400,450,500,550,600,650,700,750,780}

\pgfdeclarehorizontalshading{spectrum}{2cm}{
  color(0cm)=(wl380);
  color({0.2cm})=(wl400); color(0.7cm)=(wl450);
  color(1.2cm)=(wl500); color(1.7cm)=(wl550);
  color(2.2cm)=(wl600); color(2.7cm)=(wl650);
  color(3.2cm)=(wl700); color(3.7cm)=(wl750);
  color(4cm)=(wl780)
}

\begin{document}
\begin{tikzpicture}
\fill(3.8,0)rectangle(7.8,2);
\foreach[evaluate={\x=\wl/100}]\wl in {400,450,...,750}
  \draw[line width=1pt,wl\wl] (\x,0)--(\x,2);
\end{tikzpicture}

\tikz\node[inner sep=0pt]{\pgfuseshading{spectrum}};
\end{document}

alt text

Permanenter link

beantwortet 21 Apr '15, 21:32

esdd's gravatar image

esdd
17.8k284257
Akzeptiert-Rate: 62%

bearbeitet 21 Apr '15, 21:37

Super, vielen Dank für die schnelle und gute Antwort. Ich sollte wohl mal häufiger etwas in LaTeX schreiben, um solche Fehler wie mit dem Semikolon zu vermeiden.

(22 Apr '15, 22:05) lustiger_molch
Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×730

gestellte Frage: 21 Apr '15, 20:10

Frage wurde gesehen: 9,712 Mal

zuletzt geändert: 22 Apr '15, 22:05