更新动画中的浮点数

更新动画中的浮点数

我正在尝试制作一个带有浮点值的动画 tikz 图表。虽然我可以使用浮点值作为图表的参数,但我似乎找不到一种方法来显示方程式。下面是使用 beamer 的 MWE。绿线动画正确 - 但参数没有以简化形式出现。蓝线显示参数以我希望的方式出现(作为简化数字),但它没有在 tikz 图片中更新,即使它在该图片之外更新。

\documentclass[12pt]{beamer}

\usepackage{animate}
\usepackage{fp}
\usepackage{tikz}

\begin{document}

\newcounter{step}   
\setcounter{step}{1}

\newcommand{\scalevalues}{ %
\FPmul{\scaled}{\thestep}{0.1}
\FPtrunc{\scaled}{\scaled}{1}
}

\scalevalues   
\scaled % will print 0.1 above picture

\begin{animateinline}[loop, poster = first, controls, palindrome]{10}
\whiledo{\thestep < 21}{
    \begin{tikzpicture}
    %\useasboundingbox (-1,-1) rectangle (5,5);
    %
    \draw[->] (-1,0) -- (5,0) node[anchor=west]{\color{gray}x};
    \draw[->] (0,-1) -- (0,5) node[anchor=south]{\color{gray}y};
    % 
    \draw[-, thick, blue] (\scaled,-1) -- (5,4) node[anchor=east]{$\scaled x $};
    \draw[-, thick, green] (0.1*\thestep,-1) -- (2,3) node[anchor=east]{$0.1*\thestep x $};
    \end{tikzpicture}
    \stepcounter{step}
    \scalevalues  
    \scaled % will print updated values below picture
    \ifthenelse{\thestep < 21}{
            \newframe
    }{
        \end{animateinline}\relax 
    }
}

\end{document}

答案1

你必须以某种方式进行计算,但 TikZ 并不完全明白这是它必须执行的计算。因此,你可以通过以下方式使其变得明显:

{$\pgfmathparse{0.1*\thestep}\pgfmathprintnumber[fixed,precision=1]\pgfmathresult x $}

在那个节点上。

答案2

tikzpicture在环境内部围绕参数构建循环的正确方法animateinline是使用\multiframe命令。这简化了代码并避免了可能的陷阱:

\documentclass[12pt]{beamer}

\usepackage{animate}
\usepackage{tikz}

\begin{document}

\begin{animateinline}[loop, poster = first, controls, palindrome]{10}
  \multiframe{21}{rNum=0.1+0.1}{
      \begin{tikzpicture}
      %\useasboundingbox (-1,-1) rectangle (5,5);
      %
      \draw[->] (-1,0) -- (5,0) node[anchor=west]{\color{gray}x};
      \draw[->] (0,-1) -- (0,5) node[anchor=south]{\color{gray}y};
      % 
      \draw[-, thick, blue] (\rNum,-1) -- (5,4) node[anchor=east]{$\pgfmathprintnumber[fixed,precision=1]{\rNum}x$};
      \draw[-, thick, green] (\rNum,-1) -- (2,3) node[anchor=east]{$\pgfmathprintnumber[fixed,precision=1]{\rNum}x$};
      \end{tikzpicture}
  }
\end{animateinline}\relax 

\end{document}

相关内容