在beamer中经常使用tikz绘图,有时想把图形的绘制过程动态地展现出来,就更好了.
下面是个例子:
% Animated beamer frame for tikz
%Author:
%wu xuping
%Date:
%2013-04-02
% FileName:
%main.tex
% run:
% xelatex -shell-escape main
% xelatex -shell-escape main
%required:
% Acrobat Reader version > 6
\documentclass{beamer}
\usepackage{verbatim}
\usepackage{tikz}
\usepackage[autoplay,loop]{animate}
\begin{document}
\begin{frame}
Animated beamer frame for tikz
\begin{center}
\begin{animateinline}[
begin={
\begin{tikzpicture}[blue,scale=1,line width=2pt]
\useasboundingbox[draw] (0,0)rectangle(4,4);
},
end={
\end{tikzpicture}
}
]{2}
\draw[->](0,0)--(1,1);\newframe
\draw[->](0,0)--(2,2);\newframe
\draw[->](0,0)--(3,3);\newframe
\draw[->](0,0)--(4,4);
\end{animateinline}
\end{center}
\end{frame}
\end{document}
编译上面的例子,打开生成的pdf文件就可以发现tikz的动态绘图过程是如何实现的了.
如下图中的带箭头的线段是如何动态生成的?
再看一个tikz动画(或动态)绘制正弦函数的例子:
\documentclass{beamer}
\usepackage{verbatim}
\usepackage{ctex}
\usepackage{tikz}
\usepackage{animate}
\newcommand{\plotsin}[1]{%
\draw[red] plot[domain=-3:#1]
(\x,{sin(\x r)});
}
\begin{document}
\begin{frame}
绘制正弦函数的动画:\\
\begin{animateinline}[autoplay,palindrome,
begin={\begin{tikzpicture}[scale=1,line width=1.5pt]
\draw[line width=0.5pt,step=0.5,dashed,use as bounding box] (-4,-1.5)grid(4,1.5);
\draw[->] (-4,0)--(4,0) node[below left]{$x$};
\draw[->] (0,-1.5)--(0,1.5)node[below left]{$y$}; },
end={\end{tikzpicture}}]{4}
\plotsin{0};\newframe
\plotsin{1};\newframe
\plotsin{1.5};\newframe
\plotsin{2};\newframe
\plotsin{2.5};\newframe
\plotsin{3};\newframe
\plotsin{3.5};\newframe
\plotsin{4};
\end{animateinline}
\end{frame}
\end{document}
绘图如下所示:
设置两个参数画正弦函数,总共生成20帧画面,已每秒10帧的速度播放:
\documentclass{beamer}
\usepackage{verbatim}
\usepackage{tikz}
\usepackage{calc}
\usepackage{animate}
\newcommand{\plotsin}[2]{%
\draw[red,<->] plot[domain=#1:#2]
(\x,{sin(\x r)});
}
\begin{document}
\begin{frame}
绘制正弦函数的动画:\\
\begin{animateinline}[autoplay,palindrome,
begin={\begin{tikzpicture}[scale=1,line width=1.5pt]
\draw[line width=0.5pt,step=0.5,dashed,use as bounding box] (-4,-1.5)grid(4,1.5);
\draw[->,blue] (-4,0)--(4,0) node[below left]{$x$};
\draw[->,blue] (0,-1.5)--(0,1.5)node[below left]{$y$}; },
end={\end{tikzpicture}}]{10}
\multiframe{20}{Rxa=-0.2+-0.2, Rxb=0.2+0.2}{%
%Rxa=-0.2,-0.4,...,-4.0
%Rxb=+0.2,+0.4,...,+4.0
\plotsin{\Rxa}{\Rxb}%
}%
\end{animateinline}
\end{frame}
\end{document}
效果如下:
\usepackage[autoplay,loop]{animate}
里面提供的命令和环境
\begin{animateinline}
<code text>
\end{animateinline}
具体参见手册吧