在圖表上畫第二條線,反映隨機產生的線

在圖表上畫第二條線,反映隨機產生的線

我在繪製顯示反射屬性的標準布朗運動過程的範例路徑時遇到問題。在紅色虛線和藍線相交的地方,我想將藍線鏡像到紅線之上。由於我隨機生成藍線,我不知道如何實現這一點。

\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}

程式碼產生如下圖

答案1

如果您只想鏡像路徑的一部分,我相信使用函式庫spath3intersections最簡單的方法:

  1. 命名/儲存藍色波浪線和紅色虛線路徑。
  2. 在與紅色虛線的交叉點處分割彎曲的路徑。
  3. 移除相交之前的組件。
  4. 透過反射變換繪製剩餘路徑。

我正在使用ext.transformations.mirror我的圖書館tikz-ext包裹但請隨意使用提供的任何解決方案我們可以在 tikz 中鏡像一個零件(「軸對稱」、「反射」)嗎?


我們還可以設定相同的種子並再次繪製藍色路徑,但這次進行剪切,以便將交叉點剩餘的所有內容都剪切掉,但需要正確選擇剪切區域。


我已經設定了line join=round這樣它就不會在斜角和斜角之間翻轉。

您會發現反射路徑位於原始路徑之上。如果不需要,我們可以更改繪製順序。

程式碼

\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}

輸出

在此輸入影像描述

相關內容