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); |
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(); |
|
Základní příkazy
Export grafů
> | graf:=plot3d(sin(x+y), x=-Pi..Pi,y=-Pi..Pi, axes=framed): |
> | graf; |
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"); |
> | 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"); |
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"); |
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"); |
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; |
> | 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(); |
> | 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(); |
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); |
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); |
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); |
> | runMarkupTree(plots[polyhedraplot]([0,0,0], polytype=tetrahedron)); |
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); |
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
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.