Miroslav Lávička, Pedagogická fakulta Západočeské univerzity v Plzni
Poznámka: Na této
stránce jsou vystaveny pouze statické obrázky. Odkaz na stránku s
interaktivním apletem se skrývá pod obrázek s logem
CabriJavy
.
Co je CabriJava?
CabriJava je software, který umožňuje publikovat na internetu dynamické geometrické obrázky vytvořené v programu Cabri II. Předpokladem pro uživatelský přístup k vystaveným obrázkům CabriJavy je znalost práce s internetovým prohlížečem, výhodou je samozřejmě zkušenost s geometrickým programem Cabri. Uživatel potřebuje pouze prohlížeč, který podporuje Javu 1.1 (jako např. MS Internet Explorer od verze 4.5 nebo Netscape Navigator od verze 4.5). Chceme-li se sami stát tvůrci WWW stránek s dynamickými Cabri obrázky, potom je znalost práce s vlastním Cabri nutností, dále bychom měli něco vědět i o tzv. HTML jazyku a samozřejmě ovládat CabriJavu (stačí jen velmi skromné základy). Podobně jako v jiných oborech otevírá CabriJava cestu k tvorbě učebních textů z geometrie pro různé formy distančního studia prostřednictvím internetu. Stránky mohou být ovšem také uloženy na CD-ROMu nebo jiném dostatečně kapacitním záznamovém médiu.
Jak rozhýbat web pomocí dynamické geometrie?
Je několik řešení, jak využívat a sdílet dynamické Cabri obrázky pomocí internetu. Nejobvyklejší formou je poučný hypertext vystavený na WWW stránce, který odkazuje na Cabri obrázky. Jako uživatelé si obrázky stáhneme z webovského serveru ve formě souborů typu .fig, otevřeme je v Cabri lokálně instalovaném na svém počítači a manipulujeme s nimi podle návodu. Klasická webovská animace není pro naše účely nejvhodnější: její tvorba je poměrně náročná, především však dává minimální možnosti pro interaktivitu. Přístupem, který nejvíce sleduje vlastní práci s Cabri (dynamičnost, interaktivita), je pojetí uplatňované v CabriJavě. S vystavenými objekty může uživatel pohybovat a dynamicky tím měnit situaci na nákresně, aniž by měl instalován program Cabri. Jsme-li navíc tvůrci webovských stránek, pak oceníme především úsporu času. Jakmile máme jednou obrázek vytvořený v Cabri, je otázkou jen několika málo minut umístit jej na web.
CabriJava, jak název napovídá, byla vytvořena pomocí populární Javy, což je na platformě nezávislý, objektově orientovaný programovací jazyk vyvinutý společností Sun Microsystems. Do webovské stránky se vkládají tzv. aplety, což jsou programy napsané ve zmiňovaném jazyce Java, které se spouštějí prostřednictvím prohlížeče WWW stránek. Uživatelé, kteří nebudou WWW stránky sami vytvářet, nemusejí vědět o Javě vůbec nic. Pro ty, kteří si budou chtít vyzkoušet, jak vytvořit vlastní WWW stránku s dynamickou geometrií, uvedeme jen nezbytné, ale postačující základy v závěrečném rychlokursu tvorby webovských stránek s CabriJava aplety.
Historie CabriJavy
Počátek spadá do roku 1996, kdy Gilles Kuntz zahájil na půdě Univerzity Josepha Fouriera v Grenoble, kde již předtím vznikly pod vedením Jean-Marie Laborda všechny verze programu Cabri, práce na jeho internetové nadstavbě. Pracovní verze programu jsou průběžně k dispozici na internetu. V prvních verzích CabriJavy chyběla podpora některých objektů (např. kuželosečky, množiny objektů) a některých dalších funkcí Cabri. Na internetu tak nemohly být vystaveny všechny obrázky, které bylo možné vytvořit v Cabri. To je však již dávno minulostí a aktuální verze (v době vzniku článku stále ještě ne definitivní) nás již při tvorbě dynamických obrázků téměř neomezuje. Současně probíhá překlad do dalších jazyků (původně francouzština a angličtina _ dnes navíc němčina, italština, španělština, holandština, portugalština a také čeština).
Jak uživatelsky pracovat s WWW stránkou, na níž jsou CabriJava aplety?
Hned na začátku je nutné upozornit na základní rozdíl mezi Cabri a CabriJavou _ pomocí Cabri vytváříme na nákresně (obrazovce) geometrické objekty (jako např. body, přímky, úsečky, kružnice, kuželosečky apod.). CabriJava oproti tomu "jen" pomáhá zobrazit výsledný obrázek na webu se zachováním dynamických prvků Cabri. Uživatel, který si prohlíží vystavený obrázek, již nemá přístupné nabídky s nástroji Cabri. Může jen přetahovat objekty po nákresně, tím měnit jejich polohu, popř. tvar, velikost a tak modifikovat i objekty od nich odvozené, nemůže však již žádný další objekt přidat. K dispozici jsou jen nástroje CabriJavy umístěné na liště v dolní části okna apletu.
Natahování WWW stránky s javovským apletem trvá obecně o něco déle než je tomu u standardní stránky obsahující pouze text. Důvodem prodlevy je náročnější komunikace mezi naším počítačem a vzdáleným webovským serverem, na kterém jsou aplet a samotný Cabri obrázek uloženy. Postupně se nám na stránce vymezí okno apletu _ předdefinovaný prostor, ve kterém se bude odehrávat interaktivní geometrická situace, a do něj se nahraje obrázek. Nástrojová lišta (pokud nebylo její zobrazení naprogramováno, poklepeme v okně apletu) nám dává k dispozici několik funkcí (viz obr. 1) _ krokování konstrukce vpřed a vzad (obdoba historie v Cabri), možnost posouvat obrázek v okně apletu, aktivaci stopy zvoleného objektu, animační pružinu a možnost stáhnout si originální Cabri obrázek. Přiblížíme-li se kurzorem do blízkosti objektu, zobrazí se stejně jako v Cabri jeho identifikace _ Tento bod, Tato přímka, Tento trojúhelník, Tato kuželosečka apod.

