# Tikz: draw brownian motion between two fixed points on a sphere

Hi I have the following problem. I have the picture:

generated by the code:

\documentclass[parskip]{scrartcl}
\usepackage[margin=15mm]{geometry}
\usepackage{tikz}

\begin{document}
\begin{tikzpicture}
\draw [black, |<->|] (0,0) -- (0,2.5);
\node [left] at (0,1.25) {$\frac{R_{\ell -1}}{\sqrt{2}}$};
\draw [black, |<->|] (0,0) -- (0,-1.25);
\node [left] at (0,-0.625) {$\frac{R_{\ell -1}}{2\sqrt{2}}$};
\draw [gray] (3,0) circle [radius = 2.5];
\draw [gray] (3,0) circle [radius = 1.25];
\draw [gray, fill] (3,0) circle [radius = 0.01];

\draw [black, fill] (2.5,-0.95) circle [radius = 0.03];
\draw [gray, thin] (2.47,-1) -- (2.1, -1.5);
\node [below] at (2.5,-1.35) {$\varrho_{\ell -1} (X_{\eta_j^{\ell -1}})$};

\draw [black, fill] (1.25,1.625) circle [radius = 0.03] node [right]  {$\varrho_{\ell -1} ( X_{\zeta_j^{\ell -1} , m(\eta_j^{\ell -1})} )$};
\end{tikzpicture}
\end{document}


What I want:

wherin I scribbled this georgous Brownian path by GIMP. I am new to tikz and have absolutely no clue how to generate points that fit my problem.

• Related: tex.stackexchange.com/q/59926/35864. When I needed the graph of a Brownian motion I simulated it in R and exported it using tikzDevice, but if there are too many points LaTeX may not like that and you might be better off exporting the BM to PDF and drawing on it with TikZ. – moewe Aug 22 '18 at 12:49

You seem to have some constraints on the random path. Therefore I'd suggest to draw the path you have in mind and decorate it with random steps. You can adjust the segment length and amplitude to your needs.

\documentclass[tikz,border=3.14mm]{standalone}
\usetikzlibrary{decorations.pathmorphing}
\begin{document}
\begin{tikzpicture}
\draw [black, |<->|] (0,0) -- (0,2.5);
\node [left] at (0,1.25) {$\frac{R_{\ell -1}}{\sqrt{2}}$};
\draw [black, |<->|] (0,0) -- (0,-1.25);
\node [left] at (0,-0.625) {$\frac{R_{\ell -1}}{2\sqrt{2}}$};
\draw [gray] (3,0) circle [radius = 2.5];
\draw [gray] (3,0) circle [radius = 1.25];
\draw [gray, fill] (3,0) circle [radius = 0.01];

\draw [black, fill] (2.5,-0.95) circle [radius = 0.03];
\draw [gray, thin] (2.47,-1) -- (2.1, -1.5);
\node [below] at (2.5,-1.35) {$\varrho_{\ell -1} (X_{\eta_j^{\ell -1}})$};

\draw [black, fill] (1.25,1.625) circle [radius = 0.03] node [right]  {$\varrho_{\ell -1} ( X_{\zeta_j^{\ell -1} , m(\eta_j^{\ell -1})} )$};
\draw[decorate,decoration={random steps,segment length=1pt,amplitude=2pt}] (2.5,-0.95) to[out=45,in=0] ++ (-0.1,0.4)
to[out=180,in=-90] ++(-0.6,0.3)
to[out=90,in=-90] ++(0.8,0.5)
to[out=90,in=-90] ++(-0.6,0.1)
to[out=90,in=-90] (1.25,1.625) ;
\end{tikzpicture}
\end{document}


EDIT: A trick to overcome the dimension too large problem for smaller segment lengths. Needless to say that you cannot go arbitrarily small that way.

