Animace a 2D grafika Roman Plch Animace z Maplu Animaci vytvoříme v Maplu (nebo v jiném matematickém programu) a uložíme ji jako animovaný GIF. > with(plots): > animate(a*x^2, x=-2..2, a=-2..2); Získaný GIF soubor převedeme na PDF pomocí programu ImageMagick (na bartovi jednoduše příkazem convert parabola.gif parabola.pdf. Vzniklý PDF soubor má 16 stránek (na každé stránce je jeden obrázek z animace). Balíček animate Animaci v PDF dokumentu vytvoříme pomocí balíčku animate. Vlastní vložení provedeme příkazem \animategraphics[]{} {}{}{} tedy např. příkaz \animategraphics{12}{parabola}{}{} vytvoří animace ze všech stránek souboru parabola.pdf, běžící rychlostí 12 rámců za sekundu. Přehled nejdůležitějších voleb loop – animace se opakuje pořád dokola width=, height= – nastavení rozměrů, pokud zadáme pouze jeden údaj, druhý se automaticky dopočítá controls – vloží tlačítka ovládání animace buttonsize= – nastaví výšku tlačítek pro ovládání animace. Implicitní hodnota je 1.44em. buttonbg=, buttonfg= – mění barvu pozadí a popředí ovládacích tlačítek. Barvu specifikujeme pomocí pole čísel z intervalu od 0.0 do 1.0, jednotlivá čísla oddělujeme pomocí dvojtečky. Počet čísel určuje zvolený barevný model: (1) – stupně šedi, (3) – RGB, (4) – CMYK. autoplay – animace startuje automaticky (bez nutnosti kliknout myší) autopause – při opuštění stránky je animace pozastavena autoresume – po zastavení animace automaticky startuje od začátku palindrome – přehrává se automaticky tam a zpět every – vezme pouze každý n-tý obrázek z posloupnosti obrázků step – animace se posouvá pouze na kliknutí Příklad z první obrazovky \begin{center} \animategraphics[controls, loop, width=0.5\textwidth] {12}{parabola}{1}{16} \end{center} Prostředí animateinline \begin{animateinline}[]{} ... typeset material ... \newframe[] ... typeset material ... \newframe*[] ... typeset material ... \newframe \multiframe{}{[]}{ ... repeated (parameterized) material ... } \end{animateinline} frame rate – počet rámců za sekundu newframe – rozděluje obsah dvou po sobě jdoucích rámců newframe* – animace je pozastavena, pokračujeme „kliknutím myši Inline animace – úvodní příklad \begin{animateinline}{1} % jeden rámec za sekundu rámec 1 \newframe rámec 2 \newframe rámec 3 \end{animateinline} rámec 1 Animace s pausou \begin{animateinline}{1} rámec 1 \newframe rámec 2 \newframe* rámec 3 \newframe rámec 4 \end{animateinline} rámec 1 \begin{animateinline}{1} \multiframe{10}{ iCount=1+1, dLength=0cm+0.2cm }{ \rule{\dLength}{1ex} Frame~\iCount } \end{animateinline} Frame 1 Ukázky použití voleb – autoplay \begin{animateinline}[autoplay]{1} \multiframe{5}{iCount=1+1}{ Frame \iCount} \end{animateinline} Frame 1 Animace v Asymptote Tento a další příklady najdete na http://asymptote.sourceforge.net/gallery/animations/. \begin{center} \begin{asy} import animate; animation A=animation("movie1"); real h=2pi/10; picture pic; unitsize(pic,2cm); for(int i=0; i < 10; ++i) { draw(pic,expi(i*h)--expi((i+1)*h)); A.add(pic); } label(A.pdf("controls",delay=50,% keep=!settings.inlinetex)); \end{asy} \end{center} Inline animace pomocí Tikz n = 3 \begin{animateinline}[loop, poster = first,% controls, palindrome]{25} \whiledo{\them<100}{ \stepcounter{m} \setcounter{c}{0} % \begin{tikzpicture}[rotate=90] \draw[blue,thick] (0,0) circle (3cm); % The polygons \whiledo{\thec<\them}{ \pgfmathparse{\thec*(360.0/\them)} \coordinate (initial) at (\pgfmathresult:3cm); % \pgfmathparse{(\thec+1)*(360.0/\them)} \coordinate (final) at (\pgfmathresult:3cm); % \draw[red,thick] (initial) -- (final); \draw[cyan,thin] (0,0) -- (initial); \stepcounter{c} } \node[blue,above] at (0:3.125cm){$n = $\,\them}; \end{tikzpicture} % \ifthenelse{\them<100}{ \newframe }{ \end{animateinline}\relax % BREAK } } % END \whiledo... Do preambule nastavení čítačů: % Counters \newcounter{m} % Number of sides of the polygon \setcounter{m}{2} \newcounter{c} % Internal Control Counter