Obr 1. Nástrojová lišta a její funkce
Příklad 1. Přesvědčte se, že výšky v libovolném trojúhelníku procházejí společným bodem.
Podívejme se nyní na konkrétní příklad stránky s CabriJava apletem, která je věnována učivu 6. ročníku základní školy (může se např. jednat o stránku z internetové učebnice, kterou dáme žákům k prostudování formou vlastního experimentování). Po nahrání WWW stránky máme k dispozici výkladový text a okno apletu, ve kterém je znázorněn trojúhelník ABC s výškami (viz obr. 2). Všechny tři procházejí jedním bodem a tato situace se nezmění, budou-li uživatelé tahat za jednotlivé vrcholy a trojúhelník tak deformovat. Přitom mohou pozorovat, kam padne ortocentrum v závislosti na typu trojúhelníka. Je vidět, že CabriJava s sebou přináší ještě jeden užitečný efekt: na stránce není nutní vystavovat tři samostatné (ale hlavně statické) obrázky _ jeden s ostroúhlým, druhý s pravoúhlým a třetí s tupoúhlým trojúhelníkem. Každou situaci je možné pohodlně vymodelovat v okně apletu.

Obr 2. Okno prohlížeče po načtení stránky obsahující naučný text a aplet CabriJavy.
Příklad 2. Sestrojte kružnici opsanou trojúhelníku ABC.
I další možnosti CabriJavy si ukážeme na jednoduchém příkladu z učiva 6. ročníku ZŠ. Tentokrát už použijeme nástrojovou lištu _ konkrétně funkce Krok vpřed a Animace krok za krokem. Na obrázku je nejprve vykreslen trojúhelník ABC. Stiskneme tlačítko Krok vpřed na nástrojové liště, čímž se objeví osa strany. Dalším stiskem téhož tlačítka sestrojíme další osu a takto postupujeme až k finálnímu kroku konstrukce kružnice opsané trojúhelníku ABC (viz obr. 3). Samozřejmě je možné se vrátit i o krok zpět a určitou fázi konstrukce si projít ještě jednou. Obrázek lze přitom dynamicky měnit taháním za vrcholy a můžeme tak pozorovat, kam padne střed kružnice opsané pro různé typy trojúhelníků _ opět v jediném obrázku na WWW stránce. Tento příklad názorně ukazuje jiný typ využití CabriJavy v internetových učebnicích při výkladu látky. Je lépe, je-li žák svědkem průběhu konstrukce krok za krokem, než aby musel dešifrovat v hotovém obrázku, co bylo sestrojeno nejdříve, co poté a co nakonec. Pro "ušetření práce" jsme tu rovněž mohli využít jinou funkci nástrojové lišty, Animaci krok za krokem. Jedná se prakticky o totéž s tím rozdílem, že se jednotlivé konstrukční kroky provádějí automaticky a nečeká se na stisk tlačítka.

