Maple, JavaViewLib a JavaView - nástroje k tvorbě, exportu 

a prezentaci interaktivní 3D grafiky 

Roman Plch, Petra Šarmanová 

Mapleovská knihovna JavaViewLib 

Načtení knihovny JavaViewLib 

Na začátku práce je třeba nastavit cestu ke knihovně 

> libname := "C:\\Program Files\\Maple 10\\JavaViewLib\\", libname:
with(JavaViewLib);
 

[exportHTM, exportHTMLite, exportJVX, exportMPL, exportValidate, genTag, genTagLite, getBrowser, getInfo, getInfoState, getOS, import, importJVX, importMPL, runApplet, runAppletLite, runJavaView, runM...
[exportHTM, exportHTMLite, exportJVX, exportMPL, exportValidate, genTag, genTagLite, getBrowser, getInfo, getInfoState, getOS, import, importJVX, importMPL, runApplet, runAppletLite, runJavaView, runM...
[exportHTM, exportHTMLite, exportJVX, exportMPL, exportValidate, genTag, genTagLite, getBrowser, getInfo, getInfoState, getOS, import, importJVX, importMPL, runApplet, runAppletLite, runJavaView, runM...
[exportHTM, exportHTMLite, exportJVX, exportMPL, exportValidate, genTag, genTagLite, getBrowser, getInfo, getInfoState, getOS, import, importJVX, importMPL, runApplet, runAppletLite, runJavaView, runM...
 

Pro ušetření práce je vhodné předchozí příkazy uložit do souboru MAPLE.INI.   

Dále je možno nastavit webový problížeč, pracovní adresář atd. 

> set(BR="FF");
 

Pro kontrolu nastavení spustíme JavaView 

> runJavaView();
 

`Lauching  

Ovládání JavaViewLite
 
Levé tlačítko myši Rotace
s Změna velikosti
t Translace
r Reset
w / q Start / Stop automatické rotace
Pravé tlačítko myši Zobrazí menu
Více informací ... JavaView Help

 

Základní příkazy 

Export grafů 

> graf:=plot3d(sin(x+y), x=-Pi..Pi,y=-Pi..Pi, axes=framed):
 

> graf;
 

Plot 

Maple používá k popisu generované grafiky vlastní datovou strukturu, užívající jen prostého textu. První z možností exportu pomocí JavaViewLib (JVL) využívá přímo tohoto zápisu, téměř nezměněný ho přepíše do vnějšího souboru s příponou MPL. 

> exportMPL(graf):    
 

V pracovním adresáři (jedná se o adresář C:\Program Files\Maple 10\JavaViewLib, pokud není nastaven příkazem setWorkingPath jiný adresář), podadresáři mpl, se uloží soubor JVXExport.mpl. 

> exportMPL(graf,"sin"):
 

V pracovním adresáři, podadresáři mpl, se uloží  soubor sin.mpl. Pro jeho zobrazení použijeme příkaz runJavaView: 

> runJavaView("sin.mpl");
 

`C:\Program Files\Maple 10\JavaViewLib\mpl\sin.mpl` 

> exportMPL(graf,"C:\\Documents and Settings\\plch\\Dokumenty\\Petra\\workshop\\sin.mpl"):
 

Uloží se soubor  sin.mpl do určeného adresáře. 

Analogicky fungují příkazy pro export do formátu JVX, mateřského jazyka JavaView. Tento je založený na značkovacím jazyce XML. 

> exportJVX(graf,"C:\\Documents and Settings\\plch\\Dokumenty\\Petra\\workshop\\sin.jvx"):
 

Při zobrazení souboru MPL se respektuje většina parametrů příkazů pro vykreslování grafu. Stačí tedy vytvořit výslednou podobu grafu v Maplu a dále nemusíme soubor MPL nijak upravovat. 

Soubor JVX při exportu nastavení vzhledu nepřebírá, přenáší jen základní informace.  

> runJavaView("sin.jvx");
 

`C:\Program Files\Maple 10\JavaViewLib\jvx\sin.jvx` 

Měníme-li vzhled grafického objektu (barvy, osy, osvětlení, atd.) pomocí programu JavaView, můžeme tyto změny uchovat uložením souboru s příponou JVD (Display Settings). JVX i JVD jsou napsány v jazyce XML. Při následném prohlížení grafiky načteme oba soubory. 

> exportHTM(graf):
 

Do pracovního adresáře, podadresáře htm, se uloží soubor JVLExport.htm.  HTML soubor obsahuje párový tag <applet>, v němž jsou přímo zapsána data exportovaného grafu, stejná, která by byla zapsána do externího souboru formátu MPL. Žádný další soubor tedy neexistuje. 

> exportHTM(graf,"sin"):
 

Do pracovního adresáře, podadresáře htm, se uloží soubor sin.htm, který opět obsahuje všechna data zobrazovaného objektu.  

 

> exportHTM(graf,"sin.mpl"):
 

Do pracovního adresáře, podadresáře mpl, se uloží soubor sin.mpl. Do pracovního adresáře, podadresáře htm, se uloží soubor sin.htm. Ten obsahuje odkaz na soubor sin.mpl. 

 

> exportHTM(graf, "sin.jvx"):
 

Do pracovního adresáře, podadresáře jvx, se uloží soubor sin.jvx. Do pracovního adresáře, podadresáře htm, se uloží soubor sin.htm. Ten obsahuje odkaz na soubor sin.jvx. 

 

> exportHTM(graf,"C:\\Documents and Settings\\plch\\Dokumenty\\Petra\\workshop\\graf1.mpl"):
 

Do uvedeného adresáře se překopírují adresáře jars a images programu JavaView a vytvoří se soubory graf1.htm a graf1.mpl. 

 

> exportHTM(graf,"C:\\Documents and Settings\\plch\\Dokumenty\\Petra\\workshop\\graf3.htm"):
 

Do uvedeného adresáře se překopírují adresáře jars a images programu JavaView a vytvoří se  soubor graf3.htm, v nimž jsou přímo zapsána data exportovaného grafu.  

Příkazy runJavaView a runApplet 

Pro export a následné zobrazení můžeme použít funkce skupiny run:  

> runJavaView(graf):
 

Spustí JavaView a zobrazí zadaný graf funkce. 

 

> plots[animate3d](2*sin(x+u)*sin(y), x=-Pi..Pi, y=-Pi..Pi, u=0..2*Pi):
 

> runJavaView(%):
 

Spustí JavaView a zobrazí zadanou animaci. 

Pro zobrazení ovládacího panelu animace "klikněte" na okno appletu a stiskněte CTRL+a.

> runJavaView(graf, graf4.mpl):
 

Do pracovního adresáře, podadresáře mpl, uloží soubor graf4.mpl. Spustí JavaView a zobrazí graf4.mpl. 

 

> runJavaView("models/hand.obj"):
 

Spustí JavaView a načte soubor hand.obj  z pracovního adresáře, podadresáře models. 

Příkaz runApplet funguje podobně jako příkaz exportHTM, navíc ale spustí prohlížeč a zobrazí exportovaný graf. 

> runApplet(graf):
 

Provede totéž jako příkaz exportHTM(graf), jen navíc otevře vygenerovanou html stránku ve webovém prohlížeči. 

 

> runApplet(graf,"sin.mpl"):
 

Provede totéž jako příkaz exportHTM(graf, "sin.mpl"), jen navíc otevře vygenerovanou html stránku ve webovém prohlížeči. 

 

> runApplet(graf, "sin.jvx"):
 

Provede totéž jako příkaz exportHTM(graf, "sin.jvx"), jen navíc otevře vygenerovanou html stránku ve webovém prohlížeči. 

 

> runApplet(graf,"C:\\Documents and Settings\\plch\\Dokumenty\\Petra\\workshop\\graf5.htm"):
 

Provede totéž jako příkaz exportHTM(graf,"C:\\Documents and Settings\\plch\\Dokumenty\\Petra\\workshop\\graf5.htm"):, jen navíc otevře vygenerovanou html stránku ve webovém prohlížeči. 

> url:="http://www.math.muni.cz/~plch/diplomky/galerie/derivace/der02.htm":
 

> runApplet(url):
 

Otevře zadanou webovou stránku přímo z prostředí Maplu. 

Nastavení parametrů zobrazení 

Seznam parametrů a jejich hodnot získáme příkazem: 

 

> getInfo();
 

JavaViewLib State Information
-----------------------+------
[W ]  Applet Width        | 300
[H ]  Applet Height       | 300
[A ]  Applet Alignment    | center
[CB]  Applet Codebase     | ..
[AS]  Applet Archive      | jars/javaview.jar,jars/jvx.jar
[AL]  Applet Archive Lite | jars/jvLite.jar
[BG]  Applet Backcolor    | 200 200 200
[R ]  AutoRotate          | show 1. 1. 1.
[X ]  Axes                | hide
[BC]  Background Colour   | show 255 255 255
[BI]  Background Image    | hide images/jvlLogo.gif
[B ]  Border              | hide
[BB]  Bounding Box        | hide
[V ]  Camera Direction    | show 0 0 1
[DC]  Depth Cueing        | hide
[EA]  Edge Aura           | hide
[PT]  Show jvx Points     | hide small
[ED]  Show jvx Edges      | hide
[FC]  Show jvx Faces      | show
[T ]  Title               |
[WK]  Working Path        | C:\Program Files\Maple 10\JavaViewLib\
[IP]  Installation Path   | C:\Program Files\Maple 10\JavaViewLib\
[OS]  Operating System    | Windows XP
[BR]  Browser             | firefox
[JV]  JavaView Runtime    | bin\javaview.bat
[DG]  Debugging           | false
[HTM] HTM Extension       | htm
[MPLVER] Maple Version    | 10.020000
 

Vypsání hodnoty konkrétního parametru dosáhneme příkazem: 

> getInfoState("BB");
 

hide 

Nastavení provedeme pomocí příkazu set: 

 

> set(W="600",H="800",BG="210 0 100",R="show",X="show",BC="201 197 194",DC="show",T="Ukázka 3D grafiky na webu"):
 

> runApplet(graf, "graf6.htm"):
 

> set(reset);     
 

Nastaví znovu původní parametry. 

 

> setWorkingPath("C:\\Documents and Settings\\plch\\Dokumenty\\Petra\\workshop");
 

C:\Documents and Settings\plch\Dokumenty\Petra\workshop\ 

Nastaví cestu k pracovnímu adresáři a vytvoří automaticky podadresáře mpl, jvx, htm a images, jars a models. Toto nastavení zůstává platné jen v aktuálně otevřeném zápisníku. Po zavření a znovunačtení zápisníku je nastavení zrušeno.  

> exportMPL(graf,"zkouska.mpl"):
 

Vytvoření applet tagů 

Chceme-li vytvořit HTML soubor s více applety, je výhodné příkazem genTag vygenerovat  zdrojový kód appletu přímo do mapleovského zápisníku a pak tento kód kopírovat do HTML souboru. 

> f:=plot3d(cos(x+y^2),x=-11*Pi/6..7*Pi/6, y=-2..2, orientation=[51,35], grid=[35,35], view=-1..2):
 

> f;
 

Plot 

> set(viewDir="0 -1 0", width=300, height=300, bg="200 200 200"):
 

> exportHTM(f,ukazka.mpl):
 

> set(viewDir="0 1 0"):
 

> genTag(ukazka.mpl);
 

<APPLET CODE='javaview.class' ARCHIVE='jars/javaview.jar,jars/jvx.jar' CODEBASE='..'
WIDTH='300' HEIGHT='300' ID='JVLAPPLET' ALT='JVL - MAPLE Export'>
<PARAM NAME='DepthCue' VALUE='hide'>
<PARAM NAME='Background' VALUE='255 255 255'>
<PARAM NAME='Border' VALUE='hide'>
<PARAM NAME='ViewDir' VALUE='0 1 0'>
<PARAM NAME='Model' VALUE='mpl/ukazka.mpl'>
</APPLET>
 

> set(viewDir="0 0 1", rotate):
 

> genTag(ukazka.mpl);
 

<APPLET CODE='javaview.class' ARCHIVE='jars/javaview.jar,jars/jvx.jar' CODEBASE='..'
WIDTH='300' HEIGHT='300' ID='JVLAPPLET' ALT='JVL - MAPLE Export'>
<PARAM NAME='DepthCue' VALUE='hide'>
<PARAM NAME='Background' VALUE='255 255 255'>
<PARAM NAME='Border' VALUE='hide'>
<PARAM NAME='AutoRotate' VALUE='show'>
<PARAM NAME='ViewDir' VALUE='0 0 1'>
<PARAM NAME='Model' VALUE='mpl/ukazka.mpl'>
</APPLET>
 

> set(reset):
 

Vytvoření webové galerie mapleovských obrázků 

Příkaz viewGallery vytvoří stránku s odkazy na všechny soubory, které jsou uloženy v podadresáři htm pracovního adresáře. 

> viewGallery();
 

`C:\Documents and Settings\plch\Dokumenty\Petra\workshop\index.htm` 

> exportHTM(graf,"sin.mpl"):
 

> with(plots):
 

> cylPlt:=cylinderplot(sin(x)+cos(2*y)+2.5, x=0..2*Pi,y=-Pi..Pi,style=PATCH):
 

> exportHTM(cylPlt,"cylPlt.mpl"):
 

 

> viewGallery();
 

`C:\Documents and Settings\plch\Dokumenty\Petra\workshop\index.htm` 

Ostatní funkce 

> ?JVL
 

> ?JavaViewLib
 

> ?JavaView
 

Předchozí tři příkazy spouští nápovědu k JavaViewLib.  

Import grafiky do Maplu zajišťuje příkaz import. 

> import(models/multiple.mpl);
 

Plot 

Chceme-li importovat soubor jiného formátu než MPL a JVX, musíme nejprve načíst tento soubor do JavaView a uložit ho v jednom z požadovaných formátu.  

Například soubor hand.obj uložíme jako hand.jvx do adresáře models a příkazem import ho načteme. 

> import(models/hand.jvx);
 

Plot 

Příkaz runMarkupTree načte informace z mapleovské grafiky nebo souboru JVL (.jvx nebo .mpl) a vygeneruje odpovídající XML 

reprezentaci, kterou zobrazí v okně webového prohlížeče. Při použití tohoto příkazu nedochází k exportu (vytváření) souborů.    

 

 

> runMarkupTree(graf);
 

jvx\JVLExport.jvx 

> runMarkupTree(plots[polyhedraplot]([0,0,0], polytype=tetrahedron));
 

jvx\JVLExport.jvx 

Příkazy exportHTM, genTag a runApplet existují i ve variantě "Lite" (exportHTMLite, genTagLite a runAppletLite). Tyto využívají 

alternativní verzi programu,  nazývanou JavaViewLite. Jedná se o verzi optimalizovanou pouze pro prohlížení geometrických objektů bez možnosti větších manipulací. Výhodou je rychlejší načítaní appletů. 

> runAppletLite(graf);
 

`C:\Documents and Settings\plch\Dokumenty\Petra\workshop\htm\JVLExport.htm` 

V případě, že máme problémy např. se spuštěním JavaView, můžeme se příkazem 

> set(DEBUG=true);
 

přepnou do režimu ladění. Program JavaView nám pak vypisuje podrobnější informace o běžících procesech. 

> runJavaView();
 

launch(_JAVAVIEW): bin\javaview.bat   

`Lauching  

Nastavením hodnoty DEBUG na false toto zobrazování opět vypneme. 

> set(DEBUG=false);
 

JavaView 

Materiály podrobně popisující funkce JavaView a volání appletu v HTML dokumentech najdete na stránkách http://www.javaview.de/. 

 

Na webu již existují galerie pro podporu výuky Diferenciálního počtu funkcí více proměnných (http://www.math.muni.cz/~plch/diplomky/galerie/) a Integrálního počtu funkcí více proměnných (http://www.math.muni.cz/~plch/diplomky/musil/). Obě galerie byly vytvořeny pomocí knihovny JavaViewLib.