ランダムに生成された線を反映した2本目の線をグラフ上に描画します。

ランダムに生成された線を反映した2本目の線をグラフ上に描画します。

反射特性を示す標準的なブラウン運動プロセスのサンプル パスを描画する際に問題が発生しています。赤い破線と青い線が交わるポイントで、青い線を赤い線の上にミラーリングしたいと思います。青い線はランダムに生成するため、これを実現する方法がわかりません。

\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

パスの一部だけをミラーリングしたい場合は、ライブラリを使用するのがspath3最もintersections簡単な方法だと思います。

  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}

出力

ここに画像の説明を入力してください

関連情報