“$ (b)!1cm!270:(a) $”是什么意思?

“$ (b)!1cm!270:(a) $”是什么意思?

我有乳胶代码:

\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,但是为什么不将其作为拥有有用层的标准方式呢?

相关内容