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 SZMOK, 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.)