![更新动画中的浮点数](https://linux22.com/image/256537/%E6%9B%B4%E6%96%B0%E5%8A%A8%E7%94%BB%E4%B8%AD%E7%9A%84%E6%B5%AE%E7%82%B9%E6%95%B0.png)
我正在尝试制作一个带有浮点值的动画 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}