4
1

Hallo zusammen, ich möchte in meiner Bachelorarbeit eine Zeichnung haben, in der zwei Punkte Wellen aussenden. Diese Wellen sollen Kreise sein. Die Kreise werden sich bei zunehmendem Radius schneiden. Soweit alles kein Problem, doch ich würde gerne dass ich bestimmte Schnittpunkte der Kreise deklariere, durch die eine Kurve verläuft. Dazu habe ich momentan von jedem Punkt aus sieben Kreise mit steigendem Radius(immer +1) gezeichnet. Ich würde gerne von P1 den zweiten Kreise geschnitten vom P2 fünften Kreis, dann P1 dritter Kreis mit dem P2 sechsten Kreis usw. Ist sowas ohne weiteres realisierbar? P.S. ich hatte arc mit den Winkeln verwendet, weil ich noch nicht sicher bin ob und wie die Kreise am Rand abgeschnitten werden. Hier mein Quelltext soweit:

Open in Online-Editor
\documentclass[12pt,a4paper,oneside]{book}
\usepackage{pst-all}
\usepackage{tikz}
\usetikzlibrary{arrows}
\usetikzlibrary{shapes}
\usetikzlibrary{decorations.pathmorphing}
\usetikzlibrary{decorations.pathreplacing}
\usetikzlibrary{decorations.shapes}
\usetikzlibrary{decorations.text}
\begin{document}
\begin{figure}
     \begin{tikzpicture}
      \color{blue}
      \fill(0.8, 8.2) -- (0.8, 7.8) -- (1.2, 7.8) -- (1.2,8.2) -- cycle;
    \draw[line width=1.5pt](1, 7) arc (-90:270:1);
    \draw[line width=1.5pt](1, 6) arc (-90:270:2);
    \draw[line width=1.5pt](1, 5) arc (-90:270:3);
    \draw[line width=1.5pt](1, 4) arc (-90:270:4);
    \draw[line width=1.5pt](1, 3) arc (-90:270:5);
    \draw[line width=1.5pt](1, 2) arc (-90:270:6);
    \color{green}
    \fill(7.8, 8.2) -- (7.8, 7.8) -- (8.2, 7.8) -- (8.2,8.2) -- cycle;
    \draw[line width=1.5pt](8, 9) arc (90:450:1);
    \draw[line width=1.5pt](8, 10) arc (90:450:2);
    \draw[line width=1.5pt](8, 11) arc (90:450:3);
    \draw[line width=1.5pt](8, 12) arc (90:450:4);
    \draw[line width=1.5pt](8, 13) arc (90:450:5);
    \draw[line width=1.5pt](8, 14) arc (90:450:6);
    \draw[line width=1.5pt](8, 15) arc (90:450:7);
    \color{red}
    %\fill(2.5, 8.5) -- (2.5, 7.5) -- (3.5, 7.5) -- (3.5,8.5) -- cycle;
    \end{tikzpicture}
    \caption{Aufbau der Hyperbelnavigation}
\label{Abbildung Hyperbel}
\end{figure}
\end{document}

gefragt 11 Dez '15, 13:49

racoon9's gravatar image

racoon9
7737
Akzeptiert-Rate: 0%

bearbeitet 11 Dez '15, 22:19


Suchst Du etwas wie:

Zeichnung

Code:

