这段代码是什么意思?

这段代码是什么意思?

谁能解释一下该代码的含义?

\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}

结果: 在此处输入图片描述

相关内容