tutorials :: foreach-Schleife
Inhalt |
---|
Die foreach-Schleife kann einem eine Menge Arbeit ersparen. Sie wird im pgf-manual in Kapitel 34 behandelt.
Die Syntax
Die Syntax der
Diese Zeile liefert (außerhalb einer\foreach \x in {1,2,3,4,5} {\x,}
Dieses Beispiel liefert die Folge\foreach \x/\y in {1/a,2/b,3/c,4/d,5/e} {\x \y,}
Die Liste lässt sich bei bestimmten Zahlenfolgen durch die Punkt-Notation
Mehr zur Punkt-Notation findet man auch im\foreach \x in {2,4,...,10} {\x ,}
Beispiele mit einer Variablen
Kommen wir nun zu Beispielen.
Mit einer Variablen lässt sich schon viel anfangen.
Wir können z.B. einen beschrifteten Zahlenstrahl von -5 bis 5 malen.
Den Strahl selbst erhalten wir mit Hilfe des
\begin {tikzpicture}\draw [->] (-5.5,0) -- (5.5,0) node [below] {$\mathbb{R}$};\foreach \x in {-5,...,5}\draw (\x,0.1) -- (\x,-0.1) node [below] {\x};\end {tikzpicture}
Das nächste Beispiel soll zeigen, dass wir mit einer Schleife auch automatisiert Farben verändern können.
Dazu wollen wir fünf Bälle zeichnen.
Mit der Variable
Die Kreise haben alle einen Durchmesser von 3 mm. Wenn man lustig ist, kann man die 3 auch durch\begin {tikzpicture}\foreach \x in {1,...,5}\draw (\x,0) circle (3mm);\end {tikzpicture}
\definecolor {myblue}{HTML}{92dcec}\begin {tikzpicture}\foreach \x in {1,...,5}\shade [ball color=black!\x 0!myblue] (\x,0) circle (3mm);\end {tikzpicture}
Hier ist ein weiteres Beispiel:
\definecolor {myblue}{HTML}{92dcec}\begin {tikzpicture}\foreach \x in {9,...,1}\draw [fill=myblue!\x0] (-0.\x cm - 1cm,-0.\x cm) rectangle (0.\x cm + 1cm,0.\x cm);\end {tikzpicture}
Beispiele mit mehreren Variablen
Deutlich mehr Kreativität können wir mit mehreren Variablen beweisen.
Z.B. kann man im vorletzten Beispiel nicht nur das Mischverhältnis zwischen zwei Farben verändern, sondern den ganzen Farbton.
Das geschieht mit der zusätzlichen Variable
\begin {tikzpicture}\foreach \x/\color in {1/green, 2/red, 3/blue, 4/yellow, 5/orange}\shade [ball color=\color] (\x,0) circle (3mm);\end {tikzpicture}
Kommen wir nun zu einem Beispiel mit vier Variablen.
Wir wollen ein paar Blasen erzeugen, d.h. verschieden große farbige Kreise wild verstreut innerhalb eines bestimmten Gebietes.
Stellen wir uns das Gebiet als zwei dimensionales Koordinatensystem vor, so brauchen wir die xy-Koordinaten
\definecolor {myblue}{HTML}{92dcec}\begin {tikzpicture}\foreach \x/\y/\r/\color in {3.7 cm/ 1.3 cm/ 2 mm/ 80 , 3 cm/ 1.5 cm/ 1 mm/ 80 , 1.7 cm/ 0.4 cm/ 2 mm/ 30 , 0.3 cm/ 0.2 cm/ 2 mm/ 70 , 0.5 cm/ 0.4 cm/ 1 mm/ 80 , 2.4 cm/ 1.5 cm/ 1 mm/ 50 , 1.9 cm/ 1.4 cm/ 2 mm/ 10 , 4.7 cm/ 1.3 cm/ 2 mm/ 100 , 1.3 cm/ 0.8 cm/ 2 mm/ 100 , 2.8 cm/ 1.4 cm/ 1 mm/ 100 , 4.3 cm/ 0.2 cm/ 2 mm/ 100 , 0 cm/ 0.5 cm/ 2 mm/ 50 , 4.8 cm/ 0.7 cm/ 2 mm/ 60 , 2.7 cm/ 0 cm/ 1 mm/ 100 , 5 cm/ 0.9 cm/ 2 mm/ 50 , 1.3 cm/ 0.6 cm/ 3 mm/ 70 , 1 cm/ 1.2 cm/ 3 mm/ 70 , 0 cm/ 0.3 cm/ 2 mm/ 30 , 2.9 cm/ 0.2 cm/ 2 mm/ 100 , 5.5 cm/ 0.5 cm/ 2 mm/ 100 , 1.9 cm/ 0.2 cm/ 1 mm/ 100 , 2.3 cm/ 0.2 cm/ 1 mm/ 50 , 1.5 cm/ 1.3 cm/ 1 mm/ 50 , 3.5 cm/ 1.1 cm/ 2 mm/ 40 , 3.3 cm/ 0.1 cm/ 3 mm/ 100 , 4.7 cm/ 0.8 cm/ 2 mm/ 90 , 0.8 cm/ 0.3 cm/ 1 mm/ 100 , 0.7 cm/ 0.7 cm/ 2 mm/ 40 , 5.4 cm/ 0.8 cm/ 2 mm/ 70 , 0.8 cm/ 1.4 cm/ 3 mm/ 100 , 1.1 cm/ 1.1 cm/ 1 mm/ 40 , 2.5 cm/ 0.9 cm/ 2 mm/ 40 , 4.4 cm/ 1.4 cm/ 2 mm/ 60 , 1.3 cm/ 0.7 cm/ 1 mm/ 50 , 0.1 cm/ 0.2 cm/ 3 mm/ 90 , 4.1 cm/ 0.1 cm/ 2 mm/ 60 , 0.3 cm/ 1.4 cm/ 1 mm/ 60 , 1.5 cm/ 0.9 cm/ 2 mm/ 60 , 3.2 cm/ 1.4 cm/ 2 mm/ 80 , 4.8 cm/ 0.3 cm/ 2 mm/ 100 , 4.7 cm/ 0.9 cm/ 2 mm/ 50 , 4.7 cm/ 0.2 cm/ 2 mm/ 30 , 2.2 cm/ 0.3 cm/ 2 mm/ 70 , 3.6 cm/ 1.4 cm/ 1 mm/ 80 , 5.7 cm/ 0.5 cm/ 2 mm/ 50 , 4.3 cm/ 0.4 cm/ 3 mm/ 40 , 4 cm/ 0.6 cm/ 2 mm/ 10 , 5.5 cm/ 1 cm/ 1 mm/ 60 , 3.1 cm/ 0.3 cm/ 2 mm/ 10 , 4.6 cm/ 0.3 cm/ 2 mm/ 40 }\shade [ball color = myblue!\color] (\x, \y) circle (\r);\end {tikzpicture}
Diese Beispiele dürften für das Verständnis der