Open in Online-Editor
\documentclass[12pt,a4paper,oneside]{book}
\usepackage{tikz}
\usetikzlibrary{intersections}
\begin{document}
\begin{figure}
  \begin{tikzpicture}[
      p1/.style           = { color = blue },
      p2/.style           = { color = green },
      punkt/.style        = { fill, inner sep = 2mm },
      quelle/.style       = { punkt },
      schnittpunkt/.style = { punkt, red },
      kreis/.style        = { line width = 1.5pt }
    ]
    % Quellen festlegen
    \node[p1,quelle](p1) at (1,8) {};
    \node[p2,quelle](p2) at (8,8) {};
    % Beschneiden, d.h . Beschränkung des Zeichenbereiches
    \clip ([shift={(-3,-8)}]p1) rectangle ([shift={(3,8)}]p2);
    % Zeichnen der Kreise
    \foreach \i in {1,2}
      {\foreach \r in {1, ...,12}
        \draw[p\i,kreis,name path global=p\i-k\r](p\i) circle [radius=\r];}

    % Markieren ausgewählter Schnittpunkte
    \foreach \kreisA/\kreisB in
      { p1-k2/p2-k5, p1-k3/p2-k6,  p1-k4/p2-k7, p1-k5/p2-k8,
        p1-k6/p2-k9, p1-k7/p2-k10, p1-k8/p2-k11} {
        \path [name intersections = {of = {\kreisA} and {\kreisB}, total = \t},
               nodes=schnittpunkt]
          \foreach \s in {1,...,\t} { (intersection-\s) node {}}; }
  \end{tikzpicture}
  \caption{Aufbau der Hyperbelnavigation}
  \label{Abbildung Hyperbel}
\end{figure}
\end{document}

Wenn die zu markierenden Schnittpunkte wie in obigem Beispiel noch einer Systematik unterliegen, lässt sich der Code noch etwas weiter verkürzen:

Open in Online-Editor
% Markieren ausgewählter Schnittpunkte
\foreach[count=\ii from 5] \i in {2,...,8} {
  \path [name intersections = {of = {p1-k\i} and {p2-k\ii}, total = \t}]
  \foreach \s in {1,...,\t} { (intersection-\s) node [schnittpunkt] {}};
}

Update

Wenn die markierten Punkte noch verbunden werden sollen, dann muss man die Nodes eindeutig benennen. Das lässt sich in der Schleife mit erledigen. Ich würde dafür die Laufvariable \i und die Variable für die Schnittpunktnummer \s wählen und die Nodes mit \i-\s benennen:

