使用 tikz 计算极坐标

使用 tikz 计算极坐标

随机极坐标有一个我要遵循的一般语法示例。由于某种原因,结果没有按预期工作。

在 MWE 中,我注释掉了要使用 的行\MathPunctTwo,否则会出现错误。 \MathPunctOne说明了我感兴趣的输出类型(如下图所示)。 \MathPunctTwo应该计算另一个点的半径,该点将出现在与标记为 3309 的点相同的环上。但是,如果我取消注释 的使用\MathPunctTwo,pdflatex 会抱怨

“!缺失数字,视为零。”

我不熟悉 TikZcalc库,所以也许我只是使用错了。

\documentclass[10pt]{article}

\usepackage{tikz}
\usetikzlibrary{backgrounds,shapes,arrows,positioning,calc,snakes,fit}
\usepgflibrary{decorations.markings}

\newcommand{\MathPunctOne}[5]{%
\node[dot,label={[label distance=-.1cm]-#5:{\tiny #2}}] (#2) at (-#5:#4cm) {};
}

\newcommand{\MathPunctTwo}[5]{%
\pgfmathsetmacro\radius{{#4 / 7}*5.6}%
\node[dot,label={[label distance=-.1cm]-#5:{\tiny #2}}] (#2) at (-#5:\radius cm) {};
}

\begin{document}

\begin{figure}[htpb]
  \centering
  \begin{tikzpicture}[>=stealth',join=bevel,font=\sffamily,auto,on grid, decoration={markings, mark=at position .5 with \arrow{>}},dot/.style={circle,inner sep=1pt,fill}]

    \MathPunctOne{3305}{3323}{2}{1.6}{72.6605504587156}
    \MathPunctOne{3306}{3309}{3}{3.2}{26.422018348623855}
    % \MathPunctTwo{3315}{3307}{3}{4}{35}

    \draw[black!50] (0,0) circle (5.6cm); % 1
    \draw[black!50] (0,0) circle (4.8cm); % 2
    \draw[black!50] (0,0) circle (4.0cm); % 3
    \draw[black!50] (0,0) circle (3.2cm); % 4
    \draw[black!50] (0,0) circle (2.4cm); % 5
    \draw[black!50] (0,0) circle (1.6cm); % 6
    \draw[black!50] (0,0) circle (0.8cm); % 7

\end{tikzpicture}
\caption{Layer structure}\label{figure:layer structure}
\end{figure}
\end{document}

图层

答案1

如何用 tikz calc 进行除法(找到质心)似乎表明无法使用 TikZ calc 进行除法。事实上,切换到乘法确实有效。

\newcommand{\MathPunctTwo}[5]{%
\pgfmathsetmacro\radius{#4 * 0.8}%
\node[dot,label={[label distance=-.1cm]-#5:{\tiny #2}}] (#2) at (-#5:\radius cm) {};
}

...但下面@percusse 的评论表明这种分歧可能,需要添加括号(而不是像我原来的 MWE 那样使​​用大括号)。事实上,其他例子,比如这个向日葵图案说明如何使用括号来控制运算符优先级(和特征除法)。

相关内容