Obr 3. Okno apletu postupně zachycující vybrané konstrukční kroky
Příklad 3. Jsou dány body A, B a kružnice k. Určete množinu těžišť trojúhelníků ABC, kde vrchol C leží na kružnici k.
Na tomto místě představíme nástroj lišty Stopa objektu, který umožňuje vykreslit stopu pohybujícího se objektu. Na nástrojové liště aktivujme funkci zanechávání stopy (Stopa ano/ne), klepneme na těžiště T, čímž jej označíme pro zanechání stopy, a opětovným klepnutím na tlačítko Stopa ano/ne přepneme kursor zpět do původního stavu. Táhneme bod C po kružnici k a současně dochází k "razítkování" nákresny bodem T (viz obr. 4a). Pohyb bodu C po kružnici je možné realizovat i pomocí tzv. animační pružiny. Bod T necháme označený tak, aby zanechával stopu, navíc k bodu C přiložíme nataženou pružinu (na nástrojové liště aktivujeme Natáhnout pružinu). Pohyb se pak uskuteční i bez našeho ručního přičinění (viz obr. 4b).
|
Obr. 4a Vytváření stopy těžiště taháním bodu bodu C po kružnici ručně |
Obr. 4b Animační pružina nasazená na bod C. |
Zastavme se ještě krátce u předcházejícího příkladu. Výše uvedená ukázka zachycující práci se stopou názorně demonstrovala genezi hledané množiny těžišť. K prezentaci závislosti výsledné kružnice na daných prvcích je však stopa _ stejně jako v Cabri _ nepoužitelná, neboť nesdílí dynamiku konstrukce. K tomuto účelu by se spíše uplatnila množina objektů, která je známa z Cabri. Změnou tvaru trojúhelníka nebo jeho polohy vůči dané kružnici se pak aktuálně překresluje i množina těžišť (viz obr. 5). Ovšem vzhledem k nemožnosti přidávat do apletu nové objekty je nutné, aby tato množina byla vykreslena již ve zdrojovém Cabri obrázku před jeho vystavením na web pomocí CabriJavy.

