Hallo allerseits,

ich beschäftige mich gerade ein wenig mit Tikz und stoße zur Zeit auf ein Problem, auf das ich seit ein paar Tagen keine Lösung finde.

Und zwar geht es um das Beispiel weiter unten. Ich möchte die zwischen den Arc's einfärben. Dies wäre nun kein Problem wenn ich wüsste wie der Winkel von den Schnittpunkten aus ist und wie weit der Arc bis zum nächsten Punkt ist. Hat jemand vielleicht eine Möglichkeit parat wie man die drei Linien "auswählen" kann und diese einfärben?

Öffne in Overleaf
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{intersections}
\begin{document}
\begin{tikzpicture}
\pgfmathsetmacro{\radiusA}{1*90 / 120)}%
\draw [name path = Kreis1] (-4,0) arc (180:360:4 cm and \radiusA cm);
%Waagerecht

\pgfmathsetmacro{\radiusB}{4*cos(270-10)}%
\draw [name path = Kreis2] (0,4) arc (90:270:\radiusB cm and 4 cm);

\begin{scope}[rotate = -30]
\draw[name path = Kreis3] (0:4) arc (0:180:4 cm and 2.5 cm);
\end{scope}
\end{tikzpicture}
\end{document}

gefragt 11 Mär '18, 21:24

TikzProblem's gravatar image

TikzProblem
2112
Akzeptiert-Rate: 0%

bearbeitet 11 Mär '18, 22:02

stefan's gravatar image

stefan ♦♦
18.1k143048


Die fillbetween library von pgfplots kann sowas mithilfe von intersection segments:

Öffne in Overleaf
\documentclass{standalone}
\usepackage{tikz}
\usepackage{pgfplots}
\usepgfplotslibrary{fillbetween}

\usetikzlibrary{intersections}
\begin{document}
\pgfdeclarelayer{pre main}
\begin{tikzpicture}
\pgfsetlayers{pre main,main}

\pgfmathsetmacro{\radiusA}{1*90 / 120)}%
\draw [name path = Kreis1] (-4,0) arc (180:360:4 cm and \radiusA cm);
%Waagerecht

\pgfmathsetmacro{\radiusB}{4*cos(270-10)}%
\draw [name path = Kreis2] (0,4) arc (90:270:\radiusB cm and 4 cm);

\begin{scope}[rotate = -30]
\draw[name path = Kreis3] (0:4) arc (0:180:4 cm and 2.5 cm);
\end{scope}

% first: intersect 1 and 2, remember as temp path
\path [
    %->,red,orange, % <-- for experiments
    intersection segments={
        of=Kreis1 and Kreis2,
        sequence={L2[reverse] -- R1[reverse]},
    },
    name path=lowerleft,
];

\pgfonlayer{pre main}
% now: intersect intermediate result with Kreis3
\fill [
    %->,thick,
    orange,
    intersection segments={
        of=lowerleft and Kreis3,
        sequence={L2 -- R2[reverse]},
    },
];
\endpgfonlayer
\end{tikzpicture}
\end{document}

alt text

Kernidee ist intersection segments, das im manual von pgfplots http://pgfplots.sourceforge.net/pgfplots.pdf dokumentiert ist: es erlaubt das identifizieren und konkatenieren von schnitt segmenten zweier Kurven. Die werden dabei durchnumeriert und mit L (wie left) und R (wie right) dem "linken" bzw "rechten" Argument der Operation zugeordnet. L1 ist also das erste segment des linken arguments. Mit [reverse] kann man das argument umdrehen.

Die layers sind jetzt "nur" noch zubehoer, damit das gefuellte segment unter die Berandung gemalt wird.

Permanenter link

beantwortet 13 Mär '18, 21:21

cfeuersaenger's gravatar image

cfeuersaenger
3.7k23
Akzeptiert-Rate: 34%

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:

×1
×1

gestellte Frage: 11 Mär '18, 21:24

Frage wurde gesehen: 3,688 Mal

zuletzt geändert: 13 Mär '18, 21:21

verwandte Fragen