为 pgfplots 3d 图制作动画

为 pgfplots 3d 图制作动画

这个问题与. 但我想这并不一样,因为在这里我想为视图设置动画。

我之前的问题中提到过这个问题这里,我想向我的学生展示函数 $\sin(x)\sin(y)$ 的最大值和最小值。我已经使用 pgfplots 在投影仪中绘制了表面。现在我想知道是否有办法制作一个视角的小动画来显示表面上的峰和滴?

答案1

\foreach是的,这里有一个使用循环的选项;可以使用环境选项(或类似选项之一)来\only改变角度:viewaxis

\documentclass{beamer} 
\usepackage{pgfplots}

\begin{document}

\begin{frame}
\centering
    \begin{tikzpicture}
    \foreach \Angle [count=\ti] in {30,60,120,150,210,240,300,330}
    {
    \only<\ti>{\begin{axis}[
    view={\Angle}{30}]
    \addplot3[surf,domain=0:360, samples=40] 
    {sin(x)*sin(y)};
    \end{axis}}
    }
    \end{tikzpicture}
\end{frame}

\end{document}

使用 ImageMagick 和类似的东西

convert -verbose -delay 120 -loop 0 -density 300 a.pdf a.gif

你可以得到一个动画:

在此处输入图片描述

您还可以使用animate包直接制作动画,但如果我没记错的话,这只适用于 Adob​​e Reader。

答案2

这是使用动画包

\documentclass{beamer} 
\usepackage{pgfplots}
\usepackage{animate}
\begin{document}

\begin{frame}

\begin{animateinline}[poster=last, controls, palindrome]{12}%
    \multiframe{29}{iAngle=80+10}{%
        %iAngle = 80, 90, ..., 360 degrees
        \begin{tikzpicture}
        \begin{axis}[view={\iAngle}{30}]
            \addplot3[surf,domain=0:360, samples=40] 
            {sin(x)*sin(y)};
        \end{axis}
        \end{tikzpicture}
    }%
\end{animateinline}%
\end{frame}
\end{document}

相关内容