Para minha apresentação (beamer) (relacionada a aviões), quero uma animação de um avião. Eu esperava que houvesse uma maneira de o avião se mover pela tela (ou qualquer outro movimento também serviria). Por exemplo, veja 09:45 neste vídeomovendo avião no powerpointO avião pode pareceresse, fique à vontade para incluir qualquer imagem de avião.
Isso é tudo que tenho agora (uma imagem simples de um avião no modelo do projetor)
\documentclass[ignorenonframetext]{beamer}
\usepackage{fontawesome}
\mode<presentation>
{\usetheme{Singapore}
\setbeamercovered{transparent}
}
\usepackage[english]{babel}
\title{Beamer Example}
\author{Author}
\subject{Presentation Programs}
\institute[ University]{
Department of XZ\\
University}
\begin{document}
\section{Outline}
\frame[label=exampleframe]{
\frametitle{Example}
\faPlane
}
\end{document}
Responder1
Exemplo usando o plano Fontawesome (cliquena imagem para ver a animação):
Atualizar: A parte do Beamer, para atender a solicitação por completo.
Tornar-seindependente da Adobeprodutos, toda a apresentação pode ser feita em formato SVG (Cliquepara iniciar a apresentação,F11para tela cheia, navegue comPgUpePgDown; um navegador baseado em Blink [Chromium, Chrome, Opera] pode ser necessário para que o gradiente de fundo seja renderizado corretamente):
Animação independenteEntrada LaTeX:
Atualização: exemplo estendido (decolagem e pouso mais suave) e melhorado (colocação de nós ao longo do caminho, conforme mostrado pelo usuário @Hafid).
\documentclass{standalone} % animated PDF
%\documentclass[dvisvgm,preview]{standalone} % animated SVG: latex + dvisvgm --font-format=woff --bbox=preview --zoom=-1
%\documentclass[export]{standalone} % multipage PDF
\usepackage{fontawesome}
\usepackage{tikz,animate}
\ExplSyntaxOn
\let\fpEval\fp_eval:n % expandable flt-point calculation with L3
\ExplSyntaxOff
\begin{document}
\begin{animateinline}[
autoplay,controls,
begin={\begin{tikzpicture}[scale=0.85]
\coordinate (a) at (110:15); \coordinate (b) at (70:15);
\node [anchor=north east] at (a) {A}; \node [anchor=north west] at (b) {B};
\useasboundingbox (a) node [anchor=north east] {A} arc [start angle=110,end angle=70,radius=15] (b) node [anchor=north west] {B};},
end={\end{tikzpicture}}
]{24}
\multiframe{161}{iPos=0+1}{%
\path[draw] (a) arc [start angle=110,end angle=70,radius=15] (b) node [pos=\fpEval{0.5*(1-cosd(180*\iPos/160))},sloped,rotate=-45]{\faPlane};
}
\newframe
\multiframe{19}{iAng=45+10}{%
\path[draw] (a) arc [start angle=110,end angle=70,radius=15] (b) node [pos=1,sloped,rotate=-\iAng]{\faPlane};
}
\newframe*
\multiframe{161}{iPos=0+1}{%
\path[draw] (a) arc [start angle=110,end angle=70,radius=15] (b) node [pos=\fpEval{0.5*(1+cosd(180*\iPos/160))},sloped,rotate=135]{\faPlane};
}
\newframe
\multiframe{19}{iAng=135+-10}{%
\path[draw] (a) arc [start angle=110,end angle=70,radius=15] (b) node [pos=0,sloped,rotate=\iAng]{\faPlane};
}
\end{animateinline}
\end{document}
Apresentação (beamer
-aula)Entrada LaTeX. Ajuntar com
latex presentation.tex
latex presentation.tex
dvisvgm --font-format=woff --bbox=papersize --zoom=-1 -p1,- presentation
\documentclass[dvisvgm,hypertex,aspectratio=169]{beamer}
\usetheme{Singapore}
\usepackage{fontawesome}
\usepackage{tikz,animate}
\ExplSyntaxOn
\let\fpEval\fp_eval:n % expandable flt-point calculation with L3
\ExplSyntaxOff
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% PageDown, PageUp key event handling; navigation symbols
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage[totpages]{zref}
\usepackage{atbegshi}
\usepackage{fontawesome}
\setbeamertemplate{navigation symbols}{}
\AtBeginShipout{%
\AtBeginShipoutAddToBox{%
\special{dvisvgm:raw
<defs>
<script type="text/javascript">
<![CDATA[
document.addEventListener('keydown', function(e){
if(e.key=='PageDown'){
\ifnum\thepage<\ztotpages
document.location.replace('\jobname-\the\numexpr\thepage+1\relax.svg');%
\fi
}else if(e.key=='PageUp'){
\ifnum\thepage>1
document.location.replace('\jobname-\the\numexpr\thepage-1\relax.svg');%
\fi%
}
});
]]>
</script>
</defs>
}%
}%
\AtBeginShipoutUpperLeftForeground{%
\raisebox{-\dimexpr\height+0.5ex\relax}[0pt][0pt]{\makebox[\paperwidth][r]{%
\normalsize\color{structure!40!}%
\ifnum\thepage>1%
\href{\jobname-\the\numexpr\thepage-1\relax.svg}{\faArrowLeft}%
\else%
\textcolor{lightgray}{\faArrowLeft}%
\fi\hspace{0.5ex}%
\ifnum\thepage<\ztotpages%
\href{\jobname-\the\numexpr\thepage+1\relax.svg}{\faArrowRight}%
\else%
\textcolor{lightgray}{\faArrowRight}%
\fi%
\hspace{0.5ex}%
}}%
}%
}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\title{Fasten Seat Belts}
\subtitle{Use a Web browser and press \framebox{F11}}
\author{AlexG}
\date{\today}
\begin{document}
\frame{\titlepage}
\begin{frame}{Animation}
\begin{center}
\begin{animateinline}[
autoplay,controls,
begin={\begin{tikzpicture}[scale=0.95]
\coordinate (a) at (110:15); \coordinate (b) at (70:15);
\node [anchor=north east] at (a) {A}; \node [anchor=north west] at (b) {B};
\useasboundingbox (a) node [anchor=north east] {A} arc [start angle=110,end angle=70,radius=15] (b) node [anchor=north west] {B};},
end={\end{tikzpicture}}
]{24}
\multiframe{161}{iPos=0+1}{%
\path[draw] (a) arc [start angle=110,end angle=70,radius=15] (b) node [pos=\fpEval{0.5*(1-cosd(180*\iPos/160))},sloped,rotate=-45]{\faPlane};
}
\newframe
\multiframe{19}{iAng=45+10}{%
\path[draw] (a) arc [start angle=110,end angle=70,radius=15] (b) node [pos=1,sloped,rotate=-\iAng]{\faPlane};
}
\newframe*
\multiframe{161}{iPos=0+1}{%
\path[draw] (a) arc [start angle=110,end angle=70,radius=15] (b) node [pos=\fpEval{0.5*(1+cosd(180*\iPos/160))},sloped,rotate=135]{\faPlane};
}
\newframe
\multiframe{19}{iAng=135+-10}{%
\path[draw] (a) arc [start angle=110,end angle=70,radius=15] (b) node [pos=0,sloped,rotate=\iAng]{\faPlane};
}
\end{animateinline}
\end{center}
\end{frame}
\end{document}
Responder2
Com decorations.markings
você pode transportar o avião ao longo de qualquer caminho e ele sempre será girado para ser uma tangente do caminho (sem que você precise fazer isso manualmente).
\documentclass[ignorenonframetext]{beamer}
\usepackage{fontawesome}
\mode<presentation>
{\usetheme{Singapore}
\setbeamercovered{transparent}
}
\usepackage[english]{babel}
\usepackage{tikz}
\usetikzlibrary{decorations.markings,calc}
\title{Beamer Example}
\author{Author}
\subject{Presentation Programs}
\institute[ University]{
Department of XZ\\
University}
\newcount\myangle
\begin{document}
\section{Outline}
\begin{frame}[t]
\frametitle{Example}
\transduration{4}
\animate<2-21>
\animatevalue<2-21>{\myangle}{0}{19}
\begin{tikzpicture}
\tikzset{pics/.cd,
plane/.style={code={\fill (-0.6,0.2) -- (-0.5,0) -- (-0.6,-0.2)
-- (-0.4,-0.2) -- (-0.3,-0.1)-- (-0.1,-0.15) -- (-0.2,-0.5) -- (00.05,-0.5)
-- (0.15,-0.2) to[out=0,in=-90] (0.5,0) to[out=90,in=180] (0.15,0.2)
-- (00.05,0.5) -- (-0.2,0.5) -- (-0.1,0.15) -- (-0.3,0.1) -- (-0.4,0.2); }}}
\path[use as bounding box] (-5.5,-4.5) rectangle (2.5,3.5);
\draw[postaction={decorate,decoration={markings,
mark=at position \myangle/20 with {\path let \p1=($(current bounding
box.east)-(current bounding box.west)$),
\n1={-atan2(\y1,\x1)} in pic[rotate=\n1]{plane};}}}] (-5,0) to (2,0) arc(90:-180:2)
--++(0,5);
\end{tikzpicture}
\end{frame}
\end{document}
Isso usa os recursos de animação integrados do beamer (como emA resposta de Hafid), mas pode ser combinado com \animateinline
(verA resposta de RajaeResposta de AlexG).
O gif animado foi criado via
convert -density 300 -delay 34 -loop 0 -alpha remove multipage.pdf animated.gif
como explicadonesta ótima resposta.
Ou uma versão 3D onde o avião voa para fora do avião beamer. (Antes de fazer a apresentação, entre em contato com os organizadores para instruções de segurança. ;-)
\documentclass[ignorenonframetext]{beamer}
\mode<presentation>
{\usetheme{Singapore}
\setbeamercovered{transparent}
}
\usepackage[english]{babel}
\usepackage{tikz}
\usetikzlibrary{decorations.markings,calc}
\title{Beamer Example}
\author{Author}
\subject{Presentation Programs}
\institute[ University]{
Department of XZ\\
University}
\newcount\mydist
\begin{document}
\section{Outline}
\begin{frame}[t]
\frametitle{Example}
\transduration{4}
\animate<2-22>
\animatevalue<2-22>{\mydist}{0}{20}
\begin{tikzpicture}
\tikzset{pics/.cd,
plane/.style={code={\fill (-0.6,0.2) -- (-0.5,0) -- (-0.6,-0.2)
-- (-0.4,-0.2) -- (-0.3,-0.1)-- (-0.1,-0.15) -- (-0.2,-0.5) -- (00.05,-0.5)
-- (0.15,-0.2) to[out=0,in=-90] (0.5,0) to[out=90,in=180] (0.15,0.2)
-- (00.05,0.5) -- (-0.2,0.5) -- (-0.1,0.15) -- (-0.3,0.1) -- (-0.4,0.2); }}}
\path[use as bounding box] (-5.25,-4.5) rectangle (2.25,3.5);
\draw[postaction={decorate,decoration={markings,
mark=at position \mydist/20 with {\path let \p1=($(current bounding
box.east)-(current bounding box.west)$),
\n1={-atan2(\y1,\x1)} in (0,0)
pic[rotate=\n1,scale={0.3+0.7*sin(9*\mydist)},gray!20]{plane}
(${0.01+0.04*sin(9*\mydist)}*($(current bounding
box.north east)-(current bounding box.south west)$)$)
pic[rotate=\n1,scale={0.3+0.7*sin(9*\mydist)}]{plane};}}}] (-5,0) to (2,0) arc(90:-180:2)
--++(0,5);
\end{tikzpicture}
\end{frame}
\end{document}
Responder3
Outra solução usando \animate
comando fornecido pelo beamer
pacote
\documentclass[ignorenonframetext]{beamer}
\usepackage{fontawesome}
\usepackage{tikz}
\mode<presentation>
{\usetheme{Singapore}
\setbeamercovered{transparent}
}
\usepackage[english]{babel}
\title{Beamer Example}
\author{Author}
\subject{Presentation Programs}
\institute[ University]{
Department of XZ\\
University}
\begin{document}
\section{Outline}
\frame[label=exampleframe]{
\frametitle{Example}
See the plane flying
\newcount\p
\animate<2-10>
\animatevalue<2-10>{\p}{0}{100}
\begin{tikzpicture}
\path(0,0)rectangle(0.75\paperwidth,-0.75\paperheight);
\path[draw](0,0)..controls +(30:2) and +(40:2)..+(4,-1) node [pos=\p/100,sloped,rotate=-45,allow upside down]{\faPlane};
\end{tikzpicture}
}
\end{document}
Responder4
Ligeiramente modificado dehttps://github.com/samcarter/Extravanganza2018/blob/master/paulo/MaryDuck/MaryDuck.texpor @PauloCereda
\documentclass{beamer}
\usepackage{tikzducks}
\setbeamertemplate{navigation symbols}{}
\usetikzlibrary{calc,decorations.markings}
\setbeamertemplate{background}{%
\begin{tikzpicture}[remember picture,overlay,
decoration={markings, mark=at position \thepage/\insertdocumentendpage with {
\begin{scope}[xscale=-1]
\duck
\fill[orange] (0.7331,0.5229) .. controls (1.8688,-0.6326) and (2.2337,0.0383) .. (1.2819,0.7331) -- cycle;
\fill[brown] (1.3848,1.6771) .. controls (1.2665,2.2823) and (0.5559,2.2697) .. (0.4000,1.6455) .. controls (0.5711,1.6714) and (0.8503,1.6562) .. (0.9926,1.6247) .. controls (0.9703,1.4641) and (1.0307,1.0718) .. (1.1444,1.0104) .. controls (1.3485,0.9002) and (1.4461,1.4498) .. (1.3848,1.6771) -- cycle;
\fill[gray] (0.9153,1.4857) -- (0.9472,1.6278) -- (1.3926,1.5288) -- (1.3840,1.4228) -- cycle;
\fill[gray] (0.6484,1.6773) -- (0.6601,1.7155) -- (0.7558,1.6863) -- (0.7441,1.6480) -- cycle;
\draw[gray,fill=black] (0.83,1.57) circle (0.135);
\draw[gray,fill=black] (0.54,1.65) circle (0.12);
\end{scope}
}}
]
\path[postaction=decorate]
($(current page.north west)+(-1,0)$) to[out=-30,in=90]
(current page.center) to[out=-90,in=180,looseness=6,distance=4cm]
(current page.center) to[out=0,in=160]
(current page.south east);
\end{tikzpicture}%
}
\begin{document}
\begin{frame}
\pause[50]
\end{frame}
\end{document}