Moin zusammen, ich will einen Kreis haben, worauf z.B. 8 knoten in gleicher Distanz (jeweils 45 grad) bestimmt wird und danach 8 Kreisbogen, deren Mittelpunkt jeweiligen knoten ist und zwei beide Enden auf dem Rand des ersten Kreises stehen. Mein Kreis: Open in Online-Editor
\documentclass{article} \usepackage{tikz} \begin{document} \begin{tikzpicture}[node distance=5em,every node/.style={circle,draw}] \draw[solid] (0,0) circle (102 pt); \end{tikzpicture} \end{document} was ich brauche, soll so aussehen:
herzlichen Dank im Voraus! Viele Grüße gefragt 25 Apr '16, 13:01 vague_creature |
Das macht man am besten mit einem Clipping-Pfad. Der Clipping-Pfad schneidet nämlich alles weg, was außerhalb liegt. Da dies für den Rest des aktuellen Open in Online-Editor
\path[preaction={draw=white},clip] (0,0) circle (4); \foreach \angle in {0,45,...,325} \draw[white] (\angle:4) circle (1); Man sieht, dass ich nach dem Clipping-Pfad einfach ganze Kreise zeichne, die über den Kreis hinausragen. Alles was übersteht wird aber abgeschnitten. Open in Online-Editor
\documentclass{standalone} \usepackage{tikz} \usetikzlibrary{arrows.meta} \definecolor{bottom}{HTML}{76769A} \definecolor{top}{HTML}{39396B} \begin{document} \begin{tikzpicture}[>={Stealth[round]}] % Backkground \shade[top color=top,bottom color=bottom] (-4.5,-4.5) rectangle (4.5,4.5); % Plus marks \foreach \angle in {0,45,...,325} \draw[white] plot[mark=+] coordinates { (\angle:4) }; % Coordinate system \draw[white] (-.4,-.4) grid[step=.4] (.4,.4); \draw[->,yellow,thick] (0,0) -- (1,0) node[font=\tiny\sffamily,above] {H}; \draw[->,yellow,thick] (0,0) -- (0,1) node[font=\tiny\sffamily,left] {V}; % Circle (clipping path) \path[preaction={draw=white},clip] (0,0) circle (4); % Inner circles \foreach \angle in {0,45,...,325} \draw[white] (\angle:4) circle (1); \end{tikzpicture} \end{document} Um die Bereiche der inneren Kreis frei zu lassen kann man den äußeren Kreis gestrichelt zeichnen. Die Werte für das Pattern können sicher berechnet werden, hier sind sie geraten. Open in Online-Editor
\documentclass{standalone} \usepackage{tikz} \usetikzlibrary{arrows.meta,intersections} \definecolor{bottom}{HTML}{76769A} \definecolor{top}{HTML}{39396B} \begin{document} \begin{tikzpicture}[>={Stealth[round]}] % Backkground \shade[top color=top,bottom color=bottom] (-4.5,-4.5) rectangle (4.5,4.5); % Plus marks \foreach \angle in {0,45,...,325} \draw[white] plot[mark=+] coordinates { (\angle:4) }; % Coordinate system \draw[white] (-.4,-.4) grid[step=.4] (.4,.4); \draw[->,yellow,thick] (0,0) -- (1,0) node[font=\tiny\sffamily,above] {H}; \draw[->,yellow,thick] (0,0) -- (0,1) node[font=\tiny\sffamily,left] {V}; % Circle (clipping path) \path[preaction={ draw=white, dash pattern=on 1.15cm off 1.99cm, dash phase=-1cm },clip] (0,0) circle (4); % Inner circles \foreach \angle in {0,45,...,325} \draw[white] (\angle:4) circle (1); \end{tikzpicture} \end{document} beantwortet 25 Apr '16, 14:00 Henri das war geil! vielen Dank! nur noch eine Frage! wie kann ich die Teilen vom großen Kreis unter den kleinen Kreisen löschen und letztendlich irgendwas wie ein Zahnrad haben?
(25 Apr '16, 14:21)
vague_creature
@vague_creature Das ist wiederum überhaupt nicht trivial. Es gibt nämlich kein »reverse clipping«. Das heißt man muss alle Schnittpunkte von Hand ausrechnen und dann entsprechende Kreissegmente dazwischen zeichnen. Alternativ kann man bei einfarbigem Hintergrund die inneren Kreise mit der Hintergrundfrage füllen.
(25 Apr '16, 14:31)
Henri
1
@vague_creature: Das ist nun eigentlich eine ganz andere Frage als die ursprüngliche. Genauer gesagt ist das ein XY-Problem. Du hast also oben ein Stück Deiner Lösungsidee gefragt, statt das eigentlichen Problem – wie man ein Zahnrad zeichnet – darzustellen. BTW: Die Schnittpunkte der Kreise sollten sich in der Schleife über die kleinen Kreise ermitteln lassen.
(25 Apr '16, 14:58)
saputello
|
Wenn ich die Frage und die Kommentare richtig verstanden habe, dann sollen aus einem großen Kreis eine gewisse Anzahl kleinere Teilkreise ausgeschnitten werden, deren Mittelpunkte gleichmäßig auf den Rand des großen Kreises verteilt sind. Wenn eine solche Zeichnung mehrfach mit unterschiedlichen Radien und Anzahlen der kleinen Kreise benötigt wird, bietet es sich an ein Code: Open in Online-Editor
\documentclass[margin=5pt]{standalone} \usepackage{tikz} \usetikzlibrary{arrows.meta} \definecolor{bottom}{HTML}{76769A} \definecolor{top}{HTML}{39396B} \tikzset{ pics/zahnrad/.style n args={3}{code={ % Plus marks \foreach[evaluate=\i as \angle using {360/#3*(\i-1)}] \i in {1,...,#3} \path[pic actions,fill=none] plot[mark=+] coordinates { (\angle:#1) }; \begin{scope}[overlay] % reverse clipping der kleinen Kreise \foreach[evaluate=\i as \angle using {360/#3*(\i-1)}] \i in {1,...,#3} \path[clip] (\angle:#1)circle[radius=#2] ([shift={(-\pgflinewidth,-\pgflinewidth)}]-#1,-#1) rectangle ([shift={(\pgflinewidth,\pgflinewidth)}]#1,#1) ; % Reststücke großer Kreis \path[pic actions](0,0)circle[radius=#1]; \end{scope} % Kleine Teilkreise \path[ path picture={ \foreach[evaluate=\i as \angle using {360/#3*(\i-1)}] \i in {1,...,#3} \path[pic actions,fill=none] (\angle:#1)circle[radius=#2]; }](0,0)circle[radius=#1]; }}, pics/koordinatensystem/.style n args={3}{code={ \path[draw,gitter](-#1,-#1)grid[step=#1](#1,#1); \path[pic actions](0,0)--(2.5*#1,0)node[draw=none,fill=none,above]{#2}; \path[pic actions](0,0)--(0,2.5*#1)node[draw=none,fill=none,left]{#3}; }}, gitter/.style={thin,-,gridoption}, gridoption/.style={gitter/.append style={#1}} } \begin{document} \begin{tikzpicture}[>={Stealth[round]},very thick] % Hintergrund \shade[top color=top,bottom color=bottom] (-10,-5) rectangle (10,5); \foreach[count=\i,evaluate=\anzahl as \Anzahl using int(\anzahl+\i)] \anzahl in {4,8,10,16} \path ({-12.5+5*\i},2.5) pic[draw=white]{zahnrad={2}{.2}{\anzahl}} pic[draw,yellow,very thick,->,font=\bfseries\tiny,gridoption={white}] {koordinatensystem={.2}{H}{V}} ({-12.5+5*\i},-2.5) pic[draw=white,fill=green!50!blue]{zahnrad={2}{.2}{\Anzahl}} pic[draw,orange,->,font=\bfseries\tiny,gridoption={white,dotted,thick}] {koordinatensystem={.2}{H}{V}} ; \end{tikzpicture} \end{document} Dabei wird zum Zeichnen der kleinen Teilkreise Open in Online-Editor
\documentclass[margin=5pt]{standalone} \usepackage{tikz} \begin{document} \begin{tikzpicture} \draw[help lines](-2,-2)grid[step=.5](2,2); \draw [path picture={ \fill[orange!30,draw=green!50!blue,very thick] (45:1)circle[radius=.5]; }] (0,0)circle[radius=1]; \end{tikzpicture} \end{document} Und dann ist hier außerdem ein Beispiel, wie die kleinen Teilkreise aus dem großen Kreis ausgeschnitten werden können: Open in Online-Editor
\documentclass[margin=5pt]{standalone} \usepackage{tikz} \begin{document} \begin{tikzpicture} \draw[help lines](-2,-2)grid[step=.5](2,2); \begin{scope} \path[clip] (45:1)circle[radius=.5] (-2,-2)rectangle(2,2) ; \path[draw,fill=orange!30] (0,0)circle[radius=1]; \end{scope} \end{tikzpicture} \end{document} Open in Online-Editor
\documentclass[margin=5pt]{standalone} \usepackage{tikz} \begin{document} \begin{tikzpicture} \draw[help lines](-2,-2)grid[step=.5](2,2); \begin{scope} \path[clip] (45:1)circle[radius=.5] (-2,-2)rectangle(2,2) ; \path[draw,fill=orange!30] (0,0)circle[radius=1]; \end{scope} \end{tikzpicture} \end{document} beantwortet 25 Apr '16, 23:47 esdd +1:
(26 Apr '16, 09:05)
Henri
|