12. Grafika és hang A számítástechnika és a programozás két igen vonzó terüle- tével foglalkozik ez a fejezet. Pedagógiai szempontból kiváló lehetőség akár kezdők oktatására, akár régebbi ismeretek gya- koroltatására, ismétlésére. Erre a lehetőségre utal is az el- ső alfejezet címe. Ugyanakkor ma már DIGITART néven egy új művészeti ág bon- takozik: Escher, Vasarely és mások hagyományos nyomdokait kö- vetve grafikához, montázsokhoz a művészek segítségül hívják a számítógépet. Ebbe a kategóriába egyaránt beletartozik a videofelvételek manipulálása, érdekes (függvénnyel megadott) görbeseregek kinyomtatása, és irányítottan véletlenszerű raj- zolatok válogatása. Minthogy ehhez komoly művészi érzék, lá- tásmód is szükséges, célunk nem lehet ilyen alkotások oktatá- sa, de szeretnénk ezt a világot is érzékeltetni. Véletlen látványnak nevezzük, amikor egy grafikus ábra pa- raméterei véletlen számok. Legegyszerűbb esetben futtatunk egy ilyen programot, és feljegyezzük, milyen paraméterek mel- lett néz jól ki. Haladóbb változat, amikor programunk - pon- tosan az eddigi tapasztalatok alapján - nem teljesen 'össze- vissza' válogat, hanem igyekszünk 'esztétikusan irányítani' a véletlenszám generálását. Ilyen algoritmusok segítségével fontos fogalmak (oszthatóság, közös osztó,) mélyíthetők el. ltalában a grafikus utasítások a nyelvek géptől leginkább függő részei. Az alábbiakban olyan lehetőséget (hardver + szoftver) képzelünk el, ahol egyetlen utasítással lehet vona- lat húzni, kört rajzolni. További előny, ha polárkoordinátás megjelenítés is lehetséges, azaz, ha LOGO (teknőc) grafika is rendelkezésre áll. A színezés, és a hang még ennél is válto- zatosabb, ezek ügyében először okvetlenül át kell tanulmá- nyozni a gép kézikönyvét. Nem győzzük eléggé hangsúlyozni a kísérletezést, mint tanulási módot, ez itt mindennél fonto- sabb és gyümölcsözőbb! Megjegyezzük, hogy a mellékelt ábrák nem feltétlenül mé- rethűek, a fő hangsúly mindig az arányokon van. Valami ilyes- mit kell a képernyőre 'varázsolni'. Javasolt irodalom: 1. Komáromi I.: Számítógépes grafika. KSH SZMOK, 1980. 2. Votisky Zs. (Szerk.): Etüdök személyi számítógépekre. Gondolat Kiadó, 1984. 3. Major Z. - Valovits I.: A BASIC feladatok tükrében. Tankönyvkiadó, 1986. 4. Turcsányiné Szabó M. - D. Senftleben: A LOGO programozási nyelv. Műszaki Könyvkiadó, 1986. 5. Kepes J.: Mikroszámítógépes grafika. Műszaki Könyvkiadó, 1987. 12.1 Gyakoroltató grafika Már említettük, hogy a képernyőre való rajzolás kiváló gyakorlási lehetőség arra, hogy a tanulók alapfogalmakkal (azonosító, ciklus, elágazás, véletlenszám, tömb stb.) alapo- san megismerkedjenek. Ennek az alfejezetnek határozottan ez a célja, tulajdonképpen a második fejezet (Elemi programozás) kiegészítésének is tekinthető. Ismét hangsúlyozzuk, hogy minimális elvárás a géppel szem- ben, hogy szakaszt és kört rajzoljon egy utasítással (álta- lában DRAW, LINE vagy PLOT, illetve CIRCLE). Ezek persze ki- válthatók segédprogramokkal, de ez a megoldás nehézkes és ál- talában lassú. Némi trigonometriával megoldhatók a különböző forgatások is, de mint jeleztük, komoly előny a LOGO-grafika, az ellipszis és az ívek lehetősége. Az ilyen igényt mindig jelezzük. Viszonylag kevés feladat vonatkozik a színekre. Ennek az az oka, hogy ez borzasztóan eltér az egyes gépeknél, nagyon nehéz általános feladatokat megfogalmazni. Rengeteg próbálko- zásra van szükség, amire persze buzdítunk is. 12.2 Geometriai transzformációk Az iskolai oktatásban eléggé elkülönül az elemi (szerkesz- téses, bizonyításos) geometria és a koordinátageometria. Idő- ben is különállnak és a feladatok, eredmények is jócskán kü- lönböznek. Jelen alfejezet elsődleges célja, hogy egy kis hi- dat építsen e két anyagrész közé. Sokan mások is észrevették már, hogy erre a számítógép grafikus lehetőségei kiválóan al- kalmasak. Az esetleg nem túl vonzó ismeretek intenzív gyakoroltatá- sát azzal próbáljuk ellensúlyozni, hogy gyakran generáltatunk látványos rajzokat a képernyőre. Ezeket persze ki-ki tetszése szerint változtathatja, tovább színesítheti. Az itt gyakorolt ismeretek segítségével az előző alfejezetben készített vélet- len látványok messze felülmúlhatók: némi ízelítőt szeretnénk adni a számítógépes (grafikai) művészetből. Még egyszer hangsúlyozzuk a kísérletezés szerepét. Az áb- rák előállításához gyakran szükségesek bonyolultabb összefüg- gések. A vizuális próbálkozások jelentősége pontosan az, hogy szinte rávezetnek az összefüggések felismerésére. Ezután már a megfogalmazás (algoritmizálás) is könnyebb. Az alfejezet első felében az ismert transzformációkat gyűjtöttük össze, a második felében ezek alkalmazásával gene- rálunk érdekesebb látványokat. A többszörös eltolás (, elfor- gatás) itt mindig azt jelenti, hogy az eredeti síkidomot egy távolság (, szög) többszöröseivel transzformáljuk sorban egy- más után, és így egybevágó alakzatok egy sorozatához jutunk. A gép még egyenes vonalakat is ritkán képes húzni, szinte mindent törött szakaszokkal közelít. Az ebből adódó úgyneve- zett interferencia-jelenséget használjuk ki az utolsó harmad- ban: végül egészen mást látunk, mint amit rajzolunk. A sűrűn egymás mellett elhelyezkedő töréspontok az eredetinek szinte ellentmondó rajzolatokat hoznak létre. 12.3 Függvényábrázolás Ez az alfejezet - a néhány konkrét függvénnyel kapcsolatos feladat kitűzésén túlmenően - az egyváltozós valós függvények grafikonjának a derékszögű koordinátarendszerben történő áb- rázolásának általános kérdéseivel foglalkozik. A feladatok megoldása után olyan programok birtokába juthatunk, amelyek- kel szinte bármely függvény grafikonjának bármely részletét (tetszés szerinti méretben) ábrázolni tudjuk. Példát mutatunk paraméteres alakban adott görbék előállí- tására is; a görbét ilyenkor úgy tekinthetjük, mint egy mozgó pont pályáját, azaz egy adott időintervallum minden értékéhez hozzárendeljük valamilyen módon a sík egy-egy pontját. Ezt két, az adott [t1;t2] intervallumon értelmezett egyváltozós valós függvény, x és y segítségével tehetjük meg: a mozgó pont a t időpontban a sík (x(t);y(t)) koordinátájú pontjában tartózkodik. (Lásd például a középiskolás matematikakönyvek- ben az egyenes paraméteres vektoregyenletével foglakozó ré- szeket!) Egyes feladatoknál a pálya egyenlete adott, így a paraméterezést magunknak kell elvégeznünk. Néhány görbét egyszerűbb polárkoordinátás egyenlete alap- ján megrajzolnunk. A polárkoordináta-rendszerben a sík pont- jait egy rögzített félegyenes végpontjától (origó) mért tá- volsággal (r) és az origóból az adott pontba húzott szakasz és a félegyenes által bezárt (természetesen előjeles) szöggel (s) jellemezhetjük. gy például ha egy pont polárkoordinátái (10;-20), akkor ez azt jelenti, hogy ez a pont a rögzített félegyenes végpontjából induló, azzal negatív (az óramutató járásával megegyező) irányban 20 fokos szöget bezáró, 10 egy- ség hosszúságú szakasz (másik) végpontja. 12.4 Rekurzív ábrák Ebben az alfejezetben ábrasorozatokkal fogunk foglalkozni. Ezeket rekurzív módon fogjuk definiálni, azaz minden ábraso- rozatnak megadjuk az első elemét, továbbá azt a szabályt, amelynek segítségével az ábrasorozat n. eleméből megkaphatjuk az n+1. elemét (az aktuális n értéket a rekurzió szintjének vagy mélységének nevezzük). Ha az ábrasorozat konvergens (en- nek pontos definiálása nagyon bonyolult, de szemléletesen vi- lágos, hogy mit értünk ezen), akkor 'határértékét' az ábraso- rozat határgörbéjének fogjuk nevezni. Az így kapott határgörbék - mint látni fogjuk - 'elférnek' a sík egy korlátos tartományában, mégis 'végtelen hosszúak'; más szóval: olyan görbék, amelyek 'kitöltik' a sík egy bi- zonyos hányadát. Mondhatjuk úgy is, hogy egy dimenziónál 'több', de két dimenziónál 'kevesebb' a kiterjedésük. Ez az észrevétel teszi szükségessé a dimenzió fogalmának kiterjesz- tését, a következő módon: adott egy T (síkbeli) alakzat, to- vábbá egy E(n) 0-hoz konvergáló, pozitív számokból álló soro- zat. Jelölje N(n) azt a legkisebb számot, ahány darab E(n) élhosszúságú négyzettel teljesen le tudjuk fedni a T alakza- tot! Értelmezzük a D számsorozatot minden n természetes szám- ra a D(n) := (log(N(n))) / log(1/(E(n))) formulával! Amennyiben D konvergens, és határértéke d, úgy ezt a d értéket nevezzük T dimenziójának. Azokat az alakzato- kat, amelyek dimenziója nem egész szám, fraktáloknak hívjuk. Felhívjuk a figyelmet arra, hogy a kitűzött feladatok meg- oldására szolgáló algoritmusok közül a rekurzívak általában nagyságrendekkel egyszerűbbek, mint a nem rekurzívak. Ezért célszerű LOGO-ban, esetleg COMAL-ban megoldani a feladatokat. E két nyelv mellett szól az is, hogy 'teknőcgrafikát' hasz- nálhatunk bennük, amely egyszerüségénél fogva szintén meg- könnyíti a rajzolást. 12.5 Térbeli ábrázolás A térbeli ábrázolás számítógéppel azt jelenti, hogy a mo- nitor (tv) kétdimenziós képernyőjén háromdimenziósnak tünő ábrákat készítünk. Hasonló problémáról van szó, amikor papír- ra szeretnénk rajzolni. Alapvetően kétfajta ábrázolás szerepel feladatainkban: az axonometrikus és a perspektivikus ábrázolás. Szinte minden feladat megoldható mindkét módon, a feladatok zöme axonomet- rikus ábrázolásra készült. Ha a feladatot perspektivikusan célszerű megoldani, akkor ezt a feladat szövege tartalmazza. A színezéssel kapcsolatos feladatoknál korlátot szab a használt gép adottsága. Amennyiben nem tudunk az adott gépen elegendő színt használni, úgy színezés helyett a terület meg- felelő csíkozása jöhet szóba. Amikor a monitor síkbeli képernyőjén térbeli koordináta- rendszert ábrázolunk, akkor a koordináta-síkok egyike sem esik egybe a tv képernyőjével. ltalános az olyan ábrázolás, amikor az xy síkra (mely vízszintes) rálátunk, s szembe ve- lünk a függőleges z tengely van. 12.6 Hang A különböző számítógépek hanggenerálása nagyon eltérő. Van amelyik nem tud hangot generálni, van amelyik egy szólamban, van amelyik több szólamban is tud. A hang megszólaltatásának módja is gépenként más és más. Van ahol a hangoknak megfelelő számokat egyszerűen félhangonként (pl. C - 1, Cisz - 2), van ahol a hangfrekvenciának megfelelően (pl. A - 440 (Hz)), van ahol egészen másként kéri a gép. A legtöbb esetben a hangerőt is változtathatjuk. A feladatoknak nem mindegyike oldható meg minden gépen, valamint lesz olyan feladat, amelyik az egyik gépen könnyű feladatnak számít, a másikon nehéznek. Mindenképpen fontos, hogy a feladat megoldásának elkezdése előtt alaposan tanulmá- nyozzuk az adott gép lehetőségeit. Megegyezhetünk abban, hogy a kisoktáv jelölésére a kisbe- tűket (c,d,e,...), az egyvonalas oktáv jelölésére az aposzt- rófot (c',d',e',..), a kétvonalas oktáv jelölésére a dupla aposztrófot (c'',d'',e'',...) használjuk. A hangok beolvasá- sánál kis oktáv esetén a megfelelő billentyűt, egyvonalas ok- táv esetén a SHIFT-elt billentyűt, kétvonalas oktáv esetén a C=-vel (Symbol Shift-tel) együtt lenyomott megfelelő billen- tyűt érdemes használni. Megegyezhetünk abban is, hogy kottát rajzoló feladatok esetén azt violinkulcsban írjuk. (Természetesen megírhatók ezek a programok másfajta beolvasással, más kulcsban is.)