Gif-animaatioita Maplella

Maplen Windows-versiossa on laaja tuki erilisille grafiikantuottomuodoille. Kaiken grafiikan pystyy tallentamaan esimerkiksi PostScript, jpeg tai gif-muodossa. Näin ollen Maplella tuotettujen kuviem käyttö on helppoa joko esimerkiksi kirjoitettavassa LaTeX-dokumentissa tai web-sivulla.

Maple osaa myös animoida eli tehdä useita kuvia ja näyttää ne peräkkäin. Tähän löytyy plots-paketista animate, animate3d ja animatecurve- komennot. Paketin käyttöönotto tapahtuu with(plots)-komennolla, jolloin ladataan kaikki paketin komennot (katso alla). Toinen vaihtoehto on with(plots, animate), jolloin ladattaisiin pelkästään animate-komento.
> with(plots);

[animate, animate3d, animatecurve, changecoords, complexplot, complexplot3d, conformal, contourplot, contourplot3d, coordplot, coordplot3d, cylinderplot, densityplot, display, display3d, fieldplot, fieldplot3d, gradplot, gradplot3d, implicitplot, implicitplot3d, inequal, listcontplot, listcontplot3d, listdensityplot, listplot, listplot3d, loglogplot, logplot, matrixplot, odeplot, pareto, pointplot, pointplot3d, polarplot, polygonplot, polygonplot3d, polyhedra_supported, polyhedraplot, replot, rootlocus, semilogplot, setoptions, setoptions3d, spacecurve, sparsematrixplot, sphereplot, surfdata, textplot, textplot3d, tubeplot]

Animaatioiden tuotto esimerkiksi animate-komennolla on helppoa. Esimerkiksi komento

> animate(sin(x*t),x=0..2*Pi,t=0..2);

piirtää funktion x -> sin(x,t) välillä [0,2*Pi] eri parametrin t arvoilla, ja näyttää kuvat sitten peräkkäin.

Edellä käytetty komento on kuitenkin rajoitettu pelkästään reaaliarvoisiin yhden muuttujan funktioihin, joten esimerkiksi kompleksitason neliön kuvautumista ei voida tällä tavalla animoida. Tämä onnistuu kuitenkin tekemällä lista kuvista, jonka jälkeen ne näytetään peräkkäin ruudulla Maplen display- komennolla.

Määritellään aluksi kompleksimuuttujan kompleksiarvoinen funktio moebius,

> moebius:=(z,a)->((2+a*I)*z + (2-a*3*I))/(a*(3+1*I)*z+(2+I));

[Maple Math]

Tässä määrittelyssä on myös toinen (reaali)parametri, jonka arvoa muuttamalla on tarkoitus tehdä animaatio. Tämän jälkeen määritellään yksi kuva tuotettavaksi siten, että parametrin t arvolla kuvataan edellisellä moebius-kuvauksella kompleksitason neliö [0,1] x [0,1] ja piirretään näin saatu uusi joukko. Tämän tekee automaattisesti conformal-komento.

> kuva:=t->conformal(moebius(z,t),z=0..1+I,grid=[21,21]);

[Maple Math]

Tämän määrittelyn jälkeen yksi kuva voidaan piirtää komennolla kuva(parametrin arvo), ja tulos on jotain alla olevan näköistä.

Kuvajonon tuottaminen tapahtuu seq-komennolla (kuten yleensäkin jonojen muodostaminen). Alkuperäinen muuttuja saa kokonaislukuarvot 0..100, jonka perusteella piirrettää, kuva parametrin arvolla 0.01*t. Tämän jälkeen listan kuvat esitettän peräkkäin display-komennolla asettamalla option insequence arvoksi true, muuten kuvat piirrettäisiin kaikki päällekkäin samaan kuvaan.

> display(seq(kuva(0.01*t),t=0..100),insequence=true);

Oletusarvoisesti kaikki tulostus tulee kuvaruutuun, mutta kuten alussa todettiin, on mahdollista käyttää myös muita tulostuslaitteita. Näiden määrääminen tapahtuu plotsetup-komennolla, jolle annetaan ensimmäisenä parametrina käytettävä laite, esimerkiksi gif- tai jpeg-tulostus. Tämä tulostus ohjataan johonkin tiedostiin, jonka nimi annetaan plotoutput-vaihtoehtona. Alla esimerkiksi käytetään gif-tulostus toedostoon animaatio.gif ja asetetaan kuvan kooksi 256 x 256 pikseliä. Ja koska meidän tulostuksemme sisältää monta kuvaa (animaatio), on gif-tiedosto myös gif-animaatio. Laskennan jälkeen tuloksena on valmis gif-kuva esimerkiksi web-sivulle.

> kuva:=t->conformal(moebius(z,t),z=0..1+I,grid=[21,21]);
plotsetup(gif,plotoutput="animaatio.gif",plotoptions="width=256,height=256");

Näiden kahden komennon ja edeltävän moebius-määritelmän avulla saatiin aikaiseksi seuraava animaatio.