Tikz:寻找布朗运动与圆的交点

Tikz:寻找布朗运动与圆的交点

我正在尝试绘制一个以圆圈为起点的二维布朗运动,现在想要标记该运动的第一次退出时间:

\documentclass[parskip]{scrartcl}
\usepackage{tikz}
\usetikzlibrary{calc,intersections,through,backgrounds}


\begin{document}
\newcommand{\Emmett}[5]{% points, advance, rand factor, options, end label, name
\draw[#4] (0,0)
\foreach \x in {1,...,#1} node(#6)
{   -- ++(rand*#2,rand*#3)
}
node[right] {#5};
}



\begin{tikzpicture}
\coordinate [label=left:$x$] (x) at (0,0);
\coordinate [] (y) at (1,1);

\node (D) [name path=D,draw,circle through=(y),label=left:$D$] at (x) {};
\Emmett{300}{0.2}{0.2}{red}{a}{b};

\end{tikzpicture}
\end{document}

我想,如果我能命名布朗运动,那么“交叉”就相当简单了,但我真的不知道该怎么做。(抱歉,我是 tikz 的初学者……)
任何帮助我都会很感激。

答案1

您还需要将其应用于name path布朗路径并找到两条路径之间的交点。

我可以使用 tikzpicture 中的完整命令来做到这一点,但不能使用宏。可能是因为宏中的名称在外面不公开,但我不确定。

\documentclass[tikz,border=2mm]{standalone}
\usetikzlibrary{calc,intersections,through,backgrounds}

\begin{document}

\begin{tikzpicture}
\coordinate [label=left:$x$] (x) at (0,0);
\coordinate [] (y) at (1,1);

\node (D) [name path=D,draw,circle through=(y),label=left:$D$] at (x) {};
%\Emmett{300}{0.2}{0.2}{red}{a}{b};
\draw[red, name path=emmet] (0,0) \foreach \x in {1,...,300}{--++(rand*0.2,rand*0.2)};

\fill[green, name intersections={of= emmet and D}] (intersection-1) circle (2pt);
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容