\documentclass[tikz,border=3.14mm]{standalone}
\usetikzlibrary{decorations.pathmorphing}
\newsavebox\mypic
\sbox\mypic{
\begin{tikzpicture}[scale=4,transform shape]
\draw [black, |<->|] (0,0) -- (0,2.5);
\node [left] at (0,1.25) {$\frac{R_{\ell -1}}{\sqrt{2}}$};
\draw [black, |<->|] (0,0) -- (0,-1.25);
\node [left] at (0,-0.625) {$\frac{R_{\ell -1}}{2\sqrt{2}}$};
\draw [gray] (3,0) circle [radius = 2.5];
\draw [gray] (3,0) circle [radius = 1.25];
\draw [gray, fill] (3,0) circle [radius = 0.01];

\draw [black, fill] (2.5,-0.95) circle [radius = 0.03];
\draw [gray, thin] (2.47,-1) -- (2.1, -1.5);
\node [below] at (2.5,-1.35) {$\varrho_{\ell -1} (X_{\eta_j^{\ell -1}})$};

\draw [black, fill] (1.25,1.625) circle [radius = 0.03] node [right]  {$\varrho_{\ell -1} ( X_{\zeta_j^{\ell -1} , m(\eta_j^{\ell -1})} )$};
\draw[decorate,decoration={random steps,segment length=0.5pt,amplitude=2pt}] (2.5,-0.95) to[out=45,in=0] ++ (-0.1,0.4)
to[out=180,in=-90] ++(-0.6,0.3)
to[out=90,in=-90] ++(0.8,0.5)
to[out=90,in=-90] ++(-0.6,0.1)
to[out=90,in=-90] (1.25,1.625) ;
\end{tikzpicture}}
\begin{document}
\begin{tikzpicture}
\node[scale=0.25]{\usebox{\mypic}};
\end{tikzpicture}
\end{document}


ANOTHER EDIT: Couldn't resist applying Mark Wibrow's incredible trick here: nested decorations. That is, you can place a smaller step decoration on top of a decoration with larger segment length and/or amplitude, and you can even repeat that. Even though I verified that it works it is still hard for me that it does.

\documentclass[tikz,border=3.14mm]{standalone}
\usetikzlibrary{decorations.pathmorphing}
\newsavebox\mypic
\sbox\mypic{
\begin{tikzpicture}[scale=4,transform shape]
\draw [black, |<->|] (0,0) -- (0,2.5);
\node [left] at (0,1.25) {$\frac{R_{\ell -1}}{\sqrt{2}}$};
\draw [black, |<->|] (0,0) -- (0,-1.25);
\node [left] at (0,-0.625) {$\frac{R_{\ell -1}}{2\sqrt{2}}$};
\draw [gray] (3,0) circle [radius = 2.5];
\draw [gray] (3,0) circle [radius = 1.25];
\draw [gray, fill] (3,0) circle [radius = 0.01];

\draw [black, fill] (2.5,-0.95) circle [radius = 0.03];
\draw [gray, thin] (2.47,-1) -- (2.1, -1.5);
\node [below] at (2.5,-1.35) {$\varrho_{\ell -1} (X_{\eta_j^{\ell -1}})$};

\draw [black, fill] (1.25,1.625) circle [radius = 0.03] node [right]  {$\varrho_{\ell -1} ( X_{\zeta_j^{\ell -1} , m(\eta_j^{\ell -1})} )$};
\draw
{decorate[decoration={random steps, segment length=0.5,amplitude=0.5}]
{decorate[decoration={random steps, segment length=1,amplitude=1}]
{decorate[decoration={random steps, segment length=8,amplitude=8}]
{ (2.5,-0.95) to[out=45,in=0] ++ (-0.1,0.4)
to[out=180,in=-90] ++(-0.6,0.3)
to[out=90,in=-90] ++(0.8,0.5)
to[out=90,in=-90] ++(-0.6,0.1)
to[out=90,in=-90] (1.25,1.625) }}}};

\end{tikzpicture}}
\begin{document}
\begin{tikzpicture}
\node[scale=0.25]{\usebox{\mypic}};
\end{tikzpicture}
\end{document}


• This is fits well to my problem. I was focused on generating a realistic simulation, but since this picture is just a sketch anyway, this is a good compromise. I have added a few more points. Unfortunately, texmaker came up with the "dimensions too large" whenever I scaled the segment length to less than 1. But with less amplitude it is still pretty enough. Thanks! – Falrach Aug 22 '18 at 17:06
• @Falrach Yes, this decoration sometimes suffers from that problem. One common trick is to add scale=2 (say) to the options of the tikzpicture and then rescale the whole thing back when including it. – user121799 Aug 22 '18 at 17:08
• I tried this approach. Seems to work, but I have to deal with the not scaling linewidth and so on then. I think I will be fine with 1pt. – Falrach Aug 22 '18 at 17:31
• @Falrach Just in case you change your mind: I added an explicit trick. (I put the savebox in the tikzpicture because I use standalone and it crops the bounding box for that environment in the current setting. In an ordinary document one can also use \scalebox.) – user121799 Aug 22 '18 at 19:06