TikZ 随机混乱坐标

TikZ 随机混乱坐标

我试图在极坐标系中绘制随机点,并用线向下延伸至一个圆。这绝对简单,但结果并不如预期。Ti 提供的随机函数之间似乎存在干扰Z 和极坐标系统。

在 XeLaTeX 下,以下 MWE:

\documentclass{standalone}
\usepackage{tikz}

\begin{document}
\begin{tikzpicture}
\draw (0,0) circle (1);
\foreach \myangle in {0, 20, ..., 340} {
    \draw (\myangle:{random(0.5, 2)}) -- (\myangle:1);
    };
\end{tikzpicture}
\quad
\begin{tikzpicture}
\draw (0,0) circle (1);
\foreach \myangle in {0, 20, ..., 340} {
    \draw (\myangle:{2*rnd + 0.5}) -- (\myangle:1);
    };
\end{tikzpicture}
\end{document}

生成:

在此处输入图片描述

答案1

我承认这有点令人困惑。这里有两个问题:

  • 整数与非整数;
  • 扩张。

至于第一个问题,random当与两个参数一起使用时,期望这些参数是整数。然后它返回一个整数。如果不使用参数,它将返回和之间的实数01这在 pgfmanual 的第 1008-1009 页中有详细描述。一旦您向其输入非整数,它就不知道该做什么,只会返回非整数,即0.5在本例中。此问题与无关xelatex,但pdflatex会产生相同的输出。我相信您正在寻找{1.5*random() + 0.5}(或{1.5*rnd + 0.5})。

然后还有扩展问题。我相信我在某个地方找到过这个问题的答案,但不记得在哪里了。基本上,你必须强制 TiZ 来固定随机数而不是让它随机。

以下代码解决了这些问题。

\documentclass{standalone}
\usepackage{tikz}

\begin{document}
\begin{tikzpicture}
\draw (0,0) circle (1);
\foreach \myangle in {0, 20, ..., 340} {
    \pgfmathsetmacro{\myrnd}{1.5*random() + 0.5}
    \edef\temp{\noexpand\draw (\myangle:\myrnd) -- (\myangle:1);}
    \temp
    };
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容