我想制作一个 Tikz 图像动画,其中线条的初始旋转角度具有一定的随机性(并且其初始 x 和 y 坐标也可能具有一定的随机性)。我知道 Tikz 提供了一个 rand 和一个 random 函数(参见示例代码),它们对静态图像非常有用。但是,在动画中,它们会为每一帧创建一个新的随机数。如何传递随机数,以便仅在最初对其进行评估?
\documentclass{standalone}
\usepackage{tikz}
\usepackage{animate}
\begin{document}
\begin{animateinline}[autoplay, loop]{24}
\multiframe{100}{ry=0.05+0.02}{
\begin{tikzpicture}
\foreach \x in {0,1,...,5}
{
\draw [thick, rotate around={random*10:(\x,0)}] ({\x},0) -- ++(0,\ry);
}
\path [use as bounding box] (0,0) rectangle (5,2.1);
\end{tikzpicture}}
\end{animateinline}
\end{document}
答案1
为了解决这个问题,可以使用以下方法设置种子:
\pgfmathsetseed{<integer>}
描述来自PGF/TikZ-手册:明确设置伪随机数生成器的种子。默认情况下,它被设置为 \time×\year 的值。