如何实现旋转图形动画

如何实现旋转图形动画

我有一个图形,*.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}

enter image description here

答案2

animate包裹允许您通过提供一些具有基本名称的图像来实现此目的。默认格式为:

\animategraphics[<options>]{<frame rate>}{<base filename>}{<start>}{<finish>}

有一些例子在 TeXample.net 上使用 TikZ 在 TeX 中制作动画

答案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,但有一些小问题。第一个结果是:

enter image description here

相关内容