![在 tikz 图中提前定义坐标](https://linux22.com/image/244550/%E5%9C%A8%20tikz%20%E5%9B%BE%E4%B8%AD%E6%8F%90%E5%89%8D%E5%AE%9A%E4%B9%89%E5%9D%90%E6%A0%87.png)
我正在尝试创建一个具有一定随机性的元素圈。我想预定义坐标以创建复杂元素。我正在使用这个:
\newcommand{\elm}[2]{
\shade [ball color=red] (#1,#2) circle (4 pt);
}
和这个:
\begin{tikzpicture}
\foreach \ang in {0,90,...,270}{
\pgfmathsetmacro{\r}{200pt}
\pgfmathsetmacro{\dx}{rand*2}
\pgfmathsetmacro{\dy}{rand*2}
\elm{{\r*cos(\ang) + \dx},{\r*sin(\ang)+\dy}}
}
\end{tikzpicture}
我得到的只是一张白纸,没有任何图形。如何才能正确做到这一点?
答案1
使用它可能会更有益\pgfmathsetlengthmacro
。目前变量需要 2 米,\r
因为默认值是厘米。
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\foreach \ang in {0,90,...,270}{
\pgfmathsetlengthmacro{\r}{2cm}
\pgfmathsetlengthmacro{\dx}{rand*2 cm}
\pgfmathsetlengthmacro{\dy}{rand*2 cm}
\shade [ball color=red] ({\r*cos(\ang) + \dx},{\r*sin(\ang) + \dy}) circle (4 pt);
}
\end{tikzpicture}
\end{document}
另外,如果我没记错的话,您只向\elm
定义了两个参数的地方传递了一个参数。我删除了它以使其更简洁。