Нарисуйте вторую линию на графике, которая является отражением случайно сгенерированной линии.

Нарисуйте вторую линию на графике, которая является отражением случайно сгенерированной линии.

У меня возникла проблема с рисованием образца пути стандартного процесса броуновского движения, показывающего свойство отражения. В точке, где встречаются красная пунктирная линия и синяя линия, я хотел бы зеркально отразить синюю линию над красной. Поскольку я генерирую синюю линию случайным образом, я понятия не имею, как этого добиться.

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

Выход

введите описание изображения здесь

Связанный контент