谁能解释一下该代码的含义?
\foreach \r in {45,135}
\foreach \i [evaluate={\s=30;}] in {0,2,...,30}
\fill [black, fill opacity=1/50]
(0,0) -- (\r+\s-\i:2 and 2/3)
arc (\r+\s-\i:\r-\s+\i:2 and 2/3) -- cycle;
答案1
让我们打开TikZ
文档。
让我们写入\foreach
字段find
。我们会在封面代码中找到两个\foreach
,让我们忘记它们。第三次出现(第 26 页) ) 是章节的超链接“83 件重复的事情:Foreach 语句”。让我们阅读本章,因为它解释了什么\foreach
是,以及什么是evaluate={\s=30}
。
\foreach
理解了之后,我们来查找下一个命令: \fill
。我们在本章第一页找到了对该命令的引用foreach
。我们点击它,然后转到第 164 页。这个引用不太清楚。我们最好查看目录 (ToC),在那里我们找到了“15.5 填充路径”一节。之后,\fill
就已经理解了。
下一个:fill opacity
。根据目录,它在“15.5.3 图形参数:填充不透明度”一节中进行了解释,但是这一个只会引导我们到“23 透明度”一节,在那里我们才能理解它的opacity
含义。
下一个(\r+\s-\i:2 and 2/3)
有点难找。只要发挥一点想象力,我们就可以将其简化为类似 的内容(a:x and y)
。即使采用这种格式,也很难在 pgfmanual 上找到。这就是仔细阅读第 2 章至第 6 章中所有精彩教程的原因之一。无论如何,您可以在“13.2.1 画布、XYZ 和极坐标系”一节中找到它是什么。
之后我们只需要寻找arc
(“14.7 弧操作”)和--cycle
(第 36 页)。
一旦我们读完所有这些部分,就很容易理解发布的代码只是命令的重复fill
。让我们尝试编写第一个(\r=45
,\i=0
和\s=30
):
\fill [black, fill opacity=1/50]
(0,0) -- (75:2 and 2/3)
arc (75:15:2 and 2/3) -- cycle;
这意味着fill
椭圆形扇区。椭圆形的长半径为 2,短半径为 2/3。扇区从角度 75 开始,到角度 15 结束。fill opacity=1
结果为
接下来的迭代将覆盖从 73 度到 17 度的较窄扇区,依此类推。由于所有扇区都是在之前的扇区上绘制的,因此中心角(45 度和 135 度)周围的区域会随着knut 的结果表明
答案2
我不知道这是否是答案,还是仅仅是问题的细化:
代码包含 tikz 命令,因此您可以在 ^MWE(最小工作示例)中使用以下命令尝试它tikzpicture
:
\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}
\foreach \r in {45,135}
\foreach \i [evaluate={\s=30;}] in {0,2,...,30}
\fill [black, fill opacity=1/50]
(0,0) -- (\r+\s-\i:2 and 2/3)
arc (\r+\s-\i:\r-\s+\i:2 and 2/3) -- cycle;
\end{tikzpicture}
\end{document}