我正在尝试绘制一个以圆圈为起点的二维布朗运动,现在想要标记该运动的第一次退出时间:
\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}