Animace a 2D grafika Roman Plch -.„WS ŠKOLSTVÍ. evropský soclákif _ fond V ČR EVROPSKÁ UNIE INVESTICE DO ROZVOJE VZDĚLÁVÁNÍ 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 linuxu 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[]{} {MM}- tedy např. příkaz \animategraphics-[12MparabolaMM}- vytvoří animace ze všech stránek souboru parabola.pdf, běžící rychlostí 12 rámců za sekundu. Přehled nejdulež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 pozadia 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] {12HparabolaHlHl6} \end{center}- Prostředí animate inline \begin{animateinline}[]{} ... typeset material ... \newframe[] ... typeset material . . . \newframe*[] . . . typeset material ... \newframe \multiframe{M[] }{ ... 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{animateinlineMl}-% jeden rámec za sekundu rámec 1 rámec 1 \newframe rámec 2 \newframe rámec 3 \end{animateinline} Animace s pausou rámec 1 \newframe* \begin{animateinlineMl}-rámec 1 \newframe rámec 2 rámec 3 \newframe rámec 4 \end{animateinline} \begin{animateinlineMl}-\multiframe{10}{ iCount=l+l, dLength=Ocm+0.2cm H \rule{\dLength}{lex} Frame~\iCount } \end{animateinline} Ukázky použití voleb - autoplay \begin{animateinline}- [autoplay] {1} Frame 1 \multiframe{5}{iCount=l+l}{ Frame \iCount} \end{animateinline} 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("moviel"); 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 \begin-[animateinline]- [loop, poster = first ,7, controls, palindrome]{25} \whiledo{\them<100}{ \stepcounter{m} \set count er{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 (Ypgfmathresult:3cm); \pgf mathparse-C (\thec+l) * (360. OAthem) } \coordinate (final) at (Ypgfmathresult:3cm); \draw[red,thick] (initial) — (final); \draw[cyan,thin] (0,0) — (initial); \stepcounter{c} > \node[blue,above] at (0:3.125cm){$n = $\,\them}; \end{t ikzpi cture} •/. \ifthenelse{\them<100H \newframe H \end{animateinline}-\relax % BREAK } } % END \whiledo... Do preambule nastavení čítačů: % Counters \newcounter{m}- % Number of sides of the polygon \set count er{mM2}- \newcounter{c} % Internal Control Counter