Zeichnen Sie eine zweite Linie in ein Diagramm, das eine zufällig generierte Linie widerspiegelt

Zeichnen Sie eine zweite Linie in ein Diagramm, das eine zufällig generierte Linie widerspiegelt

Ich habe ein Problem damit, einen Beispielpfad eines standardmäßigen Brownschen Bewegungsvorgangs zu zeichnen, der die Reflexionseigenschaft zeigt. An dem Punkt, an dem sich die rote gestrichelte Linie und die blaue Linie treffen, möchte ich die blaue Linie über die rote spiegeln. Da ich die blaue Linie zufällig generiere, habe ich keine Ahnung, wie ich das erreichen soll.

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning}
\begin{document}

\begin{figure}[h]
\centering
\begin{tikzpicture}
  \pgfmathsetseed{952}
  \draw[->] (-1,0) -- (6,0) node[right] {$t$};
  \draw[->] (0,-1) -- (0,4) node[above] {$B_t$};
  \draw[-, red, dashed] (0,0.75) -- (6,0.75);

  \draw[blue] (0,0)
  \foreach \x in {1,...,500}
  { -- ++(0.01,rand*-0.2)
  }
  node[right, black] {$(t,B_t)$}
\end{tikzpicture}
\end{figure}
\end{document}

der Code erzeugt das folgende Bild

Antwort1

Wenn Sie nur einen Teil des Pfads spiegeln möchten, ist meiner Meinung nach die Verwendung der Bibliotheken spath3der intersectionseinfachste Ansatz:

  1. Benennen/speichern Sie sowohl den blauen Wellenlinien- als auch den roten gestrichelten Pfad.
  2. Teilen Sie den verschnörkelten Pfad an der Kreuzung mit dem rot gestrichelten.
  3. Entfernen Sie das Bauteil vor der Kreuzung.
  4. Zeichnen Sie den verbleibenden Pfad mit der Reflexionstransformation.

Ich verwende die ext.transformations.mirrorBibliothek meinestikz-extPaketaber nutzen Sie gerne alle angebotenen Lösungen, umKönnen wir ein Teil in Tikz spiegeln („Achsensymmetrie“, „Reflexion“)?


Wir könnten auch denselben Seed festlegen und den blauen Pfad erneut zeichnen, dieses Mal jedoch abgeschnitten, sodass alles links von der Kreuzung abgeschnitten wird. Der Abschneidebereich muss jedoch sorgfältig ausgewählt werden.


Ich habeline join=rounddamit es nicht zwischen Gehrung und Abschrägung hin und her wechselt.

Sie werden feststellen, dass der gespiegelte Pfad über dem ursprünglichen Pfad liegt. Wenn dies nicht gewünscht ist, können wir die Zeichenreihenfolge ändern.

Code

\documentclass[tikz]{standalone}
%\documentclass{article}
%\usepackage{tikz}
\usetikzlibrary{
  arrows.meta,                % arrow tips
  ext.transformations.mirror, % reflect over axis
  intersections,              % find intersection between paths
  spath3}                     % split and transform paths
\begin{document}
\begin{tikzpicture}[line join=round]
\pgfmathsetseed{952}
\draw[->] (-1,0) -- (6,0) node[right] {$t$};
\draw[->] (0,-1) -- (0,4) node[above] {$B_t$};
\draw[spath/save=horiz, red, dashed] (0,0.75) -- (6,0.75);

\draw[blue, spath/save=squiggly] (0,0)
  foreach \x in {1,...,500}{ -- ++(0.01,rand*-0.2) }
  node[right, black] {$(t,B_t)$};

\draw[
  draw=blue!50,
  spath/.cd,
    split at intersections with={squiggly}{horiz},
    remove components={squiggly}{1},
    use={squiggly, transform={ymirror=0.75}}
] node[anchor=base west] {$(t,B'_t)$};
\end{tikzpicture}
\end{document}

Ausgabe

Bildbeschreibung hier eingeben

verwandte Informationen