Wie erstellt man in TikZ solch ein Muster, insbesondere mit den Überdeckungen?

alt text

Open in Online-Editor
\documentclass{article}
\usepackage[ngerman]{babel}
\usepackage{tikz}
\usepackage{xstring}

% Befehlsaufbau: \knotenbild[LINIENFARBE,FLÄCHENFARBE]{GRÖẞE}{LINIENDICKE}{FLÄCHENBREITE}
\newcommand{\knotenbild}[4][black,white]{\begin{tikzpicture}[scale = #2]
  \def\liniendicke{#3}
  \def\breite{#4}
  %
  \StrCut{#1}{,}\linienfarbe\flaechenfarbe
  %
  \tikzset{
    unten/.style = {
      line width = \liniendicke, \linienfarbe, 
      double distance = \breite, double = \flaechenfarbe
    },
    oben/.style = {
      line width = 2*\liniendicke+\breite, \linienfarbe,
      postaction = {draw = \flaechenfarbe, line width = \breite, shorten <= -1pt, shorten >= -1pt}
    }
  }
  %
  \draw[unten] (0, 0) circle [radius=1];
\end{tikzpicture}}

\begin{document}
\center
\knotenbild{2}{.5mm}{2mm}
\end{document}

gefragt 08 Dez '15, 09:12

rix's gravatar image

rix
3452419
Akzeptiert: 93%

bearbeitet 09 Dez '15, 02:00

Schöne Frage! Hm,

  • verwendete Pfade kann man als "double" zeichnen
  • oder selber doppelt: einmal dick Schwarz, dann dünner mit Weiß auf dem gleichen Pfad
  • die Reihenfolge bestimmt die Überlappung
  • oder Layer verwenden für vorne / hinten
  • oder decorations (preaction, postaction) - kann man auch verschachteln

Vielleicht mache einen Start mit einem Minimalbeispiel, was die Figure in einfacher Weise erstmal zeichnet und poste das hier. Dann kann man das fortsetzen.

(08 Dez '15, 16:23) stefan ♦♦

gut, ich scheitere schon daran, diese Bögen hinzubekommen xD ich habe jetzt einfach so weit vorgemacht, wie ich konnte.

(09 Dez '15, 02:02) rix

Ich hab zwar keine Erfahrung damit, könnte mir aber vorstellen, dass die knots library von Andrew Stacy vieleicht hilfreich ist.

(09 Dez '15, 04:37) Clemens

danke für die Empfehlung. Dennoch würde ich gerne wissen, wie man die Bogenstruktur zeichnet, die ja an sich nur aus drei verbundenen halbkreisähnlichen Linien besteht (stark gekrümmtes Dreieck sozusagen).

(10 Dez '15, 04:42) rix

alt text

Code:

Open in Online-Editor
  \documentclass[margin=5pt]{standalone}
  \usepackage{tikz}
  \begin{document}
  \begin{tikzpicture}[
      kreis/.style={
        purple,
        line width=1mm,
        double=gray!20,
        double distance=4mm
      },
      kurve/.style={kreis,
        looseness=1.4
      }
    ]
    \newcommand\aR{4cm}
    \newcommand\iR{2.5cm}
    \newcommand\winkel{10}

  % Koordinaten in der Mitte und den Ecken
    \path
      (0,0) coordinate(M)
      foreach \i in {1,2,3}
       {(M)+({-30+\i*120}:\aR) coordinate (A\i)};
  % Kreis zeichnen
    \draw[kreis](M) circle [radius=\iR];
  % Bounding Box begrenzen
    \draw[kurve,opacity=0]
      ([yshift=\pgflinewidth]A1)--([xshift=-\pgflinewidth]A2)--([xshift=\pgflinewidth]A3)--cycle;
    \clip(current bounding box.north west)rectangle(current bounding box.south east);
  % Kurve zeichnen
    \draw[kurve] (A3) 
      foreach \i in {1,2,3} {to [out = {90-\winkel+\i*120}, in = {90+\winkel + \i*120}] (A\i)}
      --cycle;
  % Selbstüberlappung der Kurve korrigieren
    \begin{scope}
      \clip (M) rectangle (-\iR,\iR);
      \draw[kurve](A3) to [out={210-\winkel}, in={210+\winkel}] (A1);
    \end{scope}
    \begin{scope}
      \clip (M)+(-\iR,0) rectangle +(\iR,-\iR);
      \draw[kurve](A1) to [out={330-\winkel}, in={330+\winkel}] (A2);
    \end{scope}
    \begin{scope}
      \clip (M) rectangle (\iR,\iR);
      \draw[kurve](A2) to [out={90-\winkel}, in={90+\winkel}] (A3);
    \end{scope}
  %% Überlappung Kreis und Kurve korrigieren
    \begin{scope}
      \clip foreach \i in {1,2,3}
        {(M)--({-90+\i*120}:\aR)--(A\i)--cycle};
      \draw[kreis] (M) circle [radius=\iR];
    \end{scope}
  \end{tikzpicture}
  \end{document}

Die Parameter lassen sich in gewissen Grenzen variieren.

Permanenter link

beantwortet 11 Dez '15, 09:38

esdd's gravatar image

esdd
14.2k53251

bearbeitet 11 Dez '15, 09:55

Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

Per RSS:

Antworten

Antworten und Kommentare

Aktuelle Buch-Infos

LaTeX Cookbook

LaTeX Beginners Guide

Limitierter Rabatt ebook
50% Coupon code tDRet6Y

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üge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×492
×2
×1
×1
×1

Frage gestellt: 08 Dez '15, 09:12

Frage wurde angeschaut: 1,226 Mal

Zuletzt aktualisiert: 11 Dez '15, 09:55