\foreach 维度太大

\foreach 维度太大

我想创建一个卫星动画。我使用下面的代码。但是我希望它运行顺畅,所以我想生成许多帧。事实证明,我可以创建的最大帧数\foreach是 45。如果我将其更改为 46,则会收到错误Dimension too large

那么,我怎样才能完成 45+ 个\foreach循环?

\documentclass{beamer}
\usepackage{tikz}
\usepackage{pgfplots}
\setbeamertemplate{navigation symbols}{}

\begin{document}
\begin{frame}[fragile]
\frametitle{}

\begin{center}
  \begin{tikzpicture}[scale=3.5]
  \setbeamercovered{invisible}
  \pgfmathsetmacro{\Jradius}{0.3}   % Jupiter radius
  \pgfmathsetmacro{\IoOrbit}{1}   % Io radius
  \pgfmathsetmacro{\Iradius}{0.1} % Earth radius


  \fill[red] (0,0) circle (\Jradius);

  \draw[thin] (0,0) circle (\IoOrbit);

  \pgfmathsetmacro{\N}{45} %If 46 or more, then error.
  \foreach \k in {0,1,...,\N}{
    \pgfmathsetmacro{\theta}{360*\k/\N}
      \pgfmathparse{int(\k+1)}
      \onslide<\pgfmathresult>{
        \fill[gray] ({cos(\theta)},{sin(\theta)}) circle (\Iradius);
      }
    }
  \end{tikzpicture}
\end{center}
\end{frame}
\end{document}

答案1

在计算中\pgfmathsetmacro{\theta}{360*\k/\N} 360*\k很容易变得比 LaTeX 可以处理的要大。反转乘法顺序,可以解决这个问题:

\pgfmathsetmacro{\theta}{360/\N*\k}

相关内容