我有一个图形,*.eps
比如说一个已经绘制好并包含在 TeX 中的五边形,我想实现一个旋转动画。因此,多边形将以某种速率围绕某个点(通常是其中心)旋转。如何实现?
答案1
主题发布者似乎想要一个单身的图形文件围绕其中心旋转。在这种情况下,animateinline
环境可能是更好的选择,因为图像文件仅包含一次(至少在 pdfLaTeX/XeLaTeX/dvipdfmx 的情况下),从而节省了文件大小。
\documentclass{article}
\usepackage{animate}
\usepackage{graphicx}
\newlength\imgwd
\setlength\imgwd{2in}
\newlength\imght
\setlength\imght{2in}
\newlength\imgdiag
\setlength\imgdiag{1.4142\imgwd} %should be set to sqrt(imgwd^2+imght^2)
\begin{document}
\begin{animateinline}[controls,loop]{12}
\multiframe{36}{iAng=0+10}{%
\makebox[\imgdiag][c]{%
\rule[-0.5\imgdiag]{0pt}{\imgdiag}%
\rotatebox[origin=c]{\iAng}{%
\raisebox{-0.5\height}{%
\includegraphics[width=\imgwd,height=\imght]{tiger}%
}%
}%
}%
}
\end{animateinline}
\end{document}
答案2
这animate
包裹允许您通过提供一些具有基本名称的图像来实现此目的。默认格式为:
\animategraphics[<options>]{<frame rate>}{<base filename>}{<start>}{<finish>}
答案3
这是一个简单的例子。我创建了一个图形列表。对于你的情况,如果你有一个定义的图片,你可以用 进行旋转来\foreach
获得相同的结果。
animateinline
环境是 AlexG 的答案中的一个很好的替代方案
更新
步骤1:创建五边形
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{shapes}
\begin{document}
\begin{tikzpicture}
\node [draw,regular polygon, regular polygon sides=5, minimum size=4cm,outer sep=0pt] {};
\end{tikzpicture}
\end{document}
第二步:pentagon.pdf 中的图片列表与 pentagon.tex
\documentclass{beamer}
\usepackage{tikz}
\usepackage[active,floats,tightpage]{preview}
\PreviewEnvironment{tikzpicture}
\setlength\PreviewBorder{5pt}%
\begin{document}
\foreach \a in {0,5,...,360}{%
\begin{tikzpicture}
\clip (-3,-3) rectangle (3,3) ;
\node[rotate=\a,transform shape] {\includegraphics[width=4cm]{aPentagon}};
\end{tikzpicture}}
\end{document}
第三步:带有动画的最终 PDF
\documentclass{beamer}
\usepackage{animate}
\begin{document}
\begin{frame}
\begin{center}
\animategraphics[palindrome]{12}{pentagon}{}{}
\end{center}
\end{frame}
\end{document}
我尝试animateinline
成功地避免了最后两个步骤,但我不知道如何获得良好的结果。
这里的问题是获取动画 gif,因为 pdf 似乎是错误的。
第一次尝试
步骤1
您创建一个图片列表。我使用了 beamer,并且我有一个正确的图片尺寸。我命名了triangle.tex
源
\documentclass{beamer}
\usepackage{tikz}
\usetikzlibrary{calc}
\usepackage{verbatim}
\usepackage[active,floats,tightpage]{preview}
\PreviewEnvironment{tikzpicture}
\setlength\PreviewBorder{5pt}%
\begin{document}
\newcommand\setC{%
\pgfmathsetmacro\Cx{5-3*cos(\alpha)}
\pgfmathsetmacro\Cy{3*sin(\alpha)}
\fill [blue] (\Cx,\Cy) circle (2pt);
}%
\foreach \a in {0,10,...,180}{%
\begin{tikzpicture}
\draw (-1,-1) rectangle (9,5);
\fill[blue] (0,0) circle (2pt);
\fill[blue] (4,0) circle (2pt);
\setC
\draw (0,0)--(4,0)--(\Cx,\Cy)--cycle;
\end{tikzpicture}
}
\end{document}
第2步
我创建了一个新的小文件animated_triangle.tex
。重要的一行是
\animategraphics[palindrome]{12}{triangle}{}{}
回文是动画包的一个选项(参见文档),每秒 12 帧(我认为......),三角形是包含图片列表的 pdf 的名称。最后两个参数分别用于动画的第一张图片和最后一张图片。这里我使用了所有图片。
\documentclass{beamer}
\usepackage{animate}
\begin{document}
\begin{frame}
\frametitle{Produit Scalaire}
\begin{center}
\animategraphics[palindrome]{12}{tranim}{}{}
\end{center}
\end{frame}
\end{document}
我不知道如何在 tex.se 上放置动画 gif,我放置了 pdf。在 Peter 的帮助和 Martin 的解释下,我得到了一个动画 gif,但有一些小问题。第一个结果是: