我有乳胶代码:
\documentclass{minimal}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\pgfdeclarelayer{background}
\pgfdeclarelayer{foreground}
\pgfsetlayers{background,main,foreground}
\xdefinecolor{darkgreen}{RGB}{175, 193, 36}
\newcounter{cntShader}
\newcounter{cntRoot}
\setcounter{cntShader}{20}
\def\couleur{darkgreen}
\begin{tikzpicture}
\foreach \y in {86,38,15}{
\setcounter{cntShader}{1}
\coordinate (a) at (0,0);
\coordinate (b) at (0:1);
\foreach \x in {1,...,\y}{%
\coordinate (c) at ($ (b)!1cm!270:(a) $);
\begin{pgfonlayer}{background}
\draw[fill=\couleur!\thecntShader] (a)--(b)--(c)--cycle;
\end{pgfonlayer}
\setcounter{cntRoot}{\x}
\addtocounter{cntRoot}{1}
\node[fill=white,draw,circle,inner sep=1pt] at (c)
{$\sqrt{\thecntRoot}$};
\coordinate (b) at (c);
\pgfmathsetcounter{cntShader}{\thecntShader+4}
\setcounter{cntShader}{\thecntShader}
}
}
\node[fill=white,draw,circle,inner sep=1pt] at (0:1) {$\sqrt{1}$};
\end{tikzpicture}
\end{document}
我不知道这行\coordinate (c) at ($ (b)!1cm!270:(a) $);
是什么意思。我也不明白为什么要使用\pgfdeclarelayer{foreground}
和\pgfsetlayers{background,main,foreground}
。我只看到代码background
在中使用了层\begin{pgfonlayer}{background}
。
答案1
手册第 151 页:
⟨坐标⟩!⟨维度⟩!⟨角度⟩:⟨第二个坐标⟩ 当你写下 ⟨a⟩!⟨维度⟩!⟨b⟩ 时,这意味着:使用从 ⟨a⟩ 到 ⟨b⟩ 的直线上距离 ⟨a⟩ 为 ⟨维度⟩ 的点
与前面一样,如果你使用 ⟨angle⟩,则 ⟨second coordinate⟩ 在使用前会围绕 ⟨coordinate⟩ 旋转这么多角度。
示例可参见手册第 151 页。
\coordinate (c) at ($ (b)!1cm!270:(a) $);
表示站在(b)
方向看(a)
,转270
度然后行走1 cm
。在此位置放置坐标(c)
。
是的,没有该层代码仍然可以工作foreground
,但是为什么不将其作为拥有有用层的标准方式呢?