Open in Online-Editor
% Markieren ausgewählter Schnittpunkte
\foreach[count=\ii from 5] \i in {2,...,8} {
  \path [name intersections = {of = {p1-k\i} and {p2-k\ii}, total = \t}]
  \foreach \s in {1,...,\t} { (intersection-\s) node [schnittpunkt] (\i-\s) {}};

Damit kann man die Nodes hinterher wieder in einer Schleife verbinden:

Open in Online-Editor
% Markierungen verbinden
\foreach \s in {1,2}{
  \draw[very thin] (2-1)--(3-\s);
  \foreach[count=\j from 3] \i in {4,...,8}
  \draw[very thin] (\j-\s)--(\i-\s);
 }

alt text

Code:

Open in Online-Editor
\documentclass[12pt,a4paper,oneside]{book}
\usepackage{tikz}
\usetikzlibrary{intersections}
\begin{document}
\begin{figure}
  \begin{tikzpicture}[
      p1/.style           = { color = blue },
      p2/.style           = { color = green },
      punkt/.style        = { fill, inner sep = 2mm },
      quelle/.style       = { punkt },
      schnittpunkt/.style = { punkt, red },
      kreis/.style        = { line width = 1.5pt },
      verbindung/.style   = { very thin }
    ]
    % Quellen festlegen
    \node[p1,quelle](p1) at (1,8) {};
    \node[p2,quelle](p2) at (8,8) {};
    % Beschneiden, d.h . Beschränkung des Zeichenbereiches
    \clip ([shift={(-3,-8)}]p1) rectangle ([shift={(3,8)}]p2);
    % Zeichnen der Kreise
    \foreach \i in {1,2}
      {\foreach \r in {1, ...,12}
        \draw[p\i,kreis,name path global=p\i-k\r](p\i) circle [radius=\r];}

    % Markieren ausgewählter Schnittpunkte
    \foreach[count=\ii from 5] \i in {2,...,8} {
      \path [name intersections = {of = {p1-k\i} and {p2-k\ii}, total = \t}]
      \foreach \s in {1,...,\t} { (intersection-\s) node [schnittpunkt] (\i-\s) {}};
    }
    % Markierungen verbinden
    \foreach \s in {1,2}{
      \draw[verbindung] (2-1)--(3-\s);
      \foreach[count=\j from 3] \i in {4,...,8}
      \draw[verbindung] (\j-\s)--(\i-\s);
     }
  \end{tikzpicture}
  \caption{Aufbau der Hyperbelnavigation}
  \label{Abbildung Hyperbel}
\end{figure}
\end{document}
Permanenter link

beantwortet 13 Dez '15, 03:18

esdd's gravatar image

esdd
17.7k254256
Akzeptiert-Rate: 62%

bearbeitet 13 Dez '15, 23:05

1

Sehr schön! Ich habe leicht modifiziert und eine for-Schleife für die berechneten Schnittpunkte ergänzt.

(13 Dez '15, 13:51) stefan ♦♦

Danke! Auf die Klammern um die Koordinatenangaben für of bin ich einfach nicht gekommen. Ich habe jetzt noch die Schleife ergänzt, die ich eigentlich haben wollte, aber Deine im MWE stehen lassen, weil sie auch für eine unregelmäßige Auswahl geeignet ist.

(13 Dez '15, 14:12) esdd

Ja, das Parsen des "and" benötigt die Leerzeichen um "and", was die Makros verschlucken würden. Die Klammern verhindern das.

(13 Dez '15, 14:42) stefan ♦♦

Wow genau sowas habe ich gesucht. Danke tausend mal!!! Wäre es jetzt vielleicht noch möglich die Punkte mit einer dünnen Linie zu verbinden?

(13 Dez '15, 16:36) racoon9

@racoon9 Ich habe Deine "Antwort" in einen Kommentar umgewandelt. Du kannst gern stets direkt die Frage editieren und Zusätze einfügen. Hier sind Antworten stets "echte" Antworten, keine Gespräche oder Rückfragen oder Zusatzinfos, sondern Lösungen. Editieren der Frage ist jederzeit möglich und erwünscht. Das verbessert die Übersicht erheblich für die Archivierung der Lösungen. Ungewohnt und anders als in Webforen, doch innovativ und nutzbarer. Bemerkungen gern wie hier als Kommentare.

(13 Dez '15, 17:57) stefan ♦♦

@racoon9 Stelle die Folgefrage doch bitte als neue, separate Frage. Das vereinfacht das Archivieren der Lösungen. Gern mit Link hierher, damit man den Kontext sieht.

(13 Dez '15, 17:58) stefan ♦♦

@racoon9 Ich habe jetzt noch eine Möglichkeit für die Verbindung der Linien ergänzt. Wenn man Deine Frage genau liest, hast Du dort ja sogar schon nach der Verbindung gefragt.

(13 Dez '15, 23:09) esdd

Vielen lieben Dank! gibt es irgendwo ein vernünftiges Tutorial oder eine Dokumentation die so etwas lehrt? Ich habe bisher nur die simpelsten Dokumentationen gesehen und dann wieder total spezifische, etwas dazwischen habe ich nicht gefunden. Ich würde dann das Thema abschließen wenn ich wüsste wie das geht :)

(14 Dez '15, 15:45) racoon9
1

@racoon9 Ich verwende hauptsächlich das pgfmanual, also die Dokumentation zu TikZ/pgf. Ansonsten lernt man natürlich auch immer das ein oder andere von Leuten hier oder anderswo. Und vorallem gibt es bei TikZ oft ganz unterschiedliche Wege, die zum Ziel führen können.

(15 Dez '15, 21:28) esdd

@racoon9: Als jemand, der noch weit davon entfernt ist, sich damit auszukennen: Am meisten tikz, pgf, pgfplots etc. habe ich bisher gelernt, indem ich mir – wenn es meine Zeit erlaubt hat – Antworten hier sehr gründlich angeschaut habe. Außerdem versuche ich mich hin und wieder mit Hilfe der Anleitung an einer Lösung zu gestellten Fragen, die ich in der Regel aber noch für zu schlecht halte, um sie als Antwort anzubieten. Es wird aber langsam besser.

(21 Dez '15, 11:37) saputello
Ergebnis 5 von 10 show 5 more comments
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:

×728
×6

gestellte Frage: 11 Dez '15, 13:49

Frage wurde gesehen: 7,613 Mal

zuletzt geändert: 21 Dez '15, 11:38