在 tikz 中,如果没有 foreach 语句,\x 是如何工作的?

在 tikz 中,如果没有 foreach 语句,\x 是如何工作的?

我已经完成了 tikz 文档中的第二个教程,并了解到如何在 foreach 语句中使用 \x 来迭代某些过程。但是,我刚刚发现 \x 可以在没有 foreach 语句的情况下出现。我改编了一些代码另一个线程尽量简化它并最终得到以下内容;

\documentclass[tikz,border=10]{standalone}

\begin{document}

\begin{tikzpicture}[scale=3,very thick]
\draw[samples=500] plot (canvas polar
cs:angle=\x r,radius={50-10*sin(10*\x r)}); %50 and 10 in 50 - 10 ... control the sharpness of each curve, 10 in sin(x) controls number of curves
\end{tikzpicture}

\end{document}

生成以下图像:

在此处输入图片描述

但是,我不明白 \x 在这段代码中起什么作用,因为没有像 \foreach ... in {1,...,5) 语句那样的语句可以确定 \x 可以取的值范围。那么 \x 是如何生成这条波浪线的,以及它在这样的语句中通常如何工作?另外,为什么它后面跟着一个 r?r 是否代表一个乘以 \x 所取值的数字?

答案1

非常有趣的例子!我不想把几百页的手册扔给你,但手册 非常有用。
您可以在这里找到:

绘制函数
绘制函数时,可以通过评估数学表达式来计算绘图数据的坐标。由于 pgf 带有数学引擎,您可以指定此表达式,然后让 TikZ 自动为您生成所需的坐标。由于这种情况在绘制函数时很常见,因此语法很简单:在 plot 命令及其本地选项之后,您可以直接提供一个(坐标表达)。它看起来像一个普通的坐标,但里面你可能使用一个特殊的宏,这是\x默认的,但可以使用变量选项来更改。(坐标表达)然后对不同的值进行评估,\x并绘制结果坐标。

[...]

/tikz/domain=<start>:<end>(无默认值,初始值为 -5:5)
设置样本采集的域

数学表达式的语法:运算符
Xr:将 x 转换为度(假定 x 以弧度为单位)。
*180/3.14(因此基本上与我的评论相同)


因此,基本上,此代码片段从 -5:5 范围内抽取 500 个样本,并将这些值作为弧度的极坐标角度。然后它计算50-10*sin(10*<angle converted to degrees>)每个样本的半径。通过这些点,它画出一条线。

相关内容