Obr 5. Změna výchozí situace přináší aktuální překreslení množiny bodů.
Poznamenejme ještě, že originální Cabri obrázek, který je uložen na webovském serveru, k němuž jsme se připojili, je nám rovněž k dispozici. Můžeme si jej stáhnout _ stačí jen využít funkci Stažení obrázku Cabri, která je také umístěna na nástrojové liště. S obrázkem pak můžeme dále pracovat s využitím všech nástrojů Cabri _ máme-li je ovšem na svém počítači instalováno.
Příklady, na nichž jsme CabriJavu popisovali v tomto článku, byly záměrně z geometrického hlediska velmi jednoduché. Přínos popisované metody pochopitelně roste s náročností prezentované látky.
Tvorba vlastních WWW stránek s CabriJava aplety. Jak na to?
Tento rychlokurs je věnován těm, kdo chtějí aktivně vytvářet webovské stránky ilustrované dynamickými geometrickými obrázky. Jakmile prohlížeč natáhne WWW stránku, objeví se vymezený prostor, ve kterém se bude odehrávat dynamická geometrie. Do tohoto "okna" pak směřuje výstup apletu. Jeho základem je obrázek uložený v souboru s příponou .fig, který jsme před tím vytvořili programem Cabri. Program Cabri a jeho zvládnutí je proto nezbytnou podmínkou pro tvorbu obrázků. Zbývá už jen integrovat obrázek do WWW stránky ve formě CabriJava apletu. K tomu stačí provést následující posloupnost kroků:
Vytvořte obrázek pomocí Cabri II _ můžete použít verze pod Windows, DOS nebo MacOS.
Vytvořte WWW stránku s doprovodným textem.
Abyste si mohli práci vyzkoušet na svém počítači, stáhněte si poslední verzi souboru CabriJava.jar (http://www-cabri.imag.fr/cabrijava/CabriJava.jar) a umístěte jej do toho adresáře, v němž máte uloženy i Cabri obrázky. Archív CabriJava.jar obsahuje všechny soubory CabriJavy v komprimované podobě.
Do zdrojového kódu WWW stránky přidejte následující řádky (pouze tučné řádky jsou povinné!):
<APPLET CODE="CabriJava.class"
archive="CabriJava.jar"
WIDTH=600
HEIGHT=400>
<PARAM
NAME=file VALUE=".../jmeno_obrazku.fig">
<PARAM
NAME=lang VALUE="cs">
<PARAM
NAME=border VALUE=3>
<PARAM
NAME=background VALUE=".../pozadi.jpg">
</APPLET>
Jakmile prohlížeč najde ve zdrojovém kódu párový příznak <APPLET>, nahraje zadaný aplet z webovského serveru a spustí jej. Zmíněný příznak umožňuje předávat informace o apletu (název, velikost vyhrazeného prostoru, umístění vzhledem k ostatnímu textu apod.).
Programátoři píší zdrojový kód apletu v jazyce Java (soubory s příponou .java), vytvořené soubory zkompilují překladačem Javy a obdrží binární soubory s příponou .class (tzv. třídy Javy), na které se pak odkazuje ve zdrojovém kódu webovské stránky. My se však o tvorbu tříd nemusíme starat, pro naše speciální geometrické účely nám totiž vše připravili již profesionálové v Grenoblu, odkud jsme si potřebné třídy stáhli (soubor CabriJava.jar).
Závěrem se seznámíme s některými parametry Javy obecně a CabriJavy speciálně a vysvětlíme si jejich význam.
povinné parametry Javy:
CODE: indikuje název třídy Javy (zde CabriJava.class), která se má vykonat. V názvu je nutné přesně dodržet velká a malá písmena!
WIDTH a HEIGHT: vymezují velikost oblasti, do níž má aplet výstup (v pixelech)
nepovinné parametry Javy:
CODEBASE: určuje cestu do adresáře obsahujícího soubory tříd Javy (může být umístěn i na jiném serveru, lze tedy místo stahování odkázat na soubor uložený na serveru UJF v Grenoble _ viz 3. bod návodu)
ARCHIVE: indikuje, že třídy jsou obsaženy v komprimovaném souboru (formát nazývaný v Javě jar _ jako java archiv) _ v případě CabriJavy používáme vždy a zadáváme CabriJava.jar
ALIGN neboli pozice: umísťuje aplet Javy vzhledem k okolí (top, bottom, middle, left, right,.) _ obdobné jako při umísťování jiných obrázků na WWW stránku
povinné parametry CabriJavy
parametrem lang zadáváme jazyk komunikace ('cs' - čeština, 'de', 'en', 'es', 'fr', ' it', 'nl', 'pt')
parametrem file odkazujeme na jméno a uložení zobrazovaného Cabri obrázku (souboru s příponou .fig)
nepovinné parametry CabriJavy:
background neboli pozadí: cesta k obrázku ve formátu GIF nebo JPEG, který se použije pro podklad apletu
bgcolor neboli barva pozadí: udává barvu pozadí pomocí šestnáctkového kódu RGB _ přednastavena bílá
border neboli ohraničení: číslo udávající šířku orámování _ přednastaveno 1
bordercolor neboli barva ohraničení: udává barvu orámování pomocí šestnáctkového kódu RGB _ přednastavena černá
Pro zadávání charakteristik apletu můžete použít i moderní HTML editory (např. volně šiřitelný FrontPage Express), pomocí nichž lze aplet specifikovat velice snadno a rychle.
Podívejme se na další nepovinné, ale velice užitečné rozšiřující parametry CabriJavy, které souvisejí s funkcemi již zmíněné nástrojové lišty:
autocontrol: ovládací lišta se automaticky zobrazí na začátku při spuštění apletu (obecně je přednastaveno "false"; je-li současně použit i parametr step, pak je přednastaveno "true")
<PARAM NAME="autocontrol" VALUE="true">
trace: definice objektů, které mají zanechávat stopu v případě pohybu _ např. "point 10" *). Stopa se pak vytvoří, i když uživatel žádný objekt neoznačí; mohlo být využito např. v příkladu č.3
![]()
<PARAM NAME="trace" VALUE="point 10">
![]()
<PARAM NAME="spring" VALUE="point 6 size 38,-12">
<PARAM NAME="step " VALUE="triangle 10">
Tímto parametrem určujeme zobrazené stádium rozpracovanosti konstrukce. Setkali jsme se s tím třeba u příkladu č. 2, kde prvním zobrazeným objektem byl trojúhelník, ačkoliv ve zdrojovém Cabri obrázku byly provedeny i následující kroky konstrukce kružnice opsané).
<PARAM NAME="loop" VALUE="true">
*) tyto interní identifikátory objektů se zobrazují při stisku ALT, je-li zobrazena nástrojová lišta a ukážeme-li současně kurzorem na objekt nebo pružinu
Poděkování G. Kuntzovi _ tvůrci CabriJavy _ za poskytnutí informací a materiálů, které pomohly k napsání tohoto textu a A. Vrbovi za významnou pomoc při tvorbě článku.
Reference
[1] Kuntz, G.: Dynamic Geometry and the World Wide Web: http://www.cabri.net/~kuntz/INET98/
[2] Oficiálná stránka CabriJavy: http://www.cabri.net/cabrijava/
[3] Poslední verze souboru CabriJava.jar: http://www-cabri.imag.fr/cabrijava/CabriJava.jar
[4] Vrba, A.: Oživlá geometrie, MFI roč. 10 (2000), č. 2 a 3
[5] Javovská nadstavba Sketchpadu: http://forum.swarthmore.edu/dynamic/java_gsp/
[6] Javovská nadstavba Sketchpadu: http://www.keypress.com/sketchpad/java_gsp/index.html
[7] Oficiální stránka Javy společnosti Sun: http://java.sun.com/
[8] Grand, M.: Java 1.1 Referenční příručka jazyka, 2. vydání. Computer Press, 1998.