TikZ:pgfmath 操作没有给出预期的结果

TikZ:pgfmath 操作没有给出预期的结果

在这个 MWE 中,预期会得到 7 个在角度方向上等距分布且半径拉伸的圆。但是,我得到了这个奇怪的输出。

\documentclass[border=2pt]{standalone}
\usepackage{tikz}

\begin{document}
    \begin{tikzpicture}
     \foreach[count=\i] \x in {0,1,...,6}{%
        \pgfmathtruncatemacro\ml{1.2^(\i-1)}
        \draw (1,1)++(\x*30:5*\ml) circle[radius=1];
    }
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案1

问题在于您使用的\pgfmathtruncatemacro会丢弃小数点后的所有内容。1.2 的前四次幂介于 1 和 2 之间,因此将其截断为 1。接下来的三次幂介于 2 和 3 之间,因此将其截断为 2。要解决此问题,请将其替换\pgfmathtruncatemacro\pgfmathsetmacro

\documentclass[border=2pt]{standalone}
%\url{http://tex.stackexchange.com/q/362136/86}
\usepackage{tikz}

\begin{document}
    \begin{tikzpicture}
     \foreach[count=\i] \x in {0,1,...,6}{%
  \pgfmathsetmacro\ml{1.2^(\i-1)}
  %\pgfmathtruncatemacro\ml{1.2^(\i-1)}
        \draw (1,1) ++(\x*30:5*\ml) circle[radius=1];
    }
\end{tikzpicture}
\end{document}

(我在图片中的圆圈中添加了线条,以更明确地显示半径。)

扩大半径

相关内容