Interaktivní prezentace matematické grafiky na webu a v PDF dokumentech Roman Plch∗ , Petra Šarmanová∗∗ Abstrakt Příspěvek ukazuje možnosti vkládání interaktivní matematické grafiky (vytvářené CAS systémem Maple) do webových stránek a do PDF dokumentů. Popisuje možnosti mapleovské knihovny JavaViewLib pro export interaktivních 3D objektů z Maplu a následné využití programu JavaView pro zobrazení a modifikaci těchto objektů. Autoři dále prezentují své zkušenosti s různými způsoby, jak vkládat interaktivní grafiku do PDF dokumentu. Klíčová slova: interaktivní 3D grafika, Maple, JavaViewLib, JavaView, PDF dokument, U3D, VRML 1 Úvod O tom, že vhodně vytvořená a okomentovaná grafika přispívá k pochopení probírané problematiky a rozvoji geometrické představivosti studentů dnes již nikdo nepochybuje. Ilustrační grafiku lze použít k objasňování nového teoretického pojmu či závislosti daného jevu na parametrech, k dokreslení geometrického významu řešených úloh a případně k ověření „reálnosti řešení. Ve většině publikací je zatím zařazena pouze grafika „statická , neumožňující další manipulace s grafickým objektem. Interaktivní grafika však oproti statické poskytuje mnohem větší množství informací. Nelze ji však prezentovat v tištěné formě. Až dosud bylo možné zobrazit interaktivní grafiku pouze na webu (např. za pomoci programu JavaView). V současné době se objevuje možnost vkládat interaktivní grafiku i do PDF dokumentů. 2 Zobrazení Maple grafiky pomocí JavaView Nejprve se zmíníme o možnosti exportu interaktivní grafiky z Maplu pomocí knihovny JavaViewLib (JVL) a prezentace interaktivních grafických objektů na webu pomocí programu JavaView. Začleňování mapleovské grafiky do dokumentů pro web je dnes již zcela běžné. Při exportu jsou ale mapleovské obrázky a animace ukládány ve formátu GIF, tj. ztrácíme ∗ Ústav matematiky PřF MU Brno, Kotlářská 2, 611 37 Brno ∗∗ Katedra aplikované matematiky, FEI VŠB-TU Ostrava, 17. listopadu 15, 708 33 Ostrava-Poruba všechny možnosti interakce, které nám Maple běžně nabízí. Pomocí mapleovské knihovny JVL dokážeme uchovat dynamickou kvalitu mapleovských obrázků při exportu a tuto interaktivní 3D grafiku pak prezentovat pomocí programu JavaView na webu. JavaView nejenže uchovává všechny možnosti modifikace grafických objektů, které Maple umožňuje, ale dokonce v mnohém Maple převyšuje. Díky zmíněným možnostem je dnes velmi snadné vytvořit na webu galerii interaktivních geometrických objektů. Při vykreslování grafu v systému Maple můžeme použít spoustu parametrů (zobrazení os, tloušťka čar, barva, . . . ), vkládat do grafu popisky, u 3D grafů volit orientaci, vykreslovat vrstevnice nebo kreslit třírozměrné grafy v jiných souřadných soustavách. Funkce může být zadána jak explicitně, tak i parametricky nebo implicitně. Maple dokáže grafy nejen kreslit, ale také jednoduše animovat pomocí příkazů animate, animate3d nebo display z balíku plots. Maple nabízí export obrázků do standardních zobrazovacích formátů jako GIF, EPS, JPG, BMP. Tyto mohou být s úspěchem použity pro tiskové verze dokumentů. Pokud však vytváříme multimediální dokument, požadujeme dynamické možnosti zobrazení a interaktivitu, která přináší mnohem větší množství informací. K tomu, abychom mohli exportovat z Maplu interaktivní grafiku, slouží mapleovská knihovna JavaViewLib, která se tak stává spojovacím článkem mezi systémem Maple a programem pro manipulaci s 3D grafickými objekty JavaView. JavaViewLib umožňuje export interaktivní 3D grafiky do formátů MPL (interní datový formát Maplu) a JVX (oficiální formát programu JavaView, založený na jazyku XML), s kterými si rozumí program JavaView. Kromě těchto výstupů je umožněn přímý export do HTML kódu a okamžité zobrazení interaktivní 3D grafiky pomocí webového prohlížeče. O konkrétním použití knihovny JVL se zmíníme dále. Objekt ve formátu MPL nebo JVX je připraven pro prohlížení a zpracování v programu JavaView. JavaView je prohlížeč geometrických útvarů a výpočetní program napsaný v jazyce Java. Může být použit jako samostatná aplikace pro zobrazování a manipulaci s 3D objekty nebo jako applet na webových stránkách pro vzdálené použití skrze webový prohlížeč. Program JavaView nabízí velmi pěkné zobrazovací prostředí, které umožňuje přibližování, posunutí, rotace, ovládání barev, textur, řeší průhlednost, viditelnost, vyhlazování nerovností, animování a mnoho dalšího. JavaView umožňuje import a export 3D objektů různých formátů (JVX, VRML, OFF, OBJ, DXF, . . . ) a formátů souborů s grafikou programů Maple a Mathematica. 2.1 Použití knihovny JavaViewLib Knihovnu je možno stáhnout z adresy http://www.javaview.de/maple/ a nakopírovat do adresáře, kde jsou uloženy Mapleovské knihovny. Na začátku práce v Maplu je třeba nastavit cestu ke knihovně:1 > libname:="C:\\Program Files\\Maple 10\\LIB\\JavaViewLib\\",libname; Knihovnu načteme příkazem: > with(JavaViewLib); 1 Nastavení cesty závisí na použitém operačním systému. [exportHTM , exportHTMLite, exportJVX , exportMPL, exportValidate, genTag, genTagLite, getBrowser, getInfo, getInfoState, getOS, import, importJVX , importMPL, runApplet, runAppletLite, runJavaView, runMarkupTree, set, setEnabledValidate, setWorkingPath, viewGallery] Přitom se nám zobrazí seznam funkcí, které JVL nabízí. Některé funkce mají příponu Lite. Tyto využívají alternativní verzi programu, tzv. JavaViewLite. Jedná se o verzi optimalizovanou pouze pro prohlížení geometrických objektů bez možnosti větších manipulací s těmito objekty. Výhodou je rychlejší načítání appletů. Nejjednodušší možností, jak využít JVL, je „obalit příkazem runJavaView přímo příkaz plot. Například > runJavaView(plot3d(3*sin(x)*cos(y),x=-Pi..Pi,y=-Pi..Pi)); vytvoří soubor JVLExport.mpl v adresáři JavaViewLib podadresáři mpl a současně tento soubor otevře programem JavaView. Další možností je pomocí příkazu exportMPL, příp. exportJVX provést export z Maplu do formátu MPL, příp. JVX bez okamžitého zavolání JavaView. Při exportu do formátu JVX pomocí příkazu exportJVX dojde k uložení zobrazovaného objektu, nikoliv k uložení nastavení parametrů zobrazení, tj. například se neuloží osy. Chceme-li uchovat všechny informace, je třeba použít příkaz runJavaView, provést uložení do formátu JVX a navíc uložit nastavení zobrazení do souboru formátu JVD. Při opětovném zobrazení JVX souboru pomocí JavaView je třeba toto nastavení zobrazení ze souboru JVD znovu načíst. Chceme-li výstup ve formě HTML stránky, použijeme příkaz runApplet, kterým opět „obalíme příkaz plot. Například > runApplet(plot3d(3*sin(x)*cos(y),x=-Pi..Pi,y=-Pi..Pi)); vytvoří soubor JVLExport.htm, v němž je odkaz na grafický objekt ve formátu MPL. Může přitom jít o 2D obrázek, interaktivní 3D grafiku, příp. 3D animaci. Po vytvoření HTML souboru se okamžitě spustí prohlížeč (obr. 1). Pokud chceme vytvořit pouze HTML soubor a nespouštět prohlížeč, použijeme příkaz exportHTM. Kromě exportu knihovna JVL nabízí i import souboru do Maplu. Grafický objekt vytvořený jiným programem (např. systémem Autocad nebo Mathematica) můžeme zobrazit pomocí JavaView a provést export do formátu MPL. Soubor MPL lze pak příkazem import načíst do Maplu. Popis dalších příkazů knihovny lze najít v nápovědě k JVL přímo v Maplu. 2.2 Prezentace interaktivní grafiky na webu Pro zobrazení 3D objektů na webu je třeba nakopírovat JavaView do adresáře, kde jsou umístěny HTML dokumenty. Při prohlížení HTML stránky se pak automaticky spustí applet JavaView a zobrazí zadaný soubor s 3D objektem. Dále uvádíme příklad volání appletu v HTML dokumentu: %jméno souboru s 3D objektem %zobrazuje osy %spustí rotaci objektu %kontrolní panel je skrytý %barva pozadí Všechny parametry, které je možno použít při volání appletu jsou popsány na adrese http://www.javaview.de/doc/userManual/appletParm.html. Obrázek 1: Ukázka začlenění interaktivní grafiky do HTML dokumentu 3 Interaktivní grafika v PDF dokumentu I když se možnosti publikování matematiky na webu s rozvojem podpory jazyka MathML výrazně zlepšují, PDF zůstává pro matematiky stále nejvhodnějším formátem. V předchozích odstavcích jsme si ukázali možnosti vkládání interaktivní grafiky do dokumentu na webu, vyvstává tedy přirozená otázka, zda je něco podobného možné i v rámci PDF dokumentu. Tato možnost úzce souvisí s vytvořením a rozvojem formátu U3D. Specifikace tohoto formátu byla zveřejněna v září roku 2005 organizací Ecma2 . Formát byl navržen jako standard pro data 3D objektů. Cílem bylo vytvořit jednotný datový formát pro jednoduchou výměnu dat a komunikaci mezi aplikacemi zaměřenými na práci s grafickými objekty. Tento formát začala podporovat i firma Adobe a to od specifikace PDF-1.6 (Adobe Acrobat 7.0 a Adobe Reader 7.0). 3.1 Vytvoření 3D objektu ve formátu U3D V době vzniku tohoto příspěvku neexistovala možnost exportu 3D grafiky vytvořené v Maplu3 nebo JavaView do formátu U3D. Zvolili jsme tedy export do formátu VRML a následnou konverzi do U3D formátu pomocí komerčních programů Deep Exploration (http://www.righthemisphere.com/products/dexp/) nebo Adobe Acrobat3D (http: //www.adobe.com/products/acrobat3d/). U obou těchto programů je možno používat zkušební verze po dobu jednoho měsíce. Export z Maplu do VRML lze provést dvěma způsoby: 1. Pomocí příkazu vrml balíčku plottools. Například > plottools[vrml](plot3d(3*sin(x)*cos(y),x=-Pi..Pi,y=-Pi..Pi), > ‘obrazek.wrl‘); vytvoří soubor obrazek.wrl v požadovaném formátu. 2. Grafický objekt zobrazíme pomocí JavaView a uložíme ve formátu VRML. Tento způsob umožní grafiku před exportem ještě upravovat. Jsou možné i další cesty pro získání souboru ve formátu U3D. Grafický objekt v Maplu je možné exportovat do formátu DXF, objekt zobrazený pomocí JavaView je možné uložit ve formátu OBJ nebo DXF a následně exportovat do formátu U3D. Prozatím je však ve všech případech nutné ke konverzi do formátu U3D použít výše zmíněný komerční software. Podle vyjádření vývojového týmu programu JavaView však můžeme export z JavaView přímo do formátu U3D očekávat již v nejbližší nové verzi programu (k vyzkoušení by měla být tato vlastnost již brzy v beta verzích). 3.2 Vložení grafického objektu ve formátu U3D do PDF doku- mentu Získaný grafický objekt ve formátu U3D vložíme do PDF dokumentu buď pomocí komerčního produktu Adobe Acrobat3D nebo použijeme sázecí systém TEX a balíček movie15 (http://www.ctan.org/tex-archive/help/Catalogue/entries/movie15.html). V dalším se věnujeme pouze „nekomerční cestě, tj. využití TEXu a balíčku movie15. Balíček načteme ve zdrojovém souboru příkazem \usepackage[3D]{movie15} 2 Mezinárodní standardizační instituce. 3 Prozatím není export do U3D formátu implementován ani v jiných matematických programech. a vlastní začlenění interaktivní grafiky provedeme příkazem \includemovie, jehož syntaxe je: \includemovie[volby]{šířka}{výška}{soubor.u3d}. Tento postup vyžaduje použití pdfLATEXu ve verzi vyšší než 1.20. Pokud je PDF soubor generován přes DVI a PostScript, je nutné ještě načtení balíčků graphics a hyperref, které musíme načítat až po balíčku movie15. Dále uvádíme příklad začlenění interaktivní 3D grafiky do PDF dokumentu (obr. 2). \includemovie[poster,3Droo=20, 3Dc2c=1 -1 1] {\linewidth}{\linewidth}{limita.u3d} (limita.u3d) Obrázek 2: Ukázka začlenění interaktivní grafiky do PDF dokumentu Podrobný popis všech voleb pro začleňování 3D grafických objektů najdeme v manuálu k balíčku movie15, na tomto místě si všimneme pouze volby 3Droo, pomocí které určujeme optimální vzdálenost virtuální kamery tak, aby byl vidět celý objekt (nebo skupina objektů). Nastavení vzdálenosti obvykle provádíme zkusmo pomocí rostoucí posloupnosti čísel 1, 10, 100, atd. tak, abychom dostali hrubou aproximaci a následně výsledek upravíme pomocí menších změn nebo použijeme konstrukce (tento postup však funguje pouze při použití Adobe Readeru 7) \includemovie[poster, label=moje_navesti] {\linewidth}{\linewidth}{soubor.u3d}\\ \movieref[3Dcalculate]{moje_navesti}{Výpočet optimální vzdálenosti} Nyní několikrát přeložíme zdrojový dokument (dokud se nezbavíme varovných hlášení). Otevřeme výsledný PDF dokument a na stránce s vloženým 3D objektem zvolíme vytvořený odkaz (ten byl vytvořen příkazem \movieref). Zkopírujeme nastavení z otevřeného dialogového okénka (3Droo a případně 3Dcoo) do zdrojového textu a odstraníme příkaz na vytvoření odkazu. Ponecháme tedy jen příkaz \includemovie doplněný o číselné pa- rametry: \includemovie[poster, 3Droo=23.3333]{\linewidth}{\linewidth}{soubor.u3d} Na obrázku 2 vidíme začleněnou grafiku i s nástroji 3D Toolbaru. Ten se zobrazí umístěním kurzoru myši na obrázek (v případě, že jsme použili volbu toolbar). Pokud tuto volbu nepoužijeme, můžeme Toolbar vyvolat pravým tlačítkem myši (Show Toolbar / Hide Toolbar). Základní možnosti Toolbaru jsou: dynamický zoom, posunutí, natočení, změna osvětlení a pozadí či skrytí, zobrazení nebo izolování pouze určitých prvků modelu. Možné je rovněž využití různých zobrazovacích módů (Solid, Transparent, Shaded Illustration atd.). (plot1.u3d) Obrázek 3: Ukázka exportu os z Maplu do VRML 3.3 Problémy se zobrazením souřadných os Z matematického hlediska je poměrně značným nedostatkem problematické zobrazování souřadných os a jejich popis (na rozdíl od prezentace objektu na webu pomocí JavaView, kde je zobrazování os bez problémů). Pokud 3D objekt vytváříme v Maplu, je v současnosti jedinou možností, jak osy zobrazit i ve výsledném dokumentu, export přes formát VRML. Ostatní možnosti získání objektu ve formátu U3D popsané v části 3.1 neumožňují zobrazit osy vůbec. Příkazem Maplu > plottools[vrml](plot3d(3*sin(x)*cos(y),x=-Pi..Pi,y=-Pi..Pi, > tickmarks=[3,3,3],axes=frame),‘soubor.wrl‘,tickback_color=brown, > tickfore_color=yellow); vytvoříme soubor VRML i s osami. Ovšem značky na osách budou znázorněny jako krychle, na jejichž stranách je uveden popis. Výsledek (obr. 3) není pro matematické publikace dobře použitelný. Korektní zobrazení os ve formátu VRML však možné je. Např. program Matlab má export do formátu VRML lépe vyřešen, při exportu se zachovává i popis os (obr. 4). (poly3.u3d) Obrázek 4: Ukázka exportu os z Matlabu do VRML 4 Závěr Program JavaView je používán již od roku 1999. Jeho možnosti jsou neustále rozšiřovány a doplňovány, stejně tak je neustále zdokonalováno i jeho propojení s CAS systémy Maple a Mathematica. Publikování interaktivní 3D grafiky na webu je tedy z pohledu matematiků výborně vyřešeno a nesetkáváme se při něm s výraznějšími problémy. Naproti tomu možnost vkládat interaktivní 3D objekty do PDF dokumentů je poměrně nová a narážíme proto na některé problémy (viz část 3.3). Nepříjemná je i skutečnost, že k převodu souborů s grafikou do formátu U3D potřebujeme dodatečný komerční software. Prudkým rozvoj v této oblasti nás však opravňuje doufat, že brzy bude možné exportovat 3D objekty z Maplu do formátu U3D přímo nebo pomocí JavaView (tedy bez nutnosti použití komerčního softwaru ke konverzi). Reference [1] DUGARO, Steven P., POLTHIER Konrad. Visualizing Maple Plots with JavaViewLib [online]. Dostupné na www: http://www.zib.de/polthier/articles/jvLib/ jvLibFinal.pdf. [2] DOŠLÁ Zuzana, PLCH Roman, SOJKA Petr. Matematická analýza s programem Maple. Díl 1, Diferenciální počet funkcí více proměnných. Brno, Masarykova Univerzita, 1999. CD-ROM. ISBN 80-210-2203-5. [3] FILIPEC Zdeněk, PLCH Roman. Maple a JavaView. Využití Maplu ve výuce a výzkumu na vysokých školách a akademiích věd., 1. vyd. Brno : Econ publishing s.r.o., 2002, ISBN 80-86433-10-2. [4] GRAHN Alexander. The movie15 package [online]. Dostupné na www: http://ftp. cstug.cz/pub/tex/CTAN/macros/latex/contrib/movie15/doc/movie15.pdf.