Ich möchte mit TikZ als Bestandteil einer Grafik einen Kreisring zeichnen, also zwei konzentrische Kreise (gemeinsamer Mittelpunkt) und die eingeschlossene Fläche gefärbt. Was so kompliziert klingt, veranschaulicht besser ein Bildentwurf:

Kreisscheibe

Wie stelle ich das am besten an? Einen Pfad festlegen und füllen, oder gefüllte Kreise zeichnen, wobei der kleinere als zweiter gezeichnet wird und so den größeren überschreibt? Die Kreislinien selbst als Begrenzung sind nicht wichtig, die hatte ich im Mal-Programm gezeichnet, um den zu füllenden Bereich zu begrenzen, nur um die farbige Scheibe geht es eigentlich.

gefragt 23 Jul '13, 21:34

Felix's gravatar image

Felix
1.3k525667
Akzeptiert-Rate: 47%

bearbeitet 21 Jun '16, 17:45

saputello's gravatar image

saputello
11.1k174365


Dann wäre das einfachste wohl das hier.

Code, hier editierbar zum Übersetzen:
\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw[yellow,line width=1cm] (0,0) circle[radius=2cm];
\end{tikzpicture}
\end{document}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Die Details liest Du am besten in der Anleitung von »PGF/TikZ« nach.


Ergebnis

Permanenter link

beantwortet 23 Jul '13, 22:00

Thorsten's gravatar image

Thorsten
1.6k325
Akzeptiert-Rate: 58%

bearbeitet 17 Aug '13, 11:12

cgnieder's gravatar image

cgnieder
22.1k253463

Clever! Einfach eine dicke Kreislinie als Kreisscheibe, da kam ich nicht drauf. Da ich keine Randline brauche, erfüllt das den Zweck am einfachsten.

(23 Jul '13, 22:14) Felix

Was ist aber, wenn doch eine Linie am Rand der Fläche gezeichnet werden soll? Es folgt eine Lösung für beliebige Pfade, die geschnitten werden sollen. (In diesem Fall sind es nur zwei Kreise, die einen gemeinsamen Mittelpunkt haben.

Das Resultat von Thorsten’s Beispiel kann relativ einfach erstellt werden:

Code, hier editierbar zum Übersetzen:
\begin{tikzpicture}[even odd rule]
\fill[yellow] (0,0) circle[radius=2.5]
circle[radius=1.5];
\end{tikzpicture}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Die even odd rule sorgt dafür, dass eine zweifache (und damit gerade) Überlagerung von Flächen bewirkt, dass sie eben nicht gefüllt wird. Die Option kann selbstverständlich auch nur am Pfad angegeben sein.

Die Standard-Regel für Füllungen ist die nonzero rule, die die „Richtung“ von den Pfaden beachtet. Im obigen Fall (circles werden immer im mathematischen Sinne positiv, also gegen den Uhrzeigersinn, gezeichnet) würde das nur eine gemeinsame Fläche ergeben. Zeichnet man den Kreis allerdings mit dem Uhrzeigersinn (also negativ), kann man auch die nonzero rule verwenden:

Code, hier editierbar zum Übersetzen:
\begin{tikzpicture}
\fill[yellow] (0,0) circle[radius=2.5]
(0:1.5) arc [radius=1.5, start angle=0, delta angle=-360];
\end{tikzpicture}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Zugegebenermaßen, in diesem einfachen Fall nicht sehr komfortabel, kann aber in anderen Fällen sicherlich hilfreich sein.
(Selbst das TikZ-Manual bezeichnet das Vorgehen der nonzero rule als „kompliziert“: „Sounds complicated? It is.“)

Beide TikZ-Pictures ergeben das linke Bild:

alt text       alt text

Fügt man dem Pfad noch ein nicht-none draw hinzu kann man auch die Ränder der Fläche zeichnen lassen. Mit dem Code

Code, hier editierbar zum Übersetzen:
\begin{tikzpicture}[ultra thick, even odd rule]
\path[fill=yellow,draw=blue] (0,0) circle[radius=2.5]
circle[radius=1.5];
\end{tikzpicture}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

lässt sich das zweite Bild von oben erstellen.

Möchte man die Begrenzungslinien allerdings in unterschiedlicher Farbe oder Art zeichnen, muss dies in einem separatem Pfad erfolgen. Damit man denselben Pfad nicht zweimal angeben muss (und somit Fehler und Aufwand bei Korrekturen verhindert), empfehle ich den Pfad mittels eines insert path-Styles zu speichern:

Code, hier editierbar zum Übersetzen:
\begin{tikzpicture}[ultra thick, even odd rule]
\path[fill=yellow] [saveuse path={aussenRing}{(0,0) circle[radius=2.5]}]
[saveuse path={innenRing} { circle[radius=1.5]}];
\draw[red] [aussenRing];
\draw[green] [innenRing];
\end{tikzpicture}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Man beachte, dass der saveuse path den benannten Style (hier aussenRing und innenRing) global definiert und somit womöglicherweise gleichnamige, gespeicherten Pfade aus einem höheren Scope überschreibt.

Referenz:

Gesamter Code

Code, hier editierbar zum Übersetzen:
\documentclass[tikz,convert=false]{standalone}
\tikzset{
saveuse path/.code 2 args={
\pgfkeysalso{#1/.estyle={insert path={#2}}}%
\global\expandafter\let\csname pgfk@\pgfkeyscurrentpath/.@cmd\expandafter\endcsname %
\csname pgfk@\pgfkeyscurrentpath/.@cmd\endcsname
\pgfkeysalso{#1}%
}
}
\begin{document}
\begin{tikzpicture}[ultra thick, even odd rule]
\path[fill=yellow] [saveuse path={aussenRing}{(0,0) circle[radius=2.5]}]
[saveuse path={innenRing} { circle[radius=1.5]}];
\draw[red] [aussenRing];
\draw[green] [innenRing];
\end{tikzpicture}
\begin{tikzpicture}[ultra thick, even odd rule]
\path[fill=yellow,draw=blue] (0,0) circle[radius=2.5]
circle[radius=1.5];
\end{tikzpicture}
\begin{tikzpicture}
\fill[yellow] (0,0) circle[radius=2.5]
(0:1.5) arc [radius=1.5, start angle=0, delta angle=-360];
\end{tikzpicture}
\end{document}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Ergebnis

alt text

Permanenter link

beantwortet 26 Jul '13, 04:32

Qrrbrbirlbel's gravatar image

Qrrbrbirlbel
2.9k3815
Akzeptiert-Rate: 53%

bearbeitet 17 Aug '13, 11:15

cgnieder's gravatar image

cgnieder
22.1k253463

Deine Antwort
[Vorschau ausblenden]

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

Frage-Themen:

×731
×20
×12

gestellte Frage: 23 Jul '13, 21:34

Frage wurde gesehen: 28,229 Mal

zuletzt geändert: 21 Jun '16, 17:45

Willkommen, erstes Mal hier? Schau mal unter FAQ!

×