kovács emőd - matematikai és informatikai intézetaries.ektf.hu/~emod/bevgraf/koma.pdf · 2.1...

66
Kovács Emőd Fejezetek a számítógépi grafikából

Upload: others

Post on 05-Jan-2020

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Kovács Emőd - Matematikai és Informatikai Intézetaries.ektf.hu/~emod/bevgraf/KOMA.pdf · 2.1 Beviteli eszközök Két alapvető grafikus beviteli művelet van. Egy adott pozíció

Kovács Emőd

Fejezetek a számítógépi grafikából

Page 2: Kovács Emőd - Matematikai és Informatikai Intézetaries.ektf.hu/~emod/bevgraf/KOMA.pdf · 2.1 Beviteli eszközök Két alapvető grafikus beviteli művelet van. Egy adott pozíció

2

1. ELŐSZÓ ......................................................................................................................... 4

2. GRAFIKUS HARDVER ÉS SZOFTVER ................................................................... 6

2.1 BEVITELI ESZKÖZÖK ...................................................................................................... 6 2.2 KIVITELI ESZKÖZÖK....................................................................................................... 7

2.2.1 Hardcopy perifériák................................................................................................ 7 2.2.1.1 Asztali és hengeres rajzgép ............................................................................. 7 2.2.1.2 Nyomtatók ....................................................................................................... 8

2.2.2 Megjelenítők, monitorok........................................................................................ 9 2.2.3 Vezérlő kártyák. ................................................................................................... 12 2.2.4 Különböző BGI driver-ek beillesztése Pascal programunkba ............................. 14

2.3 GRAFIKUS SZOFTVER ................................................................................................... 16

3. A SZOFTVEREK HORDOZHATÓSÁGA ÉS A GRAFIKUS SZABVÁNYOK:. 20

4. GRAFIKUS KÉPEK KÓDOLÁSA, TÁROLÁSA ÉS HASZNÁLATA ................. 23

4.1 BEVEZETÉS .................................................................................................................. 23 4.2 KÓDOLÁSI ELJÁRÁSOK................................................................................................. 24

4.2.1 Huffman kód ........................................................................................................ 24 4.2.2 RLE algoritmus (Run-length encoding)............................................................... 25 4.2.3 LZW algoritmus (Lempel-Ziv-Welch)................................................................. 26 4.2.4 Hierarchikus megközelítés ................................................................................... 28 4.2.5 Aritmetikai tömörítés ........................................................................................... 29 4.2.6 Adatvesztéses tömörítés ....................................................................................... 29

4.3 GRAFIKUS KÉPFORMÁTUMOK....................................................................................... 30 4.3.1 Állóképek ............................................................................................................. 30 4.3.2 Mozgókép formátumok ........................................................................................ 32

4.4 VEKTOR- ÉS RASZTERGRAFIKA ÖSSZEHASONLÍTÁSA.................................................... 34 4.4.1 Raszteres grafika .................................................................................................. 34 4.4.2 Vektorgrafika ....................................................................................................... 35

4.5 GRAFIKUS KÉPEK A WINWORD SZÖVEGSZERKESZTŐBEN ÉS AZ OLE TECHNIKA....... 36 4.5.1 Képek beágyazása (Embedding) és csatolása (Linking) ...................................... 37

4.5.1.1 Meglevő állomány csatolása a dokumentumhoz:.......................................... 37 4.5.1.2 Meglevő állomány beágyazása a dokumentumba: ........................................ 38 4.5.1.3 Még nem létező objektum újként való beágyazása a dokumentumba: ......... 38 4.5.1.4 Beágyazott objektum kapcsolttá alakítása:.................................................... 38 4.5.1.5 Kapcsolt objektum beágyazottá alakítása:..................................................... 38 4.5.1.6 OLE technika hátrányai ................................................................................. 38

5. NÉHÁNY ALAPVETŐ RASZTERES ALGORITMUS.......................................... 39

5.1 WINDOW-VIEWPORT TRANSZFORMÁCIÓK .................................................................... 41 5.2 UNIFORM ESZKÖZ TRANSZFORMÁCIÓ........................................................................... 43 5.3 SZAKASZ RAJZOLÁSA................................................................................................... 45

5.3.1 Egyszerű növekményes módszer ......................................................................... 45 5.3.2 Bresenham-algoritmus ......................................................................................... 46

5.4 KÖR ÉS ELLIPSZIS RAJZOLÁSA...................................................................................... 51 5.4.1 Origó körüli forgatás: ........................................................................................... 54

Page 3: Kovács Emőd - Matematikai és Informatikai Intézetaries.ektf.hu/~emod/bevgraf/KOMA.pdf · 2.1 Beviteli eszközök Két alapvető grafikus beviteli művelet van. Egy adott pozíció

3

5.4.2 A midpoint (középonti) algoritmus ...................................................................... 56

6. REKURZÍV GÖRBÉK ÉS A TEKNŐC GRAFIKA................................................ 59

6.1 REKURZIÓ:................................................................................................................... 59 6.2 A REKURZÍV GÖRBÉK: .................................................................................................. 59

6.2.1 Fraktálok: ............................................................................................................. 60 6.2.2 Hilbert görbe: ....................................................................................................... 63

7. IRODALOM................................................................................................................. 65

Page 4: Kovács Emőd - Matematikai és Informatikai Intézetaries.ektf.hu/~emod/bevgraf/KOMA.pdf · 2.1 Beviteli eszközök Két alapvető grafikus beviteli művelet van. Egy adott pozíció

Fejezetek a számítógépi grafikából

4

1. Előszó A Eszterházy Károly Tanárképző Főiskola Számítástechnika Tanszékén 1989-óta folyik “Számítástechnika tanár” (főiskolai végzettség) szakképzés. A tanszék a MKM engedélyével alapította meg a szakot. Később a többi főiskola is szakindítási kérelemmel élt a már létező szakra, így most már az országban a tanárképző főiskolák mindegyikén képeznek számítástechnika szakos általános iskolai tanárokat. A képzési célnak, és a képzési követelményrendszernek megfelelően alakítottuk ki a kredit rendszerben a tanegységlistánkat. A tanegységlista közlése nélkül a számítógépi grafika oktatásának ismertetésére szorítkozunk.

Két tanegység tarozik a számítógépi grafika oktatási területéhez. Elemezzük ki részletesen ezen tantárgyak célját és tartalmát. Természetesen a tantárgyak tartalmának kialakításánál figyelembe vettük a képzési köve-telményrendszert, valamint a bel- és külföldi tapasztalatokat.

Grafikus és képi információk kezelése

A tantárgy célja: a komputergrafikának, ennek az igen fiatal diszciplínának a megismerése, a grafikus hard-ver és szoftver eszközök tanulmányozása és használata. A tantárgy tartalma:

− A számítógépi grafika tárgya. Bevezetés a grafikus adatok feldolgozásába. − A számítógépi grafika hardvere (Be és kiviteli eszközök: monitorok, digitalizálók, rajzgépek fajtái

és működési elvük, − Grafikus kártyák (Hercules, VGA, SVGA, VESA szabvány). − Turbo Pascal grafika (áttekintés). − Grafikus képek kódolása, tárolása, használata (Huffmann kód, LZW kód; BMP, PCX, GIF, JPEG,

WMF, TIFF, AVI, MPEG stb. formátumok.). − Alapvető rajzoló eljárások. Szakasz rajzolása és lehatárolása . Kör és körív rajzolása. Gráf és ív

rajzolása. − Anti-aliasing (szépséghibák kijavítása), elvesző információk, motion-blur. − Ábraszerkesztő használata, grafika a szövegszerkesztő programokban. − Rekurzív görbék megvalósítása Logo vagy Fractint programmal.

Grafikus rendszerek

A tantárgy célja: a komputer grafikának haladó szintű elsajátítása, és annak megismertetése, hogy a geomet-ria hogyan tud ezen a tudományágon keresztül bekapcsolódni a termelésbe. A tantárgy tartalma:

− Homogén koordináták, koordináta transzformációk, ponttranszformációk. − Transzformációk a síkban (2D) és térben (3D): egybevágósági, hasonlósági, affin és projektív

transzformációk. − Tér leképezése síkra: ortogonális axonometria, klinogonális axonometria, perspektíva és centrális

projekció. − Görbék interpolációja: Lagrange interpoláció és Hermit interpoláció. − Görbék approximációja: Bézier görbék, B-spline-ok. − Másodrendű görbék és felületek. − Az y=f(x) és a z=f(x,y) függvények ábrázolása. − Görbék és felületek ábrázolása paraméteres egyenleteikkel. − Felületek approximációja: Bézier felületek, B-spline foltok. − Testmodellezés, poliéderek. − Láthatósági kérdések, algoritmusok: poliéderek láthatósága, tömör területek pásztává alakítása,

scan-line algoritmus, depth-sort algoritmus, z-puffer algoritmus, területfelosztó algoritmus, Ray-tracing.

− A grafikus nyelvek és szabványok (GKS, PHIGS,SRGP) A fenti tematikák megvalósításához próbálunk minden hasznosnak ítélt programot használni az oktatásban. Sajnos a hardver feltételeink behatárolják lehetőségeinket. Egyenlőre szinte csak PC kategóriájú számítógé-

Page 5: Kovács Emőd - Matematikai és Informatikai Intézetaries.ektf.hu/~emod/bevgraf/KOMA.pdf · 2.1 Beviteli eszközök Két alapvető grafikus beviteli művelet van. Egy adott pozíció

Beviteli eszközök

5

pekkel rendelkezünk, de ezek száma és minősége kielégítőnek mondható. Nemzetközi és hazai kapcsolata-ink, valamint az Internet segítségével tanulmányozzuk más egyetemek és főiskolák tematikáit. Természete-sen a fentebb megadott tematikák változhatnak, és változniuk is kell tartalmukban, hiszen a számítástechnika talán egyik legdinamikusabban fejlődő területe a komputergrafika. Bizonyára ezzel a bevezetővel sikerült áttekintést adnunk a főiskolán folyó oktatási munkánkról. Kollégáim, ismerőseim véleménye szerint az itt tanított ismeretek nagy része igen jól használható a közoktatásban. Ezen vélemények ösztönöztek arra, hogy elkészítsük ezt az írásos anyagot megpróbálva összegyűjteni olyan feje-zeteket a számítógépi grafika területéről, amelyek hasznosan forgathatóak a közoktatásban is. Munkánkat korántsem tekintjük befejezetnek. A közeljövőben szeretnénk még néhány fejezetet elkészíteni, hiszen java-részt csak a Grafikus és képi információk kezelése tanegység témaköreit tárgyaltuk. A Grafikus rendszerek témakörei közül is számtalan lehet érdekes a közoktatásban, amelyek indokolttá teszik munkánk folytatását. A szövegben nem hivatkoztunk a szakirodalomra, de a függelékben megtalálhatóak a kapcsolódó magyar és idegen nyelvű könyvek és folyóiratok címei. Megpróbáltuk az összes általunk ismert és hasznosnak tartott Magyarországon beszerezhető könyveket is felsorolni. Véleményünk szerint ez a gyűjtemény sok segítséget ad a szakterület iránt érdeklődő olvasók számára. Eger, 1997. március a szerző

Kovács Emőd

Page 6: Kovács Emőd - Matematikai és Informatikai Intézetaries.ektf.hu/~emod/bevgraf/KOMA.pdf · 2.1 Beviteli eszközök Két alapvető grafikus beviteli művelet van. Egy adott pozíció

Fejezetek a számítógépi grafikából

6

2. Grafikus hardver és szoftver A számítógépi grafika egyik legismertebb területe a hardver és szoftver eszközök használata. A felhasználók, oktatók és diákok többsége rendelkezik ismeretekkel ezekről az eszközökről. Minden iskolában most már a NAT előírása szerint is tanítani kell hardver ismereteket. Ezeken az órákon elhangzott tananyag nagy része a témakörünkbe bele tartozik, ezért is tárgyaljuk a számunkra fontos eszközöket, de nem azonos alapossággal. Ezt azért tesszük így, mert egyrészt nem akarjuk untatni az olvasót, másrészt a már említett előismeretekre alapozunk.

2.1 Beviteli eszközök Két alapvető grafikus beviteli művelet van. Egy adott pozíció megkeresése és egy már meglevő grafikus objektum azonosítása, kiválasztása további feldolgozás céljából. A beviteli eszközöket nem ismertetjük részletesen, feltételezve a könnyen elsajátzítható előismerteket, mivel a téma kifejtése számtalan könyvben megtalálható.

• Billentyűzet: A komputer grafikai alkalmazásokban is szerepet kaptak a funkcióbillentyűk és a különböző billentyűkombinációk. Sajnos a vágólap használatán kívül ezek nem szabványosak.

• Digitalizáló tábla, grafikus tábla: Főleg vonalrajzok térképek digitalizálására használt eszközök. A két eszköz között különbség csak a méretekben van. A digitalizáló pl. 150x200 cm addig a grafikus tábla mé-rete 20x20 cm-től 1x1 m-ig terjed. Az elsőt mérete miatt állványra szerelik, a másik asztalon is elhelyez-hető. Az elsőn egy kocsi a pozicionáló eszköz, a másikon lehet pálca, fényceruza, korong szálkereszttel vagy akár az egér is használható digitalizáló eszközként.

1. ábra. Digitalizálók • Joystick, egér és trackball: közös feladatuk a kurzor mozgatása a képernyőn.

Az egerek típusai: ⎯ Mechanikus egerek ⎯ Optomechanikus ⎯ Optikai egerek ⎯ Rádiófrekvenciás egerek

2. ábra. A mechanikus egér szerkezete

Page 7: Kovács Emőd - Matematikai és Informatikai Intézetaries.ektf.hu/~emod/bevgraf/KOMA.pdf · 2.1 Beviteli eszközök Két alapvető grafikus beviteli művelet van. Egy adott pozíció

Kiviteli eszközök

7

• Fényceruza és az emberi ujj: A fényceruza általában fotóoptikai cellát tartalmaz és a terminálhoz csatla-kozva a képernyőn tudunk vele pozícionálni. Az emberi ujj szintén szolgálhat beviteli eszközként a spe-ciális fóliával ellátott úgynevezett érintést érzékelő képernyőknél (touch-screen).

• GlidePoint: a Cirque Corporation (USA) által kifejlesztett eszköz, amely az egéralátéthez hasonlít leg-jobban, azonban egér nélkül működik. Ha össze kellene hasonlítani valamivel, leginkább egy kisméretű (49x66 milliméter) az előbb említetett touch-screen monitor felületéhez lehetne viszonyítani. A billentyű-zet mellé helyezve az eddigieknél jóval egyszerűbben kezelhető, elődeihez képest tartósabban és ponto-sabban pozícionálható vele a kurzor. Az alapjaiban új logikai felépítésű eszköznél ugyanis a kurzor moz-gását ujjunkkal irányíthatjuk, mégpedig igen nagy (a beállításoktól függően maximum 1000 millimé-ter/secundum) sebességgel. Az érintkező "egéralátét" három rétegből áll : az alsó és középső rétegben helyezkedik el a vízszintes, illetve a függőleges elmozdulásokat érzékelő elektrofólia, amelyre egy védő-film kerül, s ezen csúsztatjuk az ujjunkat. Az elektrofóliák jeleit a szerkezetbe épített processzor dolgozza fel, és küldi a számítógépbe.

• Optikai olvasók (Image Scanners): Ezek az eszközök végig pásztáznak egy papírlapot és annak felületét képpontokra bontják. A képpontok értéke az alkalmazott bitek számától függően lehet 0-1, vagy egy szürkeskála (grey scale), vagy egy színskála értékei. A szkennerre jellemző a lapméret, a felbontás (dpi), valamint a színek ill. a szürkeárnyalatok számának fölismerése. Léteznek kézi- és lapszkennerek, vala-mint vonalkód olvasók. A bevitt kép részleteinek felismerése és azonosítása jelentős szoftver probléma. Ebbe a témakörbe tartozik, a karakterfelismerés, az aláírás felismerés, a számjegyek azonosítása, vala-mint a vonalkód (barcode) bevitele.

3. ábra. Szkennerek

2.2 Kiviteli eszközök

2.2.1 Hardcopy perifériák

Ezek a berendezések a képeket automatikusan állítják elő tartós alakban papíron, filmen, mikrofilmen, fólián, pausz papíron vagy hasonló anyagon. A mechanikus rajzolócsúccsal rendelkező hardcopy perifériákat rajz-gépeknek nevezzük.

2.2.1.1 Asztali és hengeres rajzgép Az asztali vagy síklapos rajzgépeknél a síkban fekvő papíron egy rajzoló csúccsal ellátott kocsi fut. A henge-res vagy dob rajzgépek elve ugyanaz, mint az asztali, csak az egyik irányban a papír tetszőlegesen hosszú lehet. A rajzgépek elsősorban mérnöki munkáknál (nagyméretű rajzok A/3, A/2, A/1, A/0) használhatóak ki elő-nyösen. Aki ilyen vásárlására szánja magát a következő paraméterek alapján fogalmazhatja meg a kívánal-mait:

∗ Rajzterület mérete (Csupán síkplotternél. A dobplottereknél a rajzterület szélessége, és a tekercs-papír hossza a mérvadó.)

Page 8: Kovács Emőd - Matematikai és Informatikai Intézetaries.ektf.hu/~emod/bevgraf/KOMA.pdf · 2.1 Beviteli eszközök Két alapvető grafikus beviteli művelet van. Egy adott pozíció

Fejezetek a számítógépi grafikából

8

∗ Felbontóképesség (A tintasugaras nyomtatófejjel rendelkező korszerű típusoknál elérheti a 720 dpi-t is.)

∗ Vonalvastagság (Csupán a műszaki rajzeszközzel rajzoló – közismertebb nevén csőtoll – plotte-reknél. Általában 0.1 mm és 2 mm közé esik. Ma már a tollas rajzgépeket szinte teljesen kiszorít-ják a tintasugaras társaik.)

∗ Rajzolási sebesség (Ez határozza meg a rajz várható elkészülésének idejét. Mértékegysége a vona-lak húzási sebességéből adódik : 300...1500 mm/s.)

∗ Ismétlési pontosság (Ugyanazon ábrán vagy annak részletén újból végighaladva mennyi eltérésre kell számítani. Hasonló tulajdonság a visszaállási pontosság is. Jobb típusoknál néhány századmil-liméteres érték.)

4. ábra. Hengeres rajzgép A felbontóképesség fogalmát mindenképpen pontosítanunk kell. Két fogalom tartozik ide, a címezhetőség (addressability) és a pont méret (dot size). • Pont méret: az output eszköz egy pontjának a mérete, az átmérője. • Címezhetőség: Az egy inch-en elhelyezhető nem feltétlenül elkülönülő pontok száma. Mértékegysége:

DPI= Dots per inch . A címezhetőség értéke pontosan a reciproka a két szomszédos kör alakú pont kö-zéppontjai közötti távolságának (Interdot distance).

Általában akkor megfelelő a pont méret, ha valamivel nagyobb mint az interdot size. A fentiek értelmében a felbontás valójában összefüggésben van a pont mérettel és általában kisebb, mint a címezhetőség. Ezért úgy vizsgálhatjuk a felbontást, hogy függőleges vonalakat húzunk a lehető legközelebb egymáshoz, hogy még különbözőnek látszanak. Pl. ha 40 fekete vonalat elválaszt 40 fehér 1 inch-en, akkor azt mondjuk, hogy a felbontás 80 vonal per inch.

2.2.1.2 Nyomtatók Ezt a témakört csak felsorolás szintjén ismertetjük, feltételezve a könnyen megszerezhető előismereteket, mivel a téma kifejtése számtalan könyvben megtalálható.

Pontmátrix nyomtatók: Lapnyomtatók:

Tűs vagy mátrix nyomtatók Lézernyomató (Lézerxerografikus nyomtató)

Tintasugaras nyomtatók Ionsugaras nyomtató

Hőnyomtató

A nyomtatók kiválasztásának szempontjai:

Page 9: Kovács Emőd - Matematikai és Informatikai Intézetaries.ektf.hu/~emod/bevgraf/KOMA.pdf · 2.1 Beviteli eszközök Két alapvető grafikus beviteli művelet van. Egy adott pozíció

Kiviteli eszközök

9

∗ Nyomtatási minőség , felbontás (300x300, 600x300, 600x600, 720x720 dpi, stb.) ∗ Üzemelési költségek (tintapatron , festékszalag, stb.) ∗ Speciális igények (fólia, InkJet vagy LeserJet papír, stb.) ∗ Leporellóra képes-e nyomtatni (toló, húzó traktor) ∗ Maximális nyomtatható méret (A/4, A/3, A/2, >A/2, egyéb méretek) ∗ Egyszerre nyomtatható példányszám (egy példány, több példány) ∗ Színes vagy fekete-fehér ∗ Nyomtatási sebesség (karakter/secundum, lap/perc) ∗ Nyomtatási leterheltség adott időszakra (napi, havi, éves példányszám) ∗ Karbantartási költségek ∗ Garanciális feltételek (szervizellátottság) ∗ Támogatás különféle szoftverekhez (driverek)

Belátható, hogy csupán szövegnyomtatással nem derülnek ki a nyomtatók hibái. Aki komolyabb mustrát akar tartani, az mindenféleképpen grafikai feladatokkal teszteljen. Legnehezebb nagyméretű középszürke foltot előállítani, mert ekkor minden hiba –mechanikai, festékezési, szoftverfüggetlen− azonnal láthatóvá válik. Teljesen fekete foltot tintasugaras készülékkel −átázás, bántó meghullámosodás nélkül− szinte lehetetlen jó minőségben előállítani. Kivételek ez alól az olyan típusok amelyek melegítéssel szárítják a papírt. A sokféle árnyalat igényli a legtöbbet a nyomtató részéről. A különböző fedettségű és méretű rendezett ponthalmazok nyomtatása, ami nagyobb felületű, átmenetes kép, vagy rajzelemek esetén elkerülhetetlen sávozottságot okoz.

5. ábra. Lapnyomtató

2.2.2 Megjelenítők, monitorok

A megjelenítők alapvetően két csoportba sorolhatók: vannak saját fényűek (emissziós) és vannak amelyek valamely külső fényforrás fényét hasznosítják (nem emissziósak). Az elsőre példa a TV-nél is használt ka-tódsugárcső (Cathode Ray Tube, CRT), a másodikra példa a folyadékkristályos megjelenítő (Liquid Crystal Display, LCD).

6. ábra. CRT megjelenítő

Page 10: Kovács Emőd - Matematikai és Informatikai Intézetaries.ektf.hu/~emod/bevgraf/KOMA.pdf · 2.1 Beviteli eszközök Két alapvető grafikus beviteli művelet van. Egy adott pozíció

Fejezetek a számítógépi grafikából

10

Működési elvük alapján: • CRT: a katódsugár ágyú elektronsugarat állít elő, amely különböző maszkokon és eltérítőkön áthaladva

jut el a foszforral bevont üveglapra. A gerjesztés miatt a foszfor rövid ideig világít. A folyamatos világí-tás eléréséhez a képernyőt újra és újra frissíteni kell.

• Képtárolós képernyő: Szintén CRT elvű, de a kép közvetlenül a képernyőn tárolódik. A képernyőt egy állandó elektronnyaláb éri, amely biztosítja a már aktív foszforpontok továbbvilágítását. Sajnos ha módo-sítani akarjuk a kép egy részletétet, akkor az egész képet újra kell rajzolni, ezért interaktív munkára ke-vésbé alkalmas.

• LCD: A képernyő valójában több rétegből áll. Rétegek között található egy folyadékkristályos felület, amelynek kristályai megváltoztatják állapotukat (ugyanabba az irányba mutatnak) a hozzá kapcsolódó elektródák feszültségváltozásának hatására. A megváltozott állapotban másképpen verik vissza a fényt mint korábban.

• Aktív mátrixos LCD panelek: Jelenleg költséges, de igen népszerű megoldás a hordozható számítógépe-ken. Méltán népszerű, mert továbbra is az LCD-hez hasonlóan hordozható lapos, de már saját fényű szí-nes megjelenítő. A kijelző rácspontjaiban tranzisztorok találhatók, amelyek segítségével szabályozható a kristályok állapotváltozása. A tranzisztorok memóriaként is szolgálnak, megőrizve az állapotváltozást, így lehetővé téve a cellának az állandó működést, ami fényesebbé teszi, mintha állandóan frissíteni kelle-ne. A színeket a kristályok befesthetősége biztosítja.

• Plazma képernyő: A képernyő két üveglapja közötti teret nemesgázzal töltik ki. A két üveglap együttesen rácsszerkezetet alkot, s ha feszültség kerül egy rácspontra akkor ott a gáz világítani kezd. Úgy képzelhet-jük el mintha kicsiny neon lámpák halmaza lenne a képernyő. A plazma képernyő előnyei: lapos, nagy-méret és nagy felbontás lehetősége, masszív felépítés. Hátránya a magas előállítási költség és egyenlőre csak monochrom változata ismert. Előnyei miatt főleg a hadseregben használják.

• Elektro-lumineszcens képernyő (EL): A plazma képernyőhöz hasonló felépítésű, a két üveglap között foszforeszkáló anyag található, pl. cinkszulfid magnéziummal elegyítve. Működésük hasonló az aktív-mátrixos LCD panelekhez, csak nagyobb az energiaszükségletük, de sokkal fényesebbek, mint LCD tár-saik. Előnyös tulajdonságaik miatt elterjedtek a hordozható számítógépeknél.

A megfelelő monitor kiválasztására már a grafikus kártya vásárlásakor figyelmet kell fordítani. Amíg a kár-tyán megtakaríthatunk néhány forintot, addig a monitor kiválasztásánál legyünk körültekintőek. Mindenek-előtt a kártya által biztosított felbontást tudja produkálni. Vigyázzunk tehát, mert az 1024x768 képpontos SVGA felbontást csak a nagyobb (legalább 15") monitorokkal lehet elfogadhatóan megjeleníteni. Könnyen kiszámolható, hogy hány pontot képes a monitor megjeleníteni fizikailag egymástól elkülönítve. Ha ismerjük a monitor képpontjainak távolságát (lyukmaszktávolság: rendszerint 0.26, 0.28 és 0.31 milliméter között változik).

Page 11: Kovács Emőd - Matematikai és Informatikai Intézetaries.ektf.hu/~emod/bevgraf/KOMA.pdf · 2.1 Beviteli eszközök Két alapvető grafikus beviteli művelet van. Egy adott pozíció

Kiviteli eszközök

11

7. ábra. A Mitsubishi cég plazma monitorja

Megjelenítő eszközök

CRT elvű Paneles megjelenítő

Monochrom Színes

TV célúPontméret≥0,6mm

Professzionális célúPontméret≤0,6mm

Delta lyukmaszk In-Line

Résmaszkkal Lyukmaszkkal Rácsmaszkkal(Sony Trinitron)

Emissziós Nem emissziós

CRT1 Plazma EL

LCD

Aktív LCD Világító diódás(LED)

8. ábra. A megjelenítők csoportosítása 1 Legalább ennyire fontos, hogy a monitor képes legyen a grafikus kártya képismétlési frekvenciájának leké-pezésére. A legjobbak az úgynevezett multiscan monitorok, amelyek felismerik a grafikus kártya frekvenciá-ját és automatikusan ehhez igazodnak. Ahhoz, hogy a szemünk számára villódzás mentes képet kapjunk, a monitornak másodpercenként legalább hatvanszor újra kell rajzolnia a képet. Tehát legalább 60 Hz a képis-métlési frekvencia. A horizontális frekvencia vagy vízszintes sáv szélesség azon sorok száma amit a monitor 1 másodperc alatt meg tud jeleníteni. Ez közelítőleg a frissítési sebesség és a sorok számának a szorzata. Nézzük pl. a következő értékeket: • 640x480-as VGA felbontás:

Frissítési frekvencia Horizontális frekvencia 60 Hz 480∗60≈28,8 kHz 72 Hz 480∗72≈34,56 kHz 75 Hz 480∗75≈36 kHz

• 800x600-as SVGA felbontás:

Frissítési frekvencia Horizontális frekvencia 56 Hz 600∗56≈33,6 kHz 60 Hz 600∗60≈36 kHz 75 Hz 600∗75≈45 kHz

1 Természetesen ide azért soroltuk a CRT-t mert szintén emissziós, de nem lapos megjelenítő

Page 12: Kovács Emőd - Matematikai és Informatikai Intézetaries.ektf.hu/~emod/bevgraf/KOMA.pdf · 2.1 Beviteli eszközök Két alapvető grafikus beviteli művelet van. Egy adott pozíció

Fejezetek a számítógépi grafikából

12

• 1024x768-as SVGA felbontás: Frissítési frekvencia Horizontális frekvencia 86 Hz (Interlaced2) 768∗43≈33 kHz 60 Hz 768∗60≈46,1 kHz 75 Hz 768∗75≈57,6 kHz

A táblázatokból kitűnik, hogy ha egy 14” képátlójú monitor műszaki paraméterei között Non Interlaced jel-zés szerepel, de ha a horizontális frekvencia tartománya csak 30-35 kHz, akkor bizony csak 800x600-as SVGA felbontásban 56 Hz képfrissítési frekvencián tudja produkálni a Non Interlaced módot. Az újabb 14”-es monitorok horizontális frekvencia tartománya már legalább 30-50 kHz között van amely biztosítja a szemnek még elfogadható 75 Hz-es 800x600-as SVGA üzemmódot. A monitorok gyártói −szemben a televíziót gyártókkal− a monitor kávájába épített katódsugárcső (CRT) mérete szerint osztályozzák és sajnos forgalmazzák termékeiket. Ezt a képcsövet először be kell foglalni egy keretbe, és ez csökkenti a használható felületet. Ráadásul a képernyő sarokpontjaiban történő pontos megje-lenítést −éppen a technikai nehézségek miatt− nem szavatolják, annak ellenére, hogy a szabályozó gombok-kal a képernyő teljes szélességéig nagyíthatjuk a képet. Ezért van az, hogy a felhasználó számára ténylegesen hasznosnak tekinthető terület még a kereten belüli területnél is jóval kisebb. A hasznos képernyő felületet még pontosabban úgy állapíthatjuk meg, ha bekapcsoljuk a monitort és megmérjük a képernyő bal felső és jobb alsó sarka közötti távolságot. Ha lehetséges, akkor a monitoron található beállító gombokkal állítgas-sunk a képen, mert ilyenkor olyan problémák is előtérbe kerülhetnek mint például a monitor csücskeiben elhomályosodó képpontok, stb. Hogy mennyire létező ez a probléma, arra álljon itt egy hír: a Kaliforniai Állami Ügyészi Hivatal vizsgálatot indított egy bejelentés nyomán, amely szerint a monitorok katódsugárcsövük mérete szerinti árusítása kimerí-ti a félrevezető reklám fogalmát. A monitorgyártók és a Video Electronics Standard Association (VESA) nevű szabványügyi szervezettel együtt egy olyan általános módszer kidolgozásán munkálkodnak, amellyel a hasznos képernyőméretet lehet mérni. Egy ideje a nagyobb cégek (IBM, NEC, SONY, SAMSUNG, MAG, DAEWOO) a termékeik kísérő dokumentációjában a tényleges képernyőméretet is publikálják. Igaz ezt már csak akkor látja meg a vevő, ha a dobozt kinyitja., de ez is csak olyan üzlet, mint minden másik.

2.2.3 Vezérlő kártyák.

Miután már esett szó a megjelenítőkről, most legyen szó azok vezérlőiről. Az együttes tárgyalást az indokol-ja, hogy egyik összetevő sem képes önálló működésre, hiszen vezérlő nélkül a monitoron nem jelenik meg információ, monitor vagy egyéb megjelenítő eszköz nélkül pedig a vezérlő olyan mintha nem is lenne, mert funkcióját képtelen betölteni. A grafikus kártyák feladata, hogy megjelenítsék a szöveget vagy képet a monitoron. Bőséges kínálatból választhatunk annak függvényében, hogy milyen alkalmazásra kívánjuk használni. A következőkben összefoglaljuk, hogy a közoktatásban leggyakoribb IBM PC kompatíbilis számítógépekhez milyen típusú grafikus kártyák vannak. Ahhoz, hogy ezek közül választani tudjunk, bizonyos alapfogalmak-kal tisztáznunk kell Ezek a következők: a maximális felbontás, a megjeleníthető színek száma, a képismétlési frekvencia és a sebesség. A megjelenítéséhez szükséges kártyán levő minimális memória az előzőekből számítható. Felbontás: A komputergrafikában használatos grafikus felbontásokra szorítkozunk, eltekintünk a szöveges felbontások tárgyalásától. Felbontás alatt a grafikus képernyő oszlopainak és sorainak számát értjük pl: 800x600-as érték 600 sort jelent és egy sorban 800 pixelt. Színek: A grafikák hatását nemcsak az eltérő felbontás határozza meg. Legalább ilyen fontos szerepet játszik az egyidejűleg ábrázolható színek száma is. A színek számát általában a tárolásra fordított bitek száma hatá-rozza meg, s ebből lehet kiszámolni a grafikus kártyán szükséges memória mennyiségét. A megjelenítendő

2 Interlaced: Váltott sorú üzemmód, első menetben a páratlan, második menetben a páros sorszámú sorokat

frissíti a sugárnyaláb.

Page 13: Kovács Emőd - Matematikai és Informatikai Intézetaries.ektf.hu/~emod/bevgraf/KOMA.pdf · 2.1 Beviteli eszközök Két alapvető grafikus beviteli művelet van. Egy adott pozíció

Kiviteli eszközök

13

pontok számát a sorok és oszlopok szorzatából határozzuk meg, majd ezt az értéket szorozzuk a színek szá-mához szükséges bitek számával. Pl. 640x480x16 azt jelenti, hogy 640x480 = 307 200 pont, 16 színű üzem-mód esetén: 307 200∗4bit = 153 600 byte memóriára van szükség a megjelenítésre. Mivel a használt memó-riaméret 2-nek hatványa, ezért ehhez az üzemmódhoz legalább 256 kbyte-os VGA kártya szükséges. Előfor-dul, hogy nem színeket, hanem a szürke árnyalatait jeleníti meg a monitor egy adott színhez valamilyen ár-nyalatot hozzárendelve. Ilyen megjelenítők pl. a MonoVGA monitorok. Az SVGA kártyán szükséges memória mennyiségek byte-ban:

Felbontás 16 szín (4 bit)

256 szín (8 bit)

65 536 szín (16 bit)

1 6777 216 szín (true color 24 bit)

320x200 64 000∗0.5=32 000 64 000 128 000 192 000 640x480 153 600 307 200 614 400 921 600 800x600 240 000 480 000 960 000 1 440 000

1024x768 393 216 786 432 1 572 864 2 359 296 Képernyő lapok száma: A programozás szempontjából fontos, hogy egyidejűleg hány db. képernyő lapot lehet használni. Természetesen a lapok száma a grafikus kártyán kívül az adott programnyelv grafikus inter-fészén is múlik. Különösen fontos ez animációk készítésénél. A látható lapon (Visual Page) valamilyen ábra van, a felhasználó azt látja. Közben az aktív lapon (Active Page) rajzolunk láthatatlanul, és csak a végered-mény tesszük láthatóvá, a lapok funkciójának felcserélésével. Turbo Pascalban (4.0, 5.0, 5.5, 6.0 vagy 7.0-ban) az EGA vagy VGAMed (640x350) felbontásban két lapot használhatunk, ezzel szemben VGAHi (640x480) felbontásban csak egyet. Sebesség : A szebbnél-szebb komputergrafikák és animációk (a mostanában egyre nagyobb divatnak örven-dő intrókról nem is beszélve) csak akkor okoznak nézőjének osztatlan örömet, ha a növekvő felbontással és színárnyalatszámmal szorosan összefüggő sebességcsökkenés nem következik be, vagy legalábbis a normális tűrőképesség határain belül marad. Így fordulhat elő, hogy a nagyfelbontású, sokszínű kép adattömege "térdre kényszeríti" az olcsóbb grafikus kártyákat. Még érzékelhetőbb ez a probléma akkor, amikor grafiká-kat kell ide-oda mozgatni a képernyőn. Erre is van azonban már megoldás. Az "intelligensnek" nevezett típusokon már külön gyors grafikus processzor gondoskodik a képfelépítés gyorsításáról, olyan módon, hogy a munka zömét átvállalja a számítógép központi processzorától. Amíg ugyanis az egyszerűbb (és egyben olcsóbb) kártyák a képalkotáshoz szükséges információkat készen kapják a központi processzortól, addig az utóbbiak már csak utasításokat kapnak, és a felhasználó más feladatokat adhat a számítógépe processzorá-nak, mert a grafikus lapka tehermentesíti. Üzemmódok: Az eredeti IBM PC szabvány szerint a 256 kbyte-os videó memória címe A0000–BFFFF ter-jed. Azok a VGA kártyák amelyek kompatibilisek akarnak maradni, azok A0000–AFFFF memória területet használják a grafikus üzemmódokban és a B8000–BFFFF területet a szöveges üzemmódokban. Természete-sen az SVGA kártyákat gyártók kialakítottak saját üzemmódokat is a nagyobb felbontások biztosítása érde-kében. Pl. a megadott memória területet belapozzák, A modern SVGA kártyák rendelkeznek úgynevezett "linear framebuffer"-rel amely azt jelenti, hogy az egész SVGA memória terület (1 MB, 2 MB, 4 MB, vagy több) egyetlen folytonos memória területre van leképezve. A gyártók az IBM szabványai mellett kialakították saját VESA szabványukat, hogy egységesítsék a grafikus kártyák üzemmódjait. A VESA szabvány definiál olyan módbeállító és egyéb funkciókat, amelyekkel a normál VGABIOS-hoz hasonlóan az INT 10h megszakí-tással lehet kezelni az SVGA kártyákat. Accelerátor : A Windows első megjelenése után a hardver-előállítók rögtön megjelentek a piacon az úgyne-vezett windows-accelerátor kártyákkal, ami a minél gyorsabb képváltások kiszolgálására volt hivatott. Ebből már adódik a feladata, a képpont-tömbök és a grafikus kurzor mozgatása. Léteznek olyan típusok is, amelyek már vonalrajzolásra és sokszögek előállítására is képesek. Bit BT : Bit Block Transfer. A képernyő egyes részleteinek másolásához vagy mozgatásához fejlesztett esz-köz. Elég csupán a terület befoglaló csúcspontjait megadni a mozgatáshoz. Így az operációs rendszernek nem kell az összes képpontot mozgatnia, csak a csúcspontokat, a másolási munkát a grafikus processzor végzi el. A művelet sebessége a nagyban függ a chip belső memóriaszervezésétől.

Page 14: Kovács Emőd - Matematikai és Informatikai Intézetaries.ektf.hu/~emod/bevgraf/KOMA.pdf · 2.1 Beviteli eszközök Két alapvető grafikus beviteli művelet van. Egy adott pozíció

Fejezetek a számítógépi grafikából

14

Hardver (grafikus) kurzor : érdekes megoldás arra, hogyan lehet úgy mozgatni, hogy magát a kurzort ne kelljen a képmemóriába beírni. Ez különösen olyankor érdekes, ha a kurzor alatt kép látható. Ilyenkor nem a megszokott mentés és visszatöltés folyamata hajtódik végre, hanem a hardver (a kártyán levő chip) rákeveri az aktuális képre a kurzor alakját. Ezáltal nagyon megnőhet a grafikus felület gyorsasága, arról nem is szól-va, hogy maga az operációs rendszer, vagy az alkalmazás más feladatot kaphat. RAMDAC (DAC) : a képernyő memóriában található digitális formában tárolt információkat alakítja ana-lóg jellé. VESA DDC (VESA Display Data Channel) : segítségével már a monitor is küldhet adatokat a vezérlőkár-tya irányába, így például ha az operációs rendszer is támogatja (Windows 95) azonosíthatóak a monitor adatai: típusa, felbontóképessége, stb. Ha a kártyák piacán széttekintünk, csupán PCI-buszos termékeket találunk, nem véletlenül, hiszen a helyi sínes technológiát egyik legjobban kihasználó területét a video megjelenítők jelentik. Rengeteg neves gyártó kínálja termékeit (Video Seven, Orchid technologie, SPEA, Genoa, Hercules, Sigma Design, Eizo, Trident, Miro Magic, Ati, S3 és a Cirrus Logic és még hosszasan sorolható) bár még a hétköznapi felhasználók álta-lában pénztárcájuk alapján döntenek.

2.2.4 Különböző BGI driver-ek beillesztése Pascal programunkba

Nagyon gyakran gondolunk arra, hogy túl kellene már lépnünk a Turbo Pascal adta grafikus lehetőségeken. Ha IBM kompatíbilis számítógéppel rendelkezünk, akkor Turbo Pascal programjainkban az EGAVGA.BGI grafikus interfészt tudjuk használni. Ez a driver a standard VGA üzemmódokat biztosítja 16 színnel. Maga a Turbo Pascal viszont lehetőséget ad arra, hogy saját felhasználói BGI driver-eket installáljunk programjaink-ba. Ezeket nem a Borlad cég forgalmazza, hanem általában programozóktól lehet beszerezni őket. Mivel az SVGA és VESA üzemmódok nem szabványosak, ezért bizonyos grafikus kártyán nem, vagy csak korlátozot-tan működik a driverek használata. A legtöbb probléma az egér kezelésével van. Ezek után nézzünk meg egy programrészletet:

Page 15: Kovács Emőd - Matematikai és Informatikai Intézetaries.ektf.hu/~emod/bevgraf/KOMA.pdf · 2.1 Beviteli eszközök Két alapvető grafikus beviteli művelet van. Egy adott pozíció

Kiviteli eszközök

15

. . . Var

AutoDetect : pointer; GraphDrv, GraphMod, GrafHiba : Integer ;

{$F+} Function Always : integer; Begin

Always := 3;{VidMode;} { (*Az adott SVGA.BGI által támogatott üzemmódok *) Const

VGA320x200 = 0; (* Standard VGA *) SVGA640x400 = 1; (* 640x400x256 Svga *) SVGA640x480 = 2; (* 640x480x256 Svga *) SVGA800x600 = 3; (* 800x600x256 Svga *) SVGA1024x768 = 4; (* 1024x768x256 Svga *)

} End; {$F-} Begin

AutoDetect := @Always; GraphDrv := InstallUserDriver('SVGA256',AutoDetect); GraphDrv := Detect; InitGraph(GraphDrv,GraphMod,''); GrafHiba := GraphResult ; If GrafHiba <> GrOK Then Begin

WriteLn(GraphErrorMsg(GrafHiba)) ; ReadLn ; Halt ;

End; Setcolor(White); {Rajzoló szín beállítása}

Line( . . . {Grafikus programrész} CloseGraph ;

End.

Page 16: Kovács Emőd - Matematikai és Informatikai Intézetaries.ektf.hu/~emod/bevgraf/KOMA.pdf · 2.1 Beviteli eszközök Két alapvető grafikus beviteli művelet van. Egy adott pozíció

Fejezetek a számítógépi grafikából

16

2.3 Grafikus szoftver A számítógépi grafika (Computer Graphics) természetesen képekkel foglalkozik. Feladata a grafikus adatok feldolgozása amely négy, nem teljesen elkülönülő főterületet ölel fel:

• Generatív grafikus adatfeldolgozás: képek és grafikus adatok bevitele, képek előállítása, manipulálása és rajzolása leírások alapján. Síkbeli és térbeli objektumok modellezése.

• Grafikus képek tárolása a számítógépen és adathordozókon kódolt formában. • Képfeldolgozás: képek javítása átalakítása a későbbi feldolgozás érdekében. • Mintafelismerés: Képekből meghatározott információk kiolvasása, a képből valamilyen információt,

leírást nyerünk.

Leírás vagyInput kép

Számítógépenmegjelenő kép

Generatív adatfeldolgozás

MintafeldolgozásKépfeldolgozás

Képtárolás

9. ábra. A számítógépi grafika feladatai A számítógépi grafika önmagában csak a képekkel foglalkozik, de számtalan alkalmazási területe van a gra-fikus adatok feldolgozásának. A következő felsorolásban kísérletet teszünk arra, hogy a számítógépi grafika témakörébe tartozó alkalmazásokat csoportosítsuk. A csoportosításnál az volt a szempontunk, hogy az al-kalmazások milyen feladatcsoportot ölelnek fel és a használt módszerekben milyen összefüggések találhatók. 1. Művészet és animáció (Art and Animation)

A számítógépes művészet kétségtelenül a XX. század végének egyik legellentmondásosabb vívmánya, amely önmagától alakult ki és ez idáig még nem igazán elismert művészeti ág. A számítógépet már eddig is használták mint segédeszközt művészeti alkotások megtervezésében és létrehozásában. Gondoljunk csak pl. két világhírű művészünkre Victor Vasarely-re és Szász Endrére. Náluk a végeredmény már nem a szá-mítógépen keletkezett, hanem konkrét kézzel fogható formában. De fölmerül a kérdés, hogy művészet-e síkban (2D) karaktereket, fontokat és háttereket, térben (3D) pedig modelleket, felületeket testeket meg-alkotni a számítógép monitorján? Gondoljunk a videó klippekre, ahol animációkat sőt néhány perces fil-meket is láthatunk. A filmiparban, egy magára valamit is adó film nem készülhet el számítógép által ké-szített trükkök nélkül. Walt Disney elkészítette a Toy’s story-t, ami teljes egészében számítógéppel raj-zolt egész estét betöltő rajzfilm. Ebbe a témakörbe tartozik a reklámfilmek készítése is. Az egyre jobb és gyorsabb harver eszközök lehetőséget teremtenek olyan animációk, klippek és egyéb számítógépes alko-tások létrehozására, amelynek csak az emberi képzelet szab határt. De azt senki sem gondolhatja, hogy csak eszköz kérdése az ilyen jellegű alkotás. Vajon ezek az alkotók csak a szakma művészei vagy valójá-ban művészek a szó hagyományos értelmében?

Animáció esetén a grafika szokásos feladatain kívül időbeli változásokat is rögzíteni kell egy forgatókönyv-ben (script), amely a kameraállásnak, a tárgyak helyzetétnek és a megvilágítási időnek változásait hatá-rozza meg az idő függvényében.

2. Számítógéppel segített tervezés és gyártás

Ebbe a témakörbe tartozik: • Computer Aided Design (CAD): Automatizált szerkesztés, tervezés és vázlatkészítés. Pl. autók, épü-

letek, munkadarabok és áramkörök tervezése, gépészeti tervrajzok kapcsolási rajzok készítése. • Computer Aided Manufactoring (CAM):Számítógéppel segített gyártás termelés, NC megmunkálásra

való előkészítés stb.

Page 17: Kovács Emőd - Matematikai és Informatikai Intézetaries.ektf.hu/~emod/bevgraf/KOMA.pdf · 2.1 Beviteli eszközök Két alapvető grafikus beviteli művelet van. Egy adott pozíció

Grafikus szoftver

17

• Computer Aided Engineering (CAE): Számítógéppel segített mérnöki műszaki tervezés. Ez a témakör rokon a CAD-del, de ide inkább a gyártási rendszerek tervezését értjük.

A rengeteg CAD program közül a legismertebb az AutoCAD. 3. Bemutató és üzleti grafika (Presentation and Business Graphics)

Ebbe a témakörbe értjük különböző hisztogramokat, és diagramokat előállító táblázatkezelőket, a bemutató grafikát és slideshow-t készítő programokat (pl. Excel és PowerPoint). Egy jó grafikon önmagáért beszél, olyan összefüggéseket szemléltethet, amelyeknek az írásbeli magyarázata igen hosszadalmas lenne. Gon-doljunk csak az üzleti kimutatásokra, statisztikai elemzésekre és a politikai választási csatározásokra.

4. Tudományos és műszaki szemléltetés és szimuláció (Scientific Visualization and Simulation)

Ehhez a témakörhöz tartozik fogalmak, jelenségek, törvényszerűségek, folyamatok szemléltetése, vizuális megjelenítése és szimulációja: • költségesen vizsgálható dolgok szemléltetése: autók futása, katonai alkalmazások, környezet szimulá-

ciója, űrhajós és pilóta képzés. • közvetlenül nem vizsgálható dolgok szemléltetése: bolygók és galaxisok mozgása, mikroszkópikus

dolgok vizsgálata. • műholdak pályája. • fraktálok és mandelbrot halmazok előállítása és felhasználásukkal mesterséges alakzatok teremtése.

5. Képelemzés és feldolgozás (Image analysis and processing)

Raszteres képek feldolgozásával foglalkozik. Ide értjük a képek részleteinek felismerését, elemzését és mó-dosítását is: • ujj- vagy tenyérlenyomat felismerő programok • orvosi képfeldolgozás: computer tomográf (CT), MRI, ultrahang, digitális radiológia, nukleáris medi-

cina • karakter felismerő programok

6. Grafikus kezelő felületek (Graphics User Interfaces, GUI)

Az ember és a számítógép közötti interakciót elősegítő programok rendszere. Pl. Microsoft Windows, OpenWin. Ezek a felületek a grafikát nem a program tárgyaként használják, hanem a minél egyszerűbb és hatásosabb interaktív kommunikáció érdekében. Manapság már ide értendő a hang mint eszköz bevetése is az előbbi cél érdekében. Ezen rendszerek közös jellemzője az ablakok, menük, ikonok, párbeszéd ab-lakok stb. Fontos követelmény a következetesség, vagyis egy újabb alkalmazás esetén a felhasználó a már megszokott felülettel találkozik. Nem kell keresgélnie a menük között, mindent a megszokott helyen talál és így a feladat megoldására koncentrálhat, s nem a felület kezelésének elsajátításával bajlódik. A 10. ábra egy ismert program ablakát tartalmazza a WIN95-ből, amelyen jól lehet tanulmányozni a szab-ványosítási törekvéseket.

Page 18: Kovács Emőd - Matematikai és Informatikai Intézetaries.ektf.hu/~emod/bevgraf/KOMA.pdf · 2.1 Beviteli eszközök Két alapvető grafikus beviteli művelet van. Egy adott pozíció

Fejezetek a számítógépi grafikából

18

Menü

Eszközök

Ablak kezelőgombok

Paletta

Függőlegesgördítő sáv

10. ábra. A Microsoft Paint programablakja

7. Virtuális valóság (Virtual Reality)

Mesterséges szimulált környezetek létrehozása számítógéppel, biztosíja az ember közvetlen beavatkozá-sát a fejére helyezett virtuális sisak, a kezére és esetleg más testrészeire helyezett érzékelő eszközök se-gítségével. A szimuláció segítségével egy képzeletbeli valóságban merülünk el, amelynek minősége meghatározó jellegű az alkalmazások területén. Jelentős alkalmazásai: oktatás, távműködtetés, INTERNET, játék és szórakozás.

8. Multimédia alkalmazások

Manapság egy átlagos személyi számítógép is lehetővé teszi multimédiás alkalmazások használatát. Az Intel kifejlesztette az MMX processzort, amelynek használatával valószinűleg új távlatok nyílnak meg ezen a területen. A böngészésre használt World Wide Web mint az Internet multimédiás felülete is egy új alkalmazási részterülete a számítógépi grafikának, és ezen ismeretek tanítása merőben új feladat a közok-tatás számára.

9. Számítógépes játékok

A grafikus adatfeldolgozás kétségtelenül legelterjedtebb felhasználási területe. Manapság már teljesen va-lósághű játékprogramok készülnek. Általános az SVGA üzemmódok, a 256 szín, sőt 65536 szín haszná-lata. A játékprogramok, más programokhoz hasonlóan azt sugallják a felhasználóknak, hogy minél drá-gább és nagyobb teljesítményű számítógépet vásároljunk, hogy ki tudják használni a programokban rejlő lehetőségeket. Az INTERNET előbb utóbb megteremtheti annak a lehetőségét, hogy az emberek a világ-hálózaton keresztül játszanak egymással. Erre a jövőképre mindenképpen lehetőséget biztosít a szoftver és főleg a hardver eszközök és erőforrások árának rohamos esése.

Page 19: Kovács Emőd - Matematikai és Informatikai Intézetaries.ektf.hu/~emod/bevgraf/KOMA.pdf · 2.1 Beviteli eszközök Két alapvető grafikus beviteli művelet van. Egy adott pozíció

Grafikus szoftver

19

11. ábra. Játékra fel!

Page 20: Kovács Emőd - Matematikai és Informatikai Intézetaries.ektf.hu/~emod/bevgraf/KOMA.pdf · 2.1 Beviteli eszközök Két alapvető grafikus beviteli művelet van. Egy adott pozíció

Fejezetek a számítógépi grafikából

20

3. Grafikus kártyák története! MonoChrom, Hercules, CGA, EGA, VGA, SVGA, XGA. Egyéni feldolgozás!

4. A szoftverek hordozhatósága és a grafikus szabványok: 3D Core Graphics System (1977) ANSI-American National Standards Institute ISO-International Standards Organization GKS: Graphical Kernel System -2D az első hivatalos grafikai szabvány (1985) GKS 3D kiterjesztése (1988) PHIGS Programmer's Hierarchical Interactive Graphic System (ANSI sz. 1988) PHIGS PLUS (ANSI/ISO 1992) SRGP Simple Raster Graphic Primitívek:

• egyenesek, • poligonok, • körök, • ellipszisek, • szöveg

Konstansok és típusok Turbo Pascalban Konstansok

Típusok

• Bar3D Constants • ArcCoordsType • BitBlt Operators • FillPatternType • Clipping Constants • FillSettingsType • Color Constants Graphics • Memory Pointers • Colors for the 8514 • LineSettingsType • Fill Pattern Constants • PaletteType • Graphics Drivers • PointType • Graphics Modes for Each Driver • TextSettingsTyp • Justification Constants • ViewPortType • Line-Style and Width Constants • Text-Style Constants

Page 21: Kovács Emőd - Matematikai és Informatikai Intézetaries.ektf.hu/~emod/bevgraf/KOMA.pdf · 2.1 Beviteli eszközök Két alapvető grafikus beviteli művelet van. Egy adott pozíció

Grafikus szoftver

21

ATTRIBÚTUMOK Színek:

procedure SetColor(Color: Word); Sötét színek: Világos színek: (Tinta & Papír) (Tinta) • Black 0 • DarkGray 8 • Blue 1 • LightBlue 9 • Green 2 • LightGreen 10 • Cyan 3 • LightCyan 11 • Red 4 • LightRed 12 • Magenta 5 • LightMagenta 13 • Brown 6 • Yellow 14 • LightGray 7 • White 15

Kitöltések és minták:

procedure SetFillStyle(Pattern: Word; Color: Word); Konstans Érték Jelentés • EmptyFill 0 Háttérszín • SolidFill 1 Tintaszín • LineFill 2 ---- kitöltés • LtSlashFill 3 /// kitöltés • SlashFill 4 /// sűrű kitöltés • BkSlashFill 5 \sűrű kitöltés • LtBkSlashFill 6 \ kitöltés • HatchFill 7 Négyzetrács kitöltés • XhatchFill 8 Négyzetrács kitöltés • InterleaveFill 9 Interleaving line • WideDotFill 10 Widely spaced dot • CloseDotFill 11 Closely spaced dot • UserFill 12 User-defined fill

minták:

Vonal fajták és vastagságok:

Page 22: Kovács Emőd - Matematikai és Informatikai Intézetaries.ektf.hu/~emod/bevgraf/KOMA.pdf · 2.1 Beviteli eszközök Két alapvető grafikus beviteli művelet van. Egy adott pozíció

Fejezetek a számítógépi grafikából

22

procedure SetLineStyle(LineStyle: Word; Pattern: Word; Thickness: Word);

Line Styles: Line Widths: • SolidLn 0 • NormWidth 1 • DottedLn 1 • ThickWidth 3 • CenterLn 2 • DashedLn 3 • UserBitLn 4 (User-defined line style)

Page 23: Kovács Emőd - Matematikai és Informatikai Intézetaries.ektf.hu/~emod/bevgraf/KOMA.pdf · 2.1 Beviteli eszközök Két alapvető grafikus beviteli művelet van. Egy adott pozíció

Bevezetés

23

5. Grafikus képek kódolása, tárolása és használata

5.1 Bevezetés A kiadványszerkesztés, számítógéppel segített tervezés, térinformatika és más nagymennyiségű grafikus adattal dolgozó programrendszerek elterjedésével felmerült az adatok minél kisebb helyen történő tárolható-ságának problematikája. Ebben a fejezetben ezzel a témakörrel kívánunk foglalkozni. Nézzük meg, hogyan lehet nagyméretű grafikus képeket tárolni és velük effektív munkát végezni! Miért van szükség pl. a bittér-képes képek tömörítéses kódolására? Munkánk során gyakran kell scanner-t használnunk, könnyen belát-ható, hogy a scanner-rel beolvasott kép igen nagy méretű is lehet. Tekintsünk példaként egy levél (letter) méretű lapot, amelyet True color technikával olvasunk be 600 dpi felbontásban.

Levél méret: 8.5x11 hüvelyk (inch) Felbontás: 600 dpi 600 pont / hüvelyk= Ebből adódik: 8.5 11 600 600 33 660 000⋅ ⋅ ⋅ = pont 1 pont ábrázolásához 24 bit szükséges: ( )33 660 000 24 / 8 = 100 980 000⋅ byte ≈100 Mbyte Ez az adatmennyiség még a mai korszerű eszközökkel is nehezen kezelhető. Ezért a probléma megoldására különböző eljárásokat dolgoztak ki a számítógépes képek kódolására, tömörítésére és tárolására. A grafikus képek kódolásának folyamatát három részre bontjuk:

Szűrés(mapping): szükségtelen redundanciák kiszűrése, az így kapott kép kevesebb byte-ból fog áll-ni mint az eredeti kép.

Leszűkítés (quantization): az input kép méreteinek leszűkítése a lehetséges output méretre. Előfor-dulhat, hogy nincs szükségünk a teljes levél méretű képre mind a 5100x6600 pontjával együtt, csak bizonyos részleteit kívánjuk használni, amely elfér a képernyő 640x480-as felbontásán. Természete-sen, ha az eredeti képre is szükség van akkor kihagyjuk ezt a lépést, mert a folyamat visszafordíthatat-lan.

Kódolás: a kódolt, tömörített adat és a megfelelő kódtábla előállítása.

Page 24: Kovács Emőd - Matematikai és Informatikai Intézetaries.ektf.hu/~emod/bevgraf/KOMA.pdf · 2.1 Beviteli eszközök Két alapvető grafikus beviteli művelet van. Egy adott pozíció

Fejezetek a számítógépi grafikából

24

5.2 Kódolási eljárások A következőkben megemlítünk néhány algoritmust, melyek természetesen nemcsak képek, hanem bármilyen input szöveg kódolására alkalmasak. Ezek az algoritmusok viszonylag könnyen kezelhetőek, és igen népsze-rűek a grafikus képek kódolásánál. 5.2.1 Huffman kód

Figyelembe véve, hogy az eredeti input kép pontjai azonos hosszúságú elemekből épülnek fel a használt színek számától függően (pl. 1 képpont 1 byte-on tárolódik). Igen hatékony tömörítést érhetünk el ha a leg-gyakrabban előforduló elemeket (kép esetén ez általában háttérszín) rövidebb kóddal helyettesítjük. Ezen az elven alapszik a Huffman kód is. Ennek a kódnak a lényege, hogy meghatározzuk az input kép elemeinek előfordulási valószínűségeit vagy az előfordulási gyakoriságait. Tehát, az input kép különböző elemeit te-kintsük input ABC-nek, pl. ha a kép maximum 256 színt használ (1 byte-os tárolás) akkor értelemszerűen az input ABC elemszáma is maximum 256. Az input ABC elemeit növekvő sorrendbe állítjuk előfordulási valószínűségeik szerint és a sorrendnek megfelelően egyre rövidebb kódot rendelünk az elemekhez. Termé-szetesen adatvesztés nélküli egyértelmű kódot kell előállítanunk. Ezek után tekintsük az algoritmust amely-nek során egy bináris fát építünk fel:

1. Legyen az OP halmaz az előfordulási gyakoriságok halmaza. 2. Legyen Pi és Pj az OP halmaz két legkisebb eleme.

2.1. Hozzunk létre egy új csomópontot az Nij -t, amely a Pi és Pj apja a fában

2.2. Az N Pij → i él címkéje legyen 0, az N Pij → j él címkéje pedig 1.

2.3. Legyen ( )P N Pij i= + Pj , a Pi -t és a Pj -t töröljük az OP halmazból és ( )P Nij -t fel-

vesszük az OP halmazba. 3. Ha az OP halmaz 1 elemű akkor vége, egyébként folytassuk a 2.ponttól.

Az algoritmus vége után egy bináris fát kapunk, melynek levelei az input ABC elemei. A gyökérből az egyes levél elemhez vezető úton lévő címkéket egymásután írva kapjuk az inputelem kódját. Az algoritmusból adódik, hogy a gyökérhez nem rendelünk címkét. Az OP halmazt előállítása például történhet úgy, hogy megszámláljuk egy elem (pl. egy szín) előfordulását, majd a kapott értéket elosztjuk az input szöveg hosszá-val. 256 színű kép esetén minden képpont egy byte-on tárolódik, ezért ilyenkor a kép byte-okban mért hosz-szával osztunk. A kódolás során figyelembe vesszük, hogy a kiszámított valószínűségek összege 1.

Legyenek példánkban az input ABC elemeinek hossza 1 byte.

Előforduló színek: Előfordulási valószínűségek: Kód

10001010 0,34 11 10100101 0,26 10 00010100 0,22 01 01101011 0,08 001 00111011 0,07 0001 00101001 0,03 0000

Page 25: Kovács Emőd - Matematikai és Informatikai Intézetaries.ektf.hu/~emod/bevgraf/KOMA.pdf · 2.1 Beviteli eszközök Két alapvető grafikus beviteli művelet van. Egy adott pozíció

Kódolási eljárások

25

1840

10

34

26

22

8

73

gyökér

0

0

00

0

1

1

11

1

60

12. ábra. A Huffman kód bináris fája

A kódolás után a kódolt állományban le kell tárolni a kódtáblát is, amely tartalmazza, hogy az input ABC elemeihez milyen kód tartozik. Igen hatékony tömörítést tudunk elérni, pl. szövegek esetén a tömörítési arány az 50%-ot is meghaladhatja.

5.2.2 RLE algoritmus (Run-length encoding)

Ismétlődésen alapuló tömörítés, amit legegyszerűbben a következő példával szemléltethetjük. Kódoljuk a következő input jel sorozatot:

Input: 0000033000344 13 byte Output: 5023301324 10 byte azaz 5db. 0, 2db 3, 3db 0 1db 3, 2db 4.

Tehát a kód szövegben az első byte tartalmazza, hogy hány db, a második byte pedig, hogy milyen jel követ-kezik. A példánkban 3 byte-ot takaríthatunk meg. True Color képeknél az RLE tömörítés gyakran hosszabb kódot eredményez, mint a forrás kép mérete. Természetesen csak akkor hatásos ez a tömörítés, ha az input kép igen sok azonos képpontot tartalmaz egy sorban. Az alacsonyabb hatékonyság mellett az algoritmus igen gyors, egyszerű és könnyen programozható. RLE rendkívül népszerű és elterjedt az olyan alkalmazásoknál, ahol a tömörítés mellet fontos a kép gyors visszakódolása (előállítása a kódolt file-ból). Az algoritmus javított változata a Background Block Skipping (BBS). Az algoritmus abban különbözik az RLE-től, hogy a háttér színt nem kódolja, tulajdonképpen a háttér blokkok kihagyásáról van szó. Tekintsünk egy példát:

Input: 00000330003442200000011111211 Output: 5231013242221511221

A kövéren szedett számok pozíciókat jelölnek megadva, hogy hol következik a háttértől különböző érték.

Page 26: Kovács Emőd - Matematikai és Informatikai Intézetaries.ektf.hu/~emod/bevgraf/KOMA.pdf · 2.1 Beviteli eszközök Két alapvető grafikus beviteli művelet van. Egy adott pozíció

Fejezetek a számítógépi grafikából

26

5.2.3 LZW algoritmus (Lempel-Ziv-Welch)

Az algoritmus kiszűri az ismétlődő karakterláncokat és ezeket azonosító kódra cseréli. Ebből következik, hogy az LZW kód csak akkor hatékony, ha a karakterláncok ismétlődése nagy. A kódtábla generálása dina-mikus, dekódoláskor pedig egy alap kódtáblából építi fel a teljes kódtáblát. Pl. egy 8 bit/pixel színmélységű kép esetén az alaptábla 28=256 bejegyzést tartalmaz. A kódolás folyamán karakterláncként fogjuk fel a pi-xelsorozatokat és megvizsgáljuk, hogy az adott sorozat benne van-e a kódtáblában. Kódolás: Table i[ ] kezdetben az alapkódtáblát , vagyis az inputban előforduló különböző értékeket tartalmazza. j nPrefix

N

Prefix N Table Prefix Prefix N +

Table j Prefix N

j jGetCode Prefix GetCode

Prefix

: ;:

: ) ' '

) :

[ ]: ;

: ;( )

= +=

= <>

+ = +

= +

= +

1

1

az input első eleme;While do

BeginIf ThenElse

Begin

( az input következő eleme ( in { összefüzést jelent} {felvesszük az új sztringet a kódtablába, természetesen kódot hozzárendelünk} Write(Output, ); {A függvény visszaadja a - hez rendelt kódot} ; ;Write(Output, );

Prefix N

GetCode Prefix

: ;

( )

=End

End

Page 27: Kovács Emőd - Matematikai és Informatikai Intézetaries.ektf.hu/~emod/bevgraf/KOMA.pdf · 2.1 Beviteli eszközök Két alapvető grafikus beviteli művelet van. Egy adott pozíció

Kódolási eljárások

27

Dekódolás: A kód kiegészítő anyag! Table i[ ] kezdetben az alapkódtáblát , vagyis az inputban előforduló különböző értékeket tartalmazza.

[ ]

[ ][ ]

[ ][ ]

j n ;Code

Table CodeOld_Code Code;

Code

Code Table

Table Code

S Table Old CodeK Első_Karakter Table Code ;

Table j S K; j j ;Old_Code Code;

S Table Old

::

);:

: ) ' '

);

: _ );: ( )

::

:

: _

= +=

== <>

=

=

= += +

=

=

1

1

az első kód a kódolt szövegből ;Write(Output,

( a kódolt szöveg következő eleme in Write(Output,

While doBegin

If ThenBegin

EndElse

Begin

[ ][ ]

[ ][ ]

CodeK Első_Karakter Table Code ;

Table Code

Table j S K;Old_Code Code;j j ;Old_Code Code;

);: ( )

);

::

::

Write(Output,

; ; {While ciklus vége}

=

= +=

= +=

1

EndEnd

Tegyük fel, hogy példánkban az input képpont négy különböző értéket vehet fel. Tehát az alap kódtábla legyen a következő

0 a 1 b 2 c 3 d

Input jelsorozat: 01012101010000000 A kódolás során keletkező dinamikus táblában előállítunk menetközben felesleges kódokat is, de mivel csak az alap kódtáblát tároljuk, ezért ez nem okoz gondot.

Page 28: Kovács Emőd - Matematikai és Informatikai Intézetaries.ektf.hu/~emod/bevgraf/KOMA.pdf · 2.1 Beviteli eszközök Két alapvető grafikus beviteli művelet van. Egy adott pozíció

Fejezetek a számítógépi grafikából

28

Dinamikus kódtábla: 01 e 10 f 012 g 21 h 101 i 1010 j 00 k 000 l 0000 m Ezek után adódik az output kódsorozat: abecf iakla 5.2.4 Hierarchikus megközelítés

0 0 0 0 0 0 0 00 0 0 0 1 1 0 01 1 1 1 2 1 1 01 1 1 1 3 3 0 0

13. ábra. Hierarchikus negyedelés

A hierarchikus tömörítés a képet két dimenziós területnek tekinti és rekurzívan osztja fel négy részre. A13. ábra szemléltet egy ilyen felosztást. Az így kapott területek ha inhomogének, akkor továbbosztjuk, ha homo-gének, akkor megjegyezzük a színértéket. Az osztásnál mindig ugyanazt a körüljárási irányt követjük. A végeredményt legegyszerűbben fa adatszerkezettel ábrázoljuk.

Page 29: Kovács Emőd - Matematikai és Informatikai Intézetaries.ektf.hu/~emod/bevgraf/KOMA.pdf · 2.1 Beviteli eszközök Két alapvető grafikus beviteli művelet van. Egy adott pozíció

Kódolási eljárások

29

14. ábra. A felosztás ábrázolása

5.2.5 Aritmetikai tömörítés

Aránylag új módszer, ami hasonlít a Huffman kódra, de nagyobb hatásfokot érhetünk el vele, mint a Huffman kódolással. Lényege, hogy a [0 ,1] intervallumra leképezzük a különböző tömörítendő szekvenciá-kat, s így eredményül különböző hosszúságú tört számokat kapunk. A kevésbé gyakori sorozatokhoz ponto-sabb tört számot, hosszabb bitsorozatot rendelünk. Az aritmetikai tömörítés hatásfoka közel áll az elvi tömö-ríthetőség határához. 5.2.6 Adatvesztéses tömörítés

Akkor használunk adatvesztéses tömörítő algoritmusokat, ha az eredeti adathalmaz tartalmaz fölösleges adatokat is, amelyek szükségtelenek a végső alkalmazás szempontjából. Ilyen technikákat természetesen nem használnak kritikus alkalmazásokban, mint például orvosi képfeldolgozás, de annál inkább a kereskedelmi televíziózásban. Szemünk tehetetlenségéből adódik, hogy a TV képernyőjén bizonyos változásokat nem veszünk észre. Pl. ha 50 pont színe megváltozik a képernyőn, akkor észre sem vesszük, ezért sok esetben szükségtelen a túlzott színmélység vagy az éles kontúrok használata. Kiválóan alkalmazzák ezeket a megol-dásokat a JPEG és a MPEG formátumú állományoknál, ahol megválaszthatjuk a kép kódolása során, hogy tömörítés hatásfoka és a kép minősége közötti fordított arányosság mértékét.

0 1

0 100 30

2 011

Page 30: Kovács Emőd - Matematikai és Informatikai Intézetaries.ektf.hu/~emod/bevgraf/KOMA.pdf · 2.1 Beviteli eszközök Két alapvető grafikus beviteli művelet van. Egy adott pozíció

Fejezetek a számítógépi grafikából

30

5.3 Grafikus képformátumok A grafikus állomány formátumok minden változatát áttekinteni szinte lehetetlen feladat. Írásunk adta kerete-ken belül, csak az általunk legfontosabbnak ítélt, főleg PC DOS környezetben gyakori formátumok kerülnek felsorolásra. A formátum típus név után zárójelben adjuk meg az állomány kiterjesztését. 5.3.1 Állóképek

PCX (*.pcx)

Raszteres típusú Zsoft Corporation fejlesztés. MS-DOS operációs rendszerkörnyezetben az egyik legelterjedtebb formátum. Eredetileg a Paintbrush prog-ramcsomaghoz fejlesztették ki. TIFF (tag image file format, *.tif)

Raszteres típusú Aldus és Microsoft fejlesztés. Elsősorban a szkennerrel beolvasott képek belső tárolására használják főleg DTP rendszerekben. Igen elter-jedt Aldus, Microsoft alkalmazásokban és szkennelő szoftvereknél. GIF (Graphics Interchange format, *.gif)

Raszteres típusú Compuserve Incorporated fejlesztés. Nagyfelbontású, sokszínű képek tárolása, képernyőn történő megjelenítéséhez használatos. Mivel igen jól tömörítet állomány ezért kiválóan alkalmas az Interneten való használatra is. GEM IMG (*.img)

Raszteres típusú Digital Research fejlesztés. Főleg a Ventura Publisher applikációhoz fejlesztették ki és jól támogatja a monokróm megjelenítőket.

TGA (Truevision Targa, *.tga)

Raszteres típusú Truevision Inc. fejlesztés. Elsősorban a Targa grafikus kártyasorozat támogatására készült. Manapság elterjedt szkennereknél és festő-programoknál is. BMP/DIB (Microsoft Windows Device Independent Bitmap, *.bmp, *.dib)

Raszteres típusú Microsoft fejlesztés. Alapvető formátum minden windows alatt futó alkalmazás esetén. Sajnos más területeken nem támogatott formátum. Windows alatt könnyen kezelhető bittérképes formátum, amely főleg kis méretű képek tárolására alkalmas, mivel RLE tömörítést tartalmaz.

Page 31: Kovács Emőd - Matematikai és Informatikai Intézetaries.ektf.hu/~emod/bevgraf/KOMA.pdf · 2.1 Beviteli eszközök Két alapvető grafikus beviteli művelet van. Egy adott pozíció

Grafikus képformátumok

31

JPEG (Joint Photographic Expert Group, *.jpg)

Főleg fotórealisztikus, valósághű képek tárolására és megjelenítésére használatos tömörített bittérképes for-mátum. A képeket 8x8 képpontos blokkokra bontja és a blokkok 64 pixelének a bal felső sarokban lévő képponthoz való viszonyuk alapján írja le. Ez a tárolás jóval kevesebb helyet igényel, mintha minden kép-pont jellemzőjét külön-külön írnánk le. Kihasználják a tömörítésnél azt is, hogy az emberi szem sokkal érzé-kenyebb a fényességek változására, mint a színek módosulására, így adatvesztéses tömörítés is alkalmazható. Nagy előnye, hogy ez idáig a legjobban tömörített képformátum, ezért az Interneten a GIF mellett JPEG formátumot használják leginkább. Akár negyedakkora méretű lehet a JPG file, mint egy vele egyenlő minő-ségű GIF file. DXF (Drawing Interchange Format, *.dxf)

ASCII formátumú Autodesk Inc. fejlesztés CAD (Számítógéppel Segített Tervezés) programokhoz. Mivel az ASCII szöveg formátum rendkívül lassan dolgozható fel, ezért kifejlesztettek egy bináris változatot is. A bináris változat az AutoCAD Relase 10 változatával jelent meg, amely körülbelül 25%-kal rövidebb és kb. 5-ször gyorsabb az ASCII változattól. A DXF formátum kiválóan alkalmas grafikus adatok közvetítésére al-kalmazások között, mert a legtöbb számítógépes platformon igen népszerű formátum. Segítségével 3D ob-jektumok, görbék, és fontok is leírhatók, ezért elég nehéz feladat DXF formátum kezelő programot készíteni. Ha ilyenre vállalkozunk, akkor valójában CAD programot készítünk. Gyakorlati tény, hogy a CAD progra-mok közötti adatcsere szabványává vált ez a formátum. HP-GL (Hewlett Pakard Graphics Language, *.plt)

Hewlett Pacard fejlesztés, vektorgrafikus formátum. Eredetileg rajzgépek vezérlésére szolgált, már a lézer-nyomtatók is vezérelhetők a segítségével. Minden CAD program, a szövegszerkesztők és grafikon készítő programok által is támogatott formátum. Valójában nem képformátum, ha nem egy vonalrajzoló nyelv, amellyel papírmérettől függetlenül tudunk rajzokat megadni. A PCL 5 (Printer Control Language) nyomtató-nyelvet ismerő lézer és tintasugaras nyomtatók mind elfogadják a HP-GL/2 változatot. Tehát PCL 5 vezérlő parancsokat használva definiálhatunk a lapon egy olyan téglalap alakú területet, amelyen belül HP-GL/2 kép rajzolható. Másképpen fogalmazva, HP-GL/2 kép beágyazható PCL 5 szövegbe. PS (Basic PostScript Graphics, *.ps, *.eps)

Vektor és bittérképes formátum, valójában egy lapleíró nyelv, amely hasonlatos a FORTH programnyelvhez. Adobe Systems, Inc. fejlesztés eredetileg nyomtatókhoz és egyéb output eszközökhöz tervezték. Az EPS (Encapsulated PostScript) változat megjelenésével különösen alkalmas színes képek és nyomdakész anyagok tárolására. Bár A DTP rendszerekben a PS szabvány, de a nyelv bonyolultsága miatt feldolgozó és PS file-t input-ként elfogadó alkalmazást készíteni meglehetősen nehéz feladat. Adobe’s Postcript Language Reference Manual több mint 700 oldal.

Page 32: Kovács Emőd - Matematikai és Informatikai Intézetaries.ektf.hu/~emod/bevgraf/KOMA.pdf · 2.1 Beviteli eszközök Két alapvető grafikus beviteli művelet van. Egy adott pozíció

Fejezetek a számítógépi grafikából

32

WMF (Microsoft Windows Metafile, *.wmf) Eszköz független és jól strukturált file formátum főleg grafikus képek tárolására és Windows alatt futó al-kalmazások közötti transzponálására. Mivel igen magaszintű struktúrák is leírhatók benne, ezért jóval tömö-rebb formátum mint a bittérkép. A WMF file Microsoft Windows grafikus függvények sorozatát tartalmazza, felfoghatjuk grafikus makróutasítások halmazaként is. A metafile tartalmaz egy fejlécet (header), melyet néhány rekord követ. A rekordok tartalmaznak egy GDI hívást (Windows graphics device interface), adato-kat, függvény azonosítót és paramétereket. Jelenleg a WMF a legjobb eszközfüggetlen Windows formátum és minden Microsoft alkalmazás támogatja. Microsoft Windows Icon (*.ico)

Az ikon file 32x32 képpontot ír le általában 4 bit színmélységben. A színleíró bitekkel együtt 776 byte hosz-szú az állomány, amelyet a Windows használ ikonként. Kodak Photo CD (*.pcd)

Kodak Precision Color Management System (KPCMS) rendszert használó speciális Kodak fejlesztés, amely igen nagy felbontású és színmélységű képek tárolására alkalmas. A Kodak fotó szervizek az általunk elkészí-tett negatív filmekről előhívás után kb. 100 db képet írnak rá egy CD ROM lemezre Kodak CMS Photo CD file formátumban. A legtöbb CD ROM olvasó felismeri ezt a formátumot, így speciális Photo CD lejátszó nélkül is megtekinthetjük képeinket. A KPCMS lehetővé teszi, hogy különböző felbontásokban használjuk a képeket a rendelkezésünkre álló hardver erőforrások függvényében. A Kodak Photo CD formátumok:

Típus Felbontás Szükséges Memória (Mbyte)

Felhasználási terület

Base/16 128 x 192 0.07 Ikon szerűen megjelenő index kép Base/4 256 x 384 0.28 Elforgatott kép a képernyőn, mivel a Base változat

túl nagy méretű a forgatáshoz Base 512 x 768 1.13 Televízión vagy monitoron való megjelenítés 4 Base 1024 x 1536 4.50 3HDTV-n való megjelenítés 16 Base 2048 x 3072 18.00 DTP alkalmazások. Legnagyobb felbontás 35 mm

filmről a Photo CD Master Disc számára 64 Base 4096 x 6144 72.00 Elméletileg a legnagyobb felbontás 35 mm-es vagy

nagyobb filmről a Pro Photo CD Master Disc

A táblázatban található nagy felbontásokhoz feltétlen meg kell említenünk a Kodak cég speciális scannereit, melyek biztosítják ezeket a minőségeket. A 64 Base felbontáshoz pl. a Professional PCD Film Scanner 4045-öt ajánlják amely körülbelül 4400 pixels/inch felbontásban képes dolgozni.

5.3.2 Mozgókép formátumok

A mozgókép formátumok rendkívül dinamikusan fejlődnek. Ez a fejlődés egyrészt köszönhető a multimédiás alkalmazások előtérbe kerülésének, másrészt az INTERNET világméretű őrületének. Teljes képernyős lejátszást a legtöbb multimédiás program úgy használja, hogy egy kis ablakban jeleníti meg a videó képet és lehetőség van akár teljes képernyőre váltanunk. Ekkor a felbontás nagy mértékben lecsök-ken, mert a kis ablak pixelének színét a nagy ablak megfelelő számú pixele kapja meg. Olyan hatású, mintha nagyítón keresztül néznénk a képet. Teljes mozgású lejátszás (full motion) az emberi szemnek folyamatosnak tűnő mozgó képlejátszás, amelyben 30 képkocka jelenik meg másodpercenként. A gyakorlatban már azonban olyan videofelvételeket is teljes mozgásúnak neveznek, amelynek képváltási frekvenciája csupán 15 képkocka másodpercenként.

3 HDTV: High-definition television display

Page 33: Kovács Emőd - Matematikai és Informatikai Intézetaries.ektf.hu/~emod/bevgraf/KOMA.pdf · 2.1 Beviteli eszközök Két alapvető grafikus beviteli művelet van. Egy adott pozíció

Grafikus képformátumok

33

Autodesk FLI Autodesk Animator alkalmazás által használt mozgókép formátum, amely valójában teljesen önálló képek sorozatát tartalmazza. Grasp GL animáció Grasp (Grafical System for Presentation) valójában egy slide show, amely a Microtex Industries Inc. fejlesz-tés. Eredetileg üzleti bemutatókhoz készült, mivel parancs nyelve számtalan vizuális hatást tesz lehetővé pl. áttünések, törlések, feliratozások stb. MPEG (Moving Pictures Experts Group) Egész képernyős, teljes mozgású videó lejátszást tesz lehetővé, olyan 386-486-os rendszereken, amelyekben még csak egyszeres sebességű CD-ROM olvasó található. Könnyen ez a formátum válhat a mozgóképek szabványává (bejegyzett ISO, International Organization for Standardization szabvány), amelyet a JPEG alapján fejlesztettek ki. MPEG file JPEG képeket tartalmaz, mint vázakat, kereteket (frames), és a két egy-másután következő kép közötti különbségeket tárolja a file-ban. Ezzel a megoldással igen nagy mennyiségű képkocka elfér egy nem túl nagy méretű állományban. Mivel elég bonyolult formátumról van szó ezért ko-moly erőforrásra van szükségünk a zökkenő mentes mozi hatás elérésére. Speciális hardver eszközöket fej-lesztenek ki az MPEG file-ok lejátszására. Ma már szinte minden grafikus kártyát ellátnak MPEG lejátszó chip-pel, és megjelentek az MPEG formátumban merev lemezre rögzítő kamerák is. Sőt a mozifilmek is kaphatók úgynevezett Videó CD ROM lemezen. Egyenlőre csak kb. 75 percnyi film fér rá egy CD lemezre, de hamarosan elfogadásra kerülnek új szabványú CD ROM formátumok, amik lehetővé teszik több órás filmek rögzítését videó CD-n, videó kazetta helyett. AVI (Audio Video Interleave) A Widows felületen igen elterjedt formátum, mivel Microsoft fejlesztés és a "Video for Windows (VfW)" alkalmazás részeként jelent meg. Hanggal ellátott mozgóképsorozatok lejátszására alkalmazható, kisméretű ablakban, kb. 15 képkocka/másodperc sebességgel. A WIN95 operációs rendszerhez már hozzáadják a VfW-t, így az AVI állományok lejátszhatóak. Az AVI állomány hátránya viszonylag nagy méretében keresendő. MOV (QuickTime movies) Hasonlóan az MPEG formátumhoz ez a formátum is professzionális videó és hang vagy multimédia alkal-mazásokhoz készült. Szintén bejegyzett ISO szabvány és bár a Apple Inc. elsősorban Macintosh számítógé-pekre fejlesztette ki, már létezik népszerű PC-s alkalmazása is. GIF (Graphics Interchange Format) Az állókép formátuma mellett mozgókép formátuma is van a GIF-nek. Ennek piaci okai vannak, mivel a CompuServe fejleszti, ezért a saját hálózatán ezt a formátumot támogatja. 1994-ben az UNISYS értesítette a CompuServe-t, hogy megváltoztatta a Lempel-Ziv-Welch (LZW) kódolást amelyre épül a GIF is. Az új változatot is megvásárolta a CompuServe és a mozgókép változatban is ezt használja. Ezek után ha olyan alkalmazást akarunk fejleszteni, ami az új GIF formátumot használja, akkor szerzői jogdíjat kell fizetnünk.

Page 34: Kovács Emőd - Matematikai és Informatikai Intézetaries.ektf.hu/~emod/bevgraf/KOMA.pdf · 2.1 Beviteli eszközök Két alapvető grafikus beviteli művelet van. Egy adott pozíció

Fejezetek a számítógépi grafikából

34

5.4 Vektor- és rasztergrafika összehasonlítása A vektor és raszter (más néven pixel vagy bitmap) grafika két alapvető és lényegesen különböző metódusa a grafikus állományok megjelenítésére és tárolására. A grafikus állományok kezelésére valamelyik módszert vagy esetleg a kettőt együttesen alkalmazzák.

5.4.1 Raszteres grafika

A raszteres alkalmazások igen népszerűek, mert könnyen alkalmazhatóak és használhatóak bármely típusú kép esetén. A raszteres grafika azt jelenti, hogy a kép sorokból (scanline) és azon belül oszlopokba rendezet képpontokból épül fel. Tehát úgy képzelhetjük el, hogy a képet egy rácsszerkezettel osztottuk fel apró elemi részekre. A 15. ábra egy bittérkép kinagyított részletét mutatja, ahol rácspontok egy-egy képpontnak felelnek meg. Végeredményként az adott képpont (pixel) pozícióját és színét kell tárolnunk. A raszteres grafika alap-eleme a képpont. Alkalmazható még a képpontokból álló téglalap (pixmap), melyet főleg betűk, fontok ábrá-zolására használnak. Az előző fejezetben láthattuk, hogy nagyon sokféle raszteres állomány létezik. Ezeknek közös jellemzőjük, hogy általában a file elején, a header részben tárolják a színmélységet, színpalettát, tömö-rítési módot és egyéb a tárolással kapcsolatos információt. A bittérképes állományok egyszerű kezelhetősé-gük miatt főleg a már kész képek pl. a televíziós képfelvétel és továbbítás területén népszerűek. Meg kell említenünk a vektor grafikával való összehasonlítás miatt, hogy milyen hátrányai vannak a bittérképes grafi-kának:

• Hatalmas képméret: Egy nagy felbontású true color kép több megabyte memóriát is felemészthet a tá-roláskor, sőt még többet a megjelenítéskor.

• Komoly hardver erőforrásokat igényel: Az előzőekből is adódik, hogy pl. egy 16 bites és egy 32 bites buszrendszer közötti különbség ebben az esetben drámai különbözőségeket mutat. A megfelelő szá-mítógép egy munkaállomás (workstation) vagy egy igen gyors PC szükséges, hogy elfogadható se-bességgel tudjuk feldolgozni a grafikus képeket.

• Alacsony rugalmasság: A képpontoknak nincs kapcsolatuk egymással. Pl. egy képen amely ábrázol egy mezőt és egy házat nem tudjuk beazonosítani, hogy mely pontok a mezőé és melyek a házé, va-gyis nem léteznek poligonok és objektumok. Következésképpen, ha módosítani akarjuk a képet pl. megnagyítani vagy kicsit megdönteni a házat, akkor ez nem fog sikerülni, vagy igen fáradságos mun-ka az adott terület pontonként való módosítása.

• Felbontási probléma: A kép őrzi felbontását, bármely részét nagyítva szembetaláljuk magunkat a lép-csőhatás problémájával. Tehát ha például egy körnek látszó alakzatot kinagyítunk, akkor nem egy na-gyobb sugarú kört kapunk, hanem egy nagyobb sugarú lépcsős szélű nagy pontokból álló valamit, ami egyre kevésbé emlékeztet minket körre.

Természetesen számtalan kiváló program létezik amellyel a fent említett problémák megoldhatóak (Pl. Adobe PhotoShop, Corel Photo-Paint, stb). Ezeket az alkalmazásokat gyakran fotóretusáló programoknak is nevezik, mivel felhasználhatóságuk ehhez a szakmához áll legközelebb. A Corel Draw programcsomagban található, egy Corel Trace nevű alkalmazás, amely a raszteres képeket vektoros képekké alakítja át. Az ere-deti képen megpróbál egyeneseket és görbéket beazonosítani, azaz vektorizálni a képet. A 15. ábra egy raszteres képet ábrázol kinagyítva. A kép eredetileg egy ikon melyet sokszoros nagyítás után a vágólap segítségével illesztettük be a szövegbe.

Page 35: Kovács Emőd - Matematikai és Informatikai Intézetaries.ektf.hu/~emod/bevgraf/KOMA.pdf · 2.1 Beviteli eszközök Két alapvető grafikus beviteli művelet van. Egy adott pozíció

Vektor- és rasztergrafika összehasonlítása

35

15. ábra. Nagyító alatt egy ikon

5.4.2 Vektorgrafika

A vektorgrafika azt jelenti, hogy a képet vonalak, alakzatok és görbék sorozataként írjuk le, figyelembe vé-ve, hogy továbbra is lehetnek mintával vagy színnel kitöltött területek. A vektorgrafikát tartalmazó file úgy néz ki mintha egy program file-t vizsgálnánk. Angol parancsszavakat és adatokat tartalmaz ASCII formá-tumban, ebből következően szabadon szerkeszthető valamilyen editorral. Pl. 100 mm sugarú kör X = 225. mm és Y = 50 mm középponttal lehet a következő parancs: CIRCLE(100,2250,5000). A

16. ábrán egy HP-GL állomány tartalmát látjuk két hasábban szerkesztve ASCII formátumban, majd a 17. ábra az általa megadott rajzot tartalmazza.

Felismerhető utasítások pl:

• CI = kört rajzol adott sugárral (Circle), • PU és PD vonalhúzó utasítások (PenUp és PenDown), • PW = toll szélességét definiálaja (PenWith), • SP = Tollat választ (Select Pen).

Page 36: Kovács Emőd - Matematikai és Informatikai Intézetaries.ektf.hu/~emod/bevgraf/KOMA.pdf · 2.1 Beviteli eszközök Két alapvető grafikus beviteli művelet van. Egy adott pozíció

Fejezetek a számítógépi grafikából

36

IN LT; VS32,1 PU-400 120; VS32,2 PD 300 120; VS32,3 SP1; VS32,4 LT; VS32,5 PU-400 820; VS32,6 PD 300 820; VS32,7 SP1; VS32,8 LT; WU0 PU-400 820; PW0.350,1 PD -50 470; PW0.350,2 SP1; PW0.350,3 LT; PW0.350,4 CI 350 PW0.350,5 SP1; PW0.350,6 LT; PW0.350,7 PU -50 470; PW0.350,8 PD 300 120; SP1 SP0;

16. ábra. HP-GL forrás állomány

17. ábra. HP-GL/2 rajz

5.5 Grafikus képek a WINWORD szövegszerkesztőben és az OLE technika Az alkalmazások legtöbbje fogadja mind a vektoros mind a raszteres képeket. Az olyan típusú szövegszer-kesztő mint pl. Word for Windows képes arra, hogy a dokumentumba beágyazza vagy a dokumentumhoz hozzákapcsolja a raszteres ill. vektoros képeket. Mivel írásunkban főleg PC DOS alkalmazásokkal foglalko-zunk, ezért ebben a fejezetben az objektumok beágyazása és kapcsolása alatt a Windows alatt elterjedt OLE

Page 37: Kovács Emőd - Matematikai és Informatikai Intézetaries.ektf.hu/~emod/bevgraf/KOMA.pdf · 2.1 Beviteli eszközök Két alapvető grafikus beviteli művelet van. Egy adott pozíció

Grafikus képek a WINWORD szövegszerkesztőben és az OLE technika

37

technikát fogjuk tárgyalni (Objects Linking and Embedding, OLE). Szövegszerkesztőnek a Word for Win-dows-t választottuk, mert Magyarországon kétségkívül ez a legelterjedtebb szövegszerkesztő, és célunknak tökéletesen megfelel.

5.5.1 Képek beágyazása (Embedding) és csatolása (Linking)

Ami a számítógépünkben található −program, adatállomány, kép, táblázat, hang, mozgó kép, grafikon− az mind lehet objektum, s ezek az objektumok más objektumokat is létrehozhatnak. Ezentúl csak a képekről fogunk beszélni, bár az elmondottak a többi objektum esetén is szinte teljesen hasonlóak. Amely programot úgy készítenek el, hogy képes legyen kezelni objektumot, az elvileg bármely objektummal tud dolgozni. Persze ez nem ilyen egyszerű, és az OLE technikának nagy ára van, mert ezek a programok nagyon nagy méretűek s meglehetősen nehézkesen és lassan kezelhetők.

• Amikor hozzákapcsolunk (csatolunk) pl. egy PaintBrush (Rajzoló) képet egy Word szöveghez, akkor a Word-nek megadjuk a BMP állomány nevét és a szövegszerkesztő megjeleníti az állomány tartalmát. A Word használata közben időről időre ellenőrizhetjük a kapcsolatot és frissíthetjük azt a kép esteleges át-szerkesztés után, ezzel a módosított kép jelenik már meg a szövegben is.

• Ha beágyazzuk az előbbi képet, akkor a szövegszerkesztő dokumentumában létrejön valami, ami az ere-deti BMP kép másolatának nevezhetünk. Nem beszélhetünk állományról mert az operációs rendszer nem tud róla, neve nincs, viszont ha módosítani akarjuk, akkor a Word behívja a Paintbrush-t, s már is szer-keszthetjük a képet.

Lényeges különbség az, hogy kapcsolásnál fizikai kapcsolat létesül a két állomány között, míg beágyazásnál nem. Másképpen fogalmazva, ha a kapcsolt állományt letöröljük vagy megváltoztatjuk fizikai helyét, akkor a dokumentumban csak hibaüzenet jelenik meg a kép helyén. Beágyazásnál fizikailag is bekerül a képállo-mány másolata, későbbiek során az eredeti állomány le is törölhető, a kép akkor is benne lesz e szövegben, hiszen magában hordozza azt. Kapcsolásnál lényegesen kisebb lesz a dokumentum mérete viszont hordoz-nunk kell a kapcsolt állományokat is, míg beágyazásnál nagyon nagy méretű állományt kapunk, viszont egyetlen egy állomány tartalmaz mindent. Használhatóságról nehéz véleményt mondani, mert a Word for Windows tartalmaz olyan belső képszerkesztő programot, amely sok grafikus állomány formátumot kezel. Sokszor saját maga önkényesen megszünteti a kapcsolatokat, ha általa ismert állományról van szó. Pl. ha kapcsolunk a szöveghez egy a Word által szerkeszthető kép formátumú állományt, akkor a kép módosításá-nál nem az eredeti programot hívja be, hanem a saját képszerkesztőjét és megszünteti a kapcsolatot, vagyis beágyazza a képet. A továbbiakhoz tisztáznunk kell két fogalmat: • Kliens program: a fogadó objektumkezelő programját nevezzük így, a mi esetünkben a Word for Win-

dows szövegszerkesztő. • Kiszolgáló vagy szerver program: az OLE objektumot létrehozó és kezelő programot nevezzük így,

amely speciális objektumkezelő funkciókat tartalmaz. Pl.: PaintBrush. Amikor egy objektum bekerül egy kapcsolt dokumentumba, akkor a kliens program végzi az összerendelést azzal az alkalmazói, más néven kiszolgáló programmal, amelyik az objektumot létrehozta. Mint tudjuk az összerendelésnek két módja van, a kapcsolás vagy beszerkesztés (linking) és a beágyazás (embedding). Tud-nunk kell még azt is, hogy a Windowsban a Regisztrációs adatbázis szerkesztése egy olyan speciális eszköz, amely lehetővé teszi a számítógép működésével kapcsolatos információt tartalmazó rendszer-nyilvántartási beállítások megváltoztatását. Tehát az OLE-val kapcsolatos bejegyzések is ide kerülnek, vagyis minden újabban telepített program módosíthatja a regisztrációs adatbázist, ezért ennek megsérülése komoly problé-mákhoz vezethet, pl. az OLE technika sem használható tovább azoknál az állományoknál, ahol eddig műkö-dött. Ezek után nézzük meg, hogyan lehet grafikus állományainkat beépíteni dokumentumainkba.

5.5.1.1 Meglevő állomány csatolása a dokumentumhoz: A művelet végrehajtásához általában a következő menüpontokat kell kiválasztanunk: Beszúrás Objektum (Insert Object). Objektum helyett speciálisan a Word for Windows-ban választhatjuk a Kép almenüt is. Ha nincs Beszúrás menü, akkor nézzük át a Szerkesztés (Edit) menüt. Ezután válasszuk ki a Létrehozás fájlból opciót, keressük meg azt az állományt, amelyet hozzá akarunk kapcsolni a jelenleg használthoz és jelöljük be a Csatolás (Link to file) lehetőséget.

Page 38: Kovács Emőd - Matematikai és Informatikai Intézetaries.ektf.hu/~emod/bevgraf/KOMA.pdf · 2.1 Beviteli eszközök Két alapvető grafikus beviteli művelet van. Egy adott pozíció

Fejezetek a számítógépi grafikából

38

5.5.1.2 Meglevő állomány beágyazása a dokumentumba: Ugyanaz a teendő, mint előbb, azzal a különbséggel, hogy a Csatolás (Link to File) lehetőséget nem jelöljük ki.

5.5.1.3 Még nem létező objektum újként való beágyazása a dokumentumba: Hasonlóan járunk el: Beszúrás Objektum (Insert Object). Objektum helyett speciálisan a Word for Win-dows-ban választhatjuk a Kép almenüt is. Ha nincs Beszúrás menü, akkor nézzük át a Szerkesztés (Edit) menüt. Majd az Új létrehozása (Create New) lehetőséget válasszuk ki megadva a kiszolgáló alkalmazás objektumának típusát.

5.5.1.4 Beágyazott objektum kapcsolttá alakítása: Kattintsunk rá kétszer a beágyazott objektumra ezzel behozzuk a kívánt alkalmazást. A betöltött alkalmazás-ban jelöljük ki az objektumot (pl. képet), majd másoljuk a vágólapra. Ezt megtehetjük pl. a Szerkesz-tés Másolás (Edit Copy) menüpontokkal. Ezután kattintsunk vissza a bárhová a szövegszerkesztőbe, ezzel visszatérünk és a behozott alkalmazás bezáródik. Ezek után önállóan futtassuk a kívánt alkalmazást pl. a Fájlkezelő segítségével, majd az önállóan működő programba illesszük be a vágólap tartalmát. Ezt megtehet-jük pl. a Szerkesztés Beillesztés (Edit Paste) menüpontokkal, mentsük ki az állományt és lépjünk ki a prog-ramból. A WinWordbe visszatérve töröljük a régi objektumot, ezt legegyszerűbben úgy tehetjük meg, hogy rákattintunk az objektumra és leütjük a <Delete> billentyűt. Ezután a frissen létrehozott állományt a Meglévő állomány csatolása a dokumentumhoz című bejegyzés szerint kapcsoljuk ugyanarra a helyre.

5.5.1.5 Kapcsolt objektum beágyazottá alakítása: Ez a művelet nagyon egyszerű, csak a kapcsolt állomány helyét kell meghatározni. A Szerkesztés Csatolás (Edit Links) menüpontok segítségével meghatározhatjuk a csatolt állomány helyét. Ezek után törüljük a kapcsolt objektumot, ezt legegyszerűbben úgy tehetjük meg, hogy rákattintunk az objektumra és leütjük a <Delete> billentyűt, amivel megszüntetjük a csatolást. Ezután a kívánt helyre beágyazzuk az állományt a Meglevő állomány beágyazása a dokumentumba bejegyzés segítségével

5.5.1.6 OLE technika hátrányai Sajnos az OLE igen lassúnak mondható, s nem helytakarékos. Mind a kapcsolásnál, mind a beágyazásnál a forrásobjektum többszörösével nő a kliens állomány mérete. Az OLE használata közben a rendszer erőforrá-sait igen hamar kimeríti a számtalan szerver alkalmazás betöltése, ami könnyen a rendszer teljes összeomlás-hoz vezethet, különösen Windows 3.1 alatt. Megoldási javaslataink: • Kerüljük az automatikus frissítéseket. A Szerkesztés Csatolás (Edit Links) menüpontnál használjuk a

Kézi (Manual) frissítést az automatikus helyett, így saját magunk tudjuk vezérelni ezt. • Hagyjuk nyitva a kiszolgáló alkalmazást. Ha rendszerünk erőforrásai lehetővé teszik az OLE használatát

vagyis rendelkezünk elég gyors központi egységgel, legalább 16 Mbyte memóriával és természetesen gyors nagy kapacitású winchesterrel, akkor ne csukjuk be a szerver programokat, mert azok újból és új-ból való betöltése igen hosszú időt vehet igénybe.

• A kliens program néhány esetben saját maga is tudja olvasni a szerver programok állományait. Ilyen esetekben ne használjuk az OLE-t. Pl. a Word for Windows estén a Beszúrás Kép (Insert Picture) hasz-nálatával a grafikus állományokat közvetlenül is olvashatjuk. Különösen jó eredményt érhetünk el bittér-képek (pl. BMP) beszúrása esetén. Ez az eset akkor fordul elő, amikor a vágólap tartalma egy bittérkép, és ilyenkor a Szerkesztés Irányított beillesztés (Edit Paste) menüpontokat választjuk. Ekkor lehetősé-günk van a Winword számára kezelhetőbb Kép megoldást választani, ami kevesebb erőforrást igényel, kisebb lesz az állomány mérete és szebb nyomtatási képet is ad.

Page 39: Kovács Emőd - Matematikai és Informatikai Intézetaries.ektf.hu/~emod/bevgraf/KOMA.pdf · 2.1 Beviteli eszközök Két alapvető grafikus beviteli művelet van. Egy adott pozíció

Grafikus képek a WINWORD szövegszerkesztőben és az OLE technika

39

6. Néhány alapvető raszteres algoritmus A célunk az, hogy megadjunk néhány alapvető raszteres algoritmust amelyeket építőkockaként tudunk fel-használni grafikus programjainkban. A raszter egyenlő távolságban lévő (ekvidisztáns) pontokból álló mező. Egy raszter terület pontjait kétdimenziós tömb elemeiként címezhetjük. Képernyő pont: Picture element =Pixel. A) Poligonvonal megadása két dimenziós tömbbel:

Var Poly: Array [1..N,1..2] of Integer;

. . .X

Y

x1 x2 x3

y1 y2 y3

xn-2 xn-1 xn

yn-2 yn-1 yn

B) Poligonvonal megadása rekord szerkezettel:

Type PointType = Record x,y : Integer; End;

Var

Poly : Array [1..N] of PointType;

A derékszögű koordináta-rendszert használjuk figyelembe véve az egyes output eszközök koordináta-rendszereit. A raszteres monitorok grafikus képernyőinek címzése általában balról jobbra és fentről lefelé növekedően történik.

(0,0) (0,Xmax)

(Ymax,0) (Ymax,Xmax)

18. ábra. Képernyő koordináta-rendszer

Speciális esetekben előfordul, hogy a koordináta-rendszer kiindulópontja a képernyő bal alsó sarkában van, vagy a teknőcgrafika esetén középen található. Az általunk megadott raszteres algoritmusok a bal alsó kez-dőpontot használják, mintha a matematika füzetünkben dolgoznánk. Ez nem okoz nehézséget, mert egy egy-szerű ponttranszformációval áttérhetünk a 18.ábrán bemutatott, egyébként a monitorok kezelésének szokásos rendszerére. A Transf eljárás pl. az origóban lévő alakzatot transzformálja a 18.ábra által használt koordiná-ta-rendszer esetén a képernyő közepére.

Page 40: Kovács Emőd - Matematikai és Informatikai Intézetaries.ektf.hu/~emod/bevgraf/KOMA.pdf · 2.1 Beviteli eszközök Két alapvető grafikus beviteli művelet van. Egy adott pozíció

Fejezetek a számítógépi grafikából

40

Procedure Transf (Var x,y : integer); Begin y := y − (GetMaxY div 2); y := −y; x := x + (GetMaxX div 2); End;

Néhány újabb fogalmat is tisztáznunk kell. A ScanLine vagy letapogató vonal az összes azonos y koordinátá-jú pont halmaza, tehát a képernyő egy sorának felel meg. A raszterpontok fényerőssége az output eszközünk minőségétől függően változtatható. A legtöbb modern grafikus kártya beépített bonyolultabb algoritmusokat is tartalmaz, nem csak a pont színe állítható velük.

Page 41: Kovács Emőd - Matematikai és Informatikai Intézetaries.ektf.hu/~emod/bevgraf/KOMA.pdf · 2.1 Beviteli eszközök Két alapvető grafikus beviteli művelet van. Egy adott pozíció

Window-viewport transzformációk

41

6.1 Window-viewport transzformációk A legtöbb grafikus problémát általában Descartes koordináta-rendszerben oldunk meg, tehát derékszögű úgynevezett világkoordináta-rendszerben adjuk meg az algoritmust. A világkoordináta-rendszer speciális, ezért gyakran transzformálni kell a periféria koordináta-rendszerbe. Általában a világ koordináta-rendszer derékszögű ablakát (Window) transzformáljuk az output rendszer képtartományába (Viewport). Gyors algo-ritmusra van szükségünk, mivel sok pont kezelésével nagy mennyiségű ismétlődő számítást kell elvégez-nünk.

(vx,vy)

(wx,wy)

(wxmin,wymin)

(wxmax,wymax)

(vxmin,vymin)

(vxmax,vymax)

19. ábra.

A geometriai input és output adatokat koordináta-rendszerek közötti leképezéseknek vetjük alá. A következő koordináta-rendszereket különböztetjük meg: • világkoordináta-rendszer (World Coordinates, WC) a felhasználó ebben adja meg illetve ebben kapja

vissza a geometria információkat. • normalizált eszközkoordináta-rendszer (Normalized Device Coordinates, NDC), a különböző grafikus

munkahelyek számára egységes koordináta-rendszer. • eszközkoordináta-rendszere (Device Coordinates, DC), a munkahely hardverének megfelelő specifikus

koordináta-rendszer. A 19. ábra alapján könnyen előállíthatunk egy olyan függvényt, amely világkoordináta-rendszerben lévő pontot átviszi a NDC koordináta-rendszerbe. A függvénynek rendelkeznie kell a következő tulajdonságok-kal: A) a világ koordináta-rendszer derékszögű ablakának (Window) határvonalpontjait az output rendszer

képtartományának (Viewport) határvonalpontjaiba transzformálja. Tehát a következő megfeleltetés igaz:

( ) ( )wx wy wx wy vx vy vx vymin, min, max, max min, min, max, max→

B) Egyenestartó leképezés, vagyis egyenes képe is egyenes lesz.

C) Az x és y tengelyek a két rendszerben páronként párhuzamosak egymással.

Ebből következik, hogy a leképezés lineáris és a 19. ábra alapján a következő összefüggés vezethető le:

Page 42: Kovács Emőd - Matematikai és Informatikai Intézetaries.ektf.hu/~emod/bevgraf/KOMA.pdf · 2.1 Beviteli eszközök Két alapvető grafikus beviteli művelet van. Egy adott pozíció

Fejezetek a számítógépi grafikából

42

(1) wx wx a wx wx= + −min ( max min) ,ahol ( )0 1≤ ≤a

és igaz , hogy

(2) vx vx a vx vx= + −min ( max min)

(1)-ből adódik, hogy

awx wx

wx wx=

−−

minmax min

visszahelyettesítve (2)-be:

vx vxwx wx

wx wxvx vx

wxvx vxwx wx

vx wxvx vxwx wx

= +−−

− =

=−−

+ −−−

minmin

max min( max min)

max minmax min

min minmax minmax min

Új jelöléseket bevezetve: dvx vx vx dwx wx wx: max min : max min= − = − , és hasonlóan számítha-tó dvy és dwy.

vxdvxdwx

wx vx wxdvxdwx

= ⋅ + −⎛

⎝⎜⎜

⎠⎟⎟min min

ami lineáris leképezés.

A másik koordinátára hasonló kifejezést kapunk.

vydvydwy

wy vy wydvydwy

= ⋅ + −⎛

⎝⎜⎜

⎠⎟⎟min min

Tehát végeredményként azt kaptuk, hogy

vx A wx B= ⋅ +

vy C wy D= ⋅ +

Mivel A,B,C,D a leképezés során függetlenek a ( , )wx wy transzformálandó ponttól ezért ezeket az értékeket csak egyszer kell kiszámítani. Ha a a< >0 1 vagy akkor a transzformálandó pont kívül esik az ablakon ezért nem kell vele foglalkozni.

Page 43: Kovács Emőd - Matematikai és Informatikai Intézetaries.ektf.hu/~emod/bevgraf/KOMA.pdf · 2.1 Beviteli eszközök Két alapvető grafikus beviteli művelet van. Egy adott pozíció

Uniform eszköz transzformáció

43

6.2 Uniform eszköz transzformáció

(Wxmin,Wymin)

(Wxmax,Wymax)(a)

Világ koordináták

(Vxmin,Vymin)

(Vxmax,Vymax)

(b)

Normalizált eszköz koordináták

20. ábra.

A 20. ábra egy Window-Viewport transzformációt illusztrál, ahol a torzítási tényezők (aspect ratio) nem egyeznek meg. Torzítási tényezőn a magasság és a szélesség arányát értjük. Ilyen estetekben a kör képe el-lipszis lesz. A leképezési függvényben szereplő (dvx/dwx) és (dvy/dwy) nem egyenlő. Ez elfogadható, de a programozónak nagyon ügyelnie kell, hogy ne feledkezzen meg a torzulásról. Az uniform transzformációk-nál követelmény az előbbi hányadosok egyenlősége. is nevezhetjük Az uniform transzformáció valójában hasonlósági transzformáció is, mivel hasonló alakzatok keletkeznek.

Page 44: Kovács Emőd - Matematikai és Informatikai Intézetaries.ektf.hu/~emod/bevgraf/KOMA.pdf · 2.1 Beviteli eszközök Két alapvető grafikus beviteli művelet van. Egy adott pozíció

Fejezetek a számítógépi grafikából

44

Tekintsünk egy példát erre a problémára Turbo Pascal programozási környezetben:

Készítsük el a 21. ábrának megfelelő rajzot, amelyen egy kört érintő négyzetet láthatunk. A feladat megoldá-sánál vegyük figyelembe a torzítási tényezőt.

O(x,y)R

21. ábra

Az algoritmust világ koordináta-rendszerben triviális, de DC-ben a különböző felbontású grafikus üzemmó-dok esetén figyelembe kell venni a torzítási tényezőt.

Bemenő adatok : x ,y, r Procedure Érintő_Négyzet(x,y,r:Integer); Var

Xasp,Yasp: Word; Begin

GetAspectRatio(Xasp,Yasp); Rectangle(x−r,y−Round(r∗(Xasp/Yasp)),x+r,y+Round(r∗(Xasp/Yasp))); Circle(x,y,r);

End; Az eljárásban a Round függvény paramétereként megadott (Xasp/Yasp) hányadost érdemes zárójelbe tenni, mert így elkerülhetjük a egész típusok szorzása során fellépő túlcsordulást. A GetAspectRatio eljárás vissza-adja a grafikus meghajtó adott üzemmódjához tartozó torzítási tényezőket, vagyis a téglalap alakú képpont vízszintes ill. függőleges oldalának arányát. Néhány példa ezen értékekre:

Üzemmód Felbontás Xasp Yasp

CgaC0 320x200 8333 10000 VgaLo 640x200 4500 10000

VgaMed 640x350 7750 10000 VgaHi 640x480 10000 10000

A táblázatból kiderül, hogy 640x480-as felbontásban nincs torzítás, ezért ebben a felbontásban nem kell figyelembe vennünk a torzítást. A hiba csak akkor következik be, ha más felbontású monitoron is szeretnénk használni a programot.

Page 45: Kovács Emőd - Matematikai és Informatikai Intézetaries.ektf.hu/~emod/bevgraf/KOMA.pdf · 2.1 Beviteli eszközök Két alapvető grafikus beviteli művelet van. Egy adott pozíció

Szakasz rajzolása

45

6.3 Szakasz rajzolása Az egyenes szakasz rajzoló algoritmus megadásához elengedhetetlen néhány matematikai fogalom használa-ta. Bresenham algoritmusának levezetése első ránézésre bonyolultnak tűnik, viszont a végső eredmény köny-nyen programozható. Néhány kritériumnak eleget kell tennie a számítógéppel húzott szakaszoknak:

A) A szakasznak “egyenes vonalnak” kell látszania: Raszteres grafika esetén pontosan csak akkor lenne címezhető a szakasz egy pontja, ha 45°-os szögben vagy vízszintes vagy függőleges irányban halad. Egyéb esetben nekünk kell döntenünk, hogy az ideális egyenestől eltérően melyik raszterpontot választ-juk.

B) Pontosnak kell lennie: Ha nem pontosan a kezdőpontból indul és a végpontig tart a szakasz, akkor poligonvonal rajzolása esetén halmozódóan kicsiny hézagok láthatók az egyik szakasz végpontja és a másik szakasz kezdőpontja között.

C) Fedettsége legyen állandó függetlenül a vonal hosszától és hajlásszögétől: Vonal fedettséget fényesség-ként érzékeljük amikor sötét háttér mellett rajzoljuk a szakaszt. Ez a kritérium csak a már említett ked-vező esetekben (45°, 0° és 90°) érhető el tökéletesen. Kis felbontású képernyőnél (pl. 320x200) egyik legismertebb szépséghiba a ferdevonalaknál fellépő lépcsőhatás. Ilyen esetekben a vonal fedettségének a megváltoztatása vezethet eredményhez. Tehát a vonal és a környező pontok világosságának változta-tásával simán futó vonal hatása érhető el. Életlenebb képet kapunk, de a zavaró sarkosság eltüntethető.

D) Gyors legyen: Mivel igen gyakran használják ezeket, ezért a gyorsaság alapvető elvárás az algoritmus-sal szemben.

6.3.1 Egyszerű növekményes módszer

Legegyszerűbbnek tűnő megoldás, ha az egyenes y mx b= + alakú egyenletéből indulunk ki. Ekkor rögtön megkapjuk az egyenes y tengelypontját (0,b). Ezek után az m dy dx= / segítségével meghatározzuk, hogy mennyit lépjünk balra és mennyit felfelé, hogy megkapjuk az egyenes következő pontját. Hasonlóan járunk el, mint ahogy azt általános iskolában tanultuk a matematika órán. Észrevétlenül egy növekményes algorit-must kaptunk. Az algoritmus nem ad szép képet, hiszen nekünk kell kerekítenünk a kapott (x,y) értékeket, mert az ideális egyenes helyett csak közelítő raszter pontokat kaphatunk. Ezen a hiányosságon próbál segíte-ni az egyszerű DDA (digitális differenciál-analizátor), mégpedig úgy, hogy a dx-et és dy-t kedvezőbben választja meg. A nagyobb elmozdulás irányában legyen a növekmény egy, tehát Max(dx,dy)=1. A 22. ábra egyszerű DDA-val rajzolt szakaszt mutat.

Page 46: Kovács Emőd - Matematikai és Informatikai Intézetaries.ektf.hu/~emod/bevgraf/KOMA.pdf · 2.1 Beviteli eszközök Két alapvető grafikus beviteli művelet van. Egy adott pozíció

Fejezetek a számítógépi grafikából

46

22. ábra.

Ha az egyik növekmény 1, akkor ez lehetővé teszi, hogy az egyik növekménynél közönséges számlálót hasz-náljunk.

Procedure DDA (x1,y1,x2,y2,color : in teger) ; Var

hossz , i : in teger ; x,y ,xn,yn :double ;{8 byte-os}

Begin hossz := abs (x2−x1 ) ; If abs (y2−y1 )> hossz Then hossz := abs (y2−y1 ) ; I f hossz<>0 then Begin xn := (x2−x1 ) /hossz ; yn := (y2−y1 ) /hossz ;

x := x1; y := y1; PutPixel(Trunc (x+0.5 ) ,Trunc (y+0.5 ) ,color ) ; For i := 1 to hossz do

Begin x := x+xn ; y := y+yn ; PutPixel(Trunc (x+0.5 ) ,Trunc (y+0.5 ) ,color ) ;

End ; End ;

End ;

6.3.2 Bresenham-algoritmus, Midpoint-algoritmus

Bresenham, J.E. kifejlesztett egy klasszikus algoritmust, amely kijavítja az egyszerű DDA hibáit és alkalmas hardver implementációra is. Később Midpoint (középpont) technikát fejlesztettek ki, amelyre épülő algorit-must először Pitteway, M.L.W. publikált. A középpont technika kimutathatóan ugyanazokat a pontokat pro-dukálja egyenes szakaszok esetén, mint az eredeti Bresenham-algoritmus. Most nem az eredeti algoritmust ismertetjük, hanem áttérünk a Midpoint algoritmusra. Induljunk ki ismét az egyenes y mx b= + alakú egyenletéből. A megrajzolandó szakasz kezdő és végpont-jával adott. Tehát készítenünk kell egy Line(x1,y1,x2,y2) eljárást. Legyen dx:= x2−x1 és dy:= y2−y1 . Ekkor m dy dx= / . Tegyük fel, hogy az egyenes meredekségére a következő: 0 1≤ ≤m tehát az egye-nesnek a vízszintes tengellyel bezárt α szöge 0° és 45° közé esik, ugyanis m = tg( )α . Ebből az követke-zik, hogy az x tengely irányú elmozdulás nagyobb mint az y tengelyű elmozdulás. A növekményes algorit-mus az x érték eggyel való növelésekor kiszámolja, hogy mennyivel kell változtatni az y koordinátát. Az egyenes ideális nyomvonala valahol a két y koordináta között halad. Az a feladatunk, hogy a két lehetséges y koordináta közül azt válasszuk ki, amelyiknek az ideális egyenestől mért eltérése a kisebb.

Page 47: Kovács Emőd - Matematikai és Informatikai Intézetaries.ektf.hu/~emod/bevgraf/KOMA.pdf · 2.1 Beviteli eszközök Két alapvető grafikus beviteli művelet van. Egy adott pozíció

Szakasz rajzolása

47

xbCxByAxbyxxyCyBxAyxF

bxxyy

bxmyxxyy

xym

∆⋅=∆−=∆==∆⋅+⋅∆−⋅∆=+⋅+⋅=

+⋅∆∆

=

+⋅=−−

=∆∆

=

,,0),(

12

12

x

y

F(x,y)<0

F(x,y)>0

F(x,y)=0

Ha 0 1≤ ≤m , akkor ∆x = 1 -re ∆y < 1 lesz (azaz 1 lépés x-ben egynél kisebb lépést jelent y-ban).

M

NE

EP=(x , y )p p

Q

Ha d F x yp p p+ = + +⎛⎝⎜

⎞⎠⎟>1 1 1

20, , akkor a P után az NE (North East) pontot gyújtjuk ki.

Ha d F x yp p p+ = + +⎛⎝⎜

⎞⎠⎟<1 1 1

20, , akkor a P után az E (East) pontot gyújtjuk ki.

Ha d F x yp p p+ = + +⎛⎝⎜

⎞⎠⎟=1 1 1

20, , akkor a P után az E pontot gyújtjuk ki (megállapodás

szerint).

Page 48: Kovács Emőd - Matematikai és Informatikai Intézetaries.ektf.hu/~emod/bevgraf/KOMA.pdf · 2.1 Beviteli eszközök Két alapvető grafikus beviteli művelet van. Egy adott pozíció

Fejezetek a számítógépi grafikából

48

Ha minden x szerinti lépésben az ( , )x yp p+ +1 1 pontot behelyettesítenénk az F-be, akkor a sok művelet miatt lassú lenne a számítás, ezért próbáljuk meg meghatározni a d p+2 értékét a d p+1 értékéből. Ennek meghatározásához két esetet kell figyelembe vennünk: a) E-t választottuk az xp+1 pontban

( )

( )yAddE

CyBxAyxFd

CyBxAyxFd

pp

ppppp

ppppp

∆==−=∆

+⎟⎠⎞

⎜⎝⎛ +⋅++⋅=⎟

⎠⎞

⎜⎝⎛ ++=

+⎟⎠⎞

⎜⎝⎛ +⋅++⋅=⎟

⎠⎞

⎜⎝⎛ ++=

++

+

+

12

1

2

211

21,1

212

21,2

b) NE-t választottuk az xp+1 pontban

( )

( )xyBAddNE

CyBxAyxFd

CyBxAyxFd

pp

ppppp

ppppp

∆−∆=+=−=∆

+⎟⎠⎞

⎜⎝⎛ +⋅++⋅=⎟

⎠⎞

⎜⎝⎛ ++=

+⎟⎠⎞

⎜⎝⎛ +⋅++⋅=⎟

⎠⎞

⎜⎝⎛ ++=

++

+

+

12

1

2

211

21,1

232

23,2

Meghatároztuk, hogy az x szerint lépkedve, hogyan változik a d az előző x d értékére ala-pozva. Mostmár csak a d kezdeti értékét kell meghatároznunk. Az első képpontunk a szakasz egyik végpontja, legyen ez ),( 11 yx .

Az első középpont ⎟⎠⎞

⎜⎝⎛ ++

21,1 11 yx -nél van, és így

( )

( )

.22

aÍgy

,0, az an, vonalon va ),( Mivel

.2

,22

1,1

0

1111

1111110

xyBAd

yxFyx

BAyxFBACyBxAyxFd

∆−∆=+=

=

++=+++⋅+⋅=⎟⎠⎞

⎜⎝⎛ ++=

A törtek elkerüléséhez szorozzuk meg az d kezdőérékét 2-vel. SHR SHL

d :=2∗dy−dx ; x :=x1 ;y :=y1 ; For i :=1 to dx do

Begin PutPixel(x,y ,color ) ; If d>0 Then Begin

y :=y+1; d :=d+2∗(dy−dx ) ;

End Else d :=d+2∗dy ;

x :=x+1; End ;

Az algoritmus erőssége abban rejlik, hogy el lehetet kerülni az osztást. Tehát egy olyan eljárást kaptunk, amely egész aritmetikát tartalmaz, nem használunk osztást sőt szorzást sem, mivel a 2-vel való szorzás he-lyettesíthető léptetéssel.

Page 49: Kovács Emőd - Matematikai és Informatikai Intézetaries.ektf.hu/~emod/bevgraf/KOMA.pdf · 2.1 Beviteli eszközök Két alapvető grafikus beviteli művelet van. Egy adott pozíció

Szakasz rajzolása

49

Az algoritmust most már csak fel kell oldanunk a kezdeti megszorítások alól. Ugyanis az egyenesnek a víz-szintes tengellyel bezárt szöge 0° és 45° közé esik. Ebből az is következik, hogy az x tengely irányú elmoz-dulás nagyobb mint az y tengely irányába eső. Egyszerű kiegészítéssel – ami az algoritmus elvét nem érinti – az algoritmus teljessé tehető. A kiindulási feladat alapján valójában nyolc eset különböztethető meg, (23. ábra) figyelembe véve a kezdő és végpontok viszonyát is.

y

x

23. ábra. Az eredeti egyenesből tükrözéssel előállítható a többi eset Az ábráról leolvasható, hogy esetenként a koordinátákat nem növelni kell eggyel, hanem csökkenteni, ehhez bevezetjük az sx és sy váltózókat, ezekben a növekményt tároljuk, értékük -1,0 és +1 lehet. Ha a meredekség nagyobb mint 1 akkor a dx és dy szerepe fölcserélődik.

Page 50: Kovács Emőd - Matematikai és Informatikai Intézetaries.ektf.hu/~emod/bevgraf/KOMA.pdf · 2.1 Beviteli eszközök Két alapvető grafikus beviteli művelet van. Egy adott pozíció

Fejezetek a számítógépi grafikából

50

Ezek után tekintsük meg a teljes eljárást: Function sgn(x:integer):integer;

Begin If x>0 Then sgn:=1 Else If x<0 Then sgn:=−1

Else sgn:=0; End;

Procedure Midpoint(x1,y1,x2,y2,color:integer); Var dx,dy,sx,sy,s,d,i1,i2 : integer;

t: byte; Begin

dx:=abs(x2−x1); dy:=abs(y2−y1); sx:=sng(x2−x1); sy:=sng(y2−y1); If dx< dy Then

Begin s:=dx; dx:=dy; dy:=s; t:=1;

End Else t:=0;

d:=2∗dy−dx; i1:=2∗dy; i2:=2∗dx; Putpixel(x1,y1,color); While (x1<>x2) or (y1<>y2) do

Begin If d>0 Then Begin

If t=1 Then x1:=x1+sx Else y1:=y1+sy ;

d:=d-i2; End;

If t=1 Then y1:=y1+sy ; Else x1:=x1+sx

d:=d+i1; Putpixel(x1,y1,color);

End; End; A sng függvény szokás szerint az előjelet adja vissza, a color pedig a vonal színét határozza meg.

Page 51: Kovács Emőd - Matematikai és Informatikai Intézetaries.ektf.hu/~emod/bevgraf/KOMA.pdf · 2.1 Beviteli eszközök Két alapvető grafikus beviteli művelet van. Egy adott pozíció

Kör és ellipszis rajzolása

51

6.4 Kör és ellipszis rajzolása Bizonyos alkalmazásokban gyakran kell köröket és ellipsziseket rajzolni. Ezen alakzatok előállításának algo-ritmusát alapfeladatnak tekintjük. Matematikai ismereteink alapján könnyen tudunk algoritmust készíteni, de ha csak egész aritmetikát szeretnénk használni, akkor ez már nehezebb feladat. Tekintsük az origó középpontú R sugarú kör implicit egyenletét:

x y R2 2 2+ = . Ebből explicit függvény alakot nyerhetünk, ha két félkörívre bontjuk a kört:

y R x= ± −( )2 2 Elég meghatároznunk az egyik félkörív pontjait, a másik a pontok x tengelyre való tükrözéssel nyerhetők. Ezt az elgondolást tovább fejlesztve – a kör szimmetriáját kihasználva – csak a negyedkör pontjait, sőt akár nyolcadkör pontjait számoljuk ki, a többi tükrözéssel nyerhető. Nem számít speciális esetnek, hogy a közép-pont az origóban van, hiszen ebből eltolással bármely kör előállítható.

(x,y)

(x,−y)(−x,−y)

(y,x)

(y,−x)(−y,−x)

(−y,x)

(−x,y)

R2

24. ábra. A 24. ábrán látható, hogyan kell elkészítenünk a nyolcadkör alapján a többi körpontot. Könnyen kiszűrhetjük az x=y koordinátájú pontoknál fellépő fölösleges rajzolást, hiszen az egybeesések miatt elég csak 4 pontot fölrajzolnunk

Page 52: Kovács Emőd - Matematikai és Informatikai Intézetaries.ektf.hu/~emod/bevgraf/KOMA.pdf · 2.1 Beviteli eszközök Két alapvető grafikus beviteli művelet van. Egy adott pozíció

Fejezetek a számítógépi grafikából

52

A következő algoritmusban ezt a sajátos szimmetriát használjuk ki:

Procedure Körpont(x,y,color: integer); Begin

PutPixel(x,y,color); PutPixel(y,x,color); PutPixel(y,−x,color); PutPixel(x,−y,color); PutPixel(−x,−y,color); PutPixel(−y,−x,color); PutPixel(−y,x,color); PutPixel(−x,y,color);

End;

Lehetőségünk van arra, hogy a kör paraméteres egyenletrendszeréből induljunk ki:

[ ]x t R ty t R t t( ) cos( )( ) sin( ), ,

= ⋅

= ⋅ ∈ 0 2π

Ebben az esetben a sin és cos függvény használata okozhat nehézséget, viszont nagyon egyszerű az áttérés az a nagytengelyű és b kistengelyű ellipszisre:

[ ]x t a ty t b t t( ) cos( )( ) sin( ), ,

= ⋅

= ⋅ ∈ 0 2π

25. ábra. Az ellipszis és a kör kapcsolata Nem szabad megfeledkeznünk arról, hogy az ellipszis a 25. ábra szerinti a sugarú körből származtatható tengelyes affinitással. Az affinitás tengelye az x tengely. Tehát a kört “összenyomtuk” az x tengelyre. Fontos tudni, hogy a P’ pont koordinátáinál fellépő t paraméter az affinitásnál hozzárendelt P körpont t paraméterével egyezik meg. Tehát a t szög a P körponthoz tartozik és nem a P’ ellipszis pont bezárt szöge az x tengellyel. Ezt a megjegyzést fontosnak tartottuk, mert nagyon gyakran megfeledkeznek erről a geomet-riai tényről és hibás applikációkat készítenek.

a

b

P(x,y)

P’(x’,y’)

t x

y

Page 53: Kovács Emőd - Matematikai és Informatikai Intézetaries.ektf.hu/~emod/bevgraf/KOMA.pdf · 2.1 Beviteli eszközök Két alapvető grafikus beviteli művelet van. Egy adott pozíció

Kör és ellipszis rajzolása

53

P x y P x yx a t y a tx a t y b t

affinítás( , ) ' ( ' , ' )cos( ) sin( )

' cos( ) ' sin( ),

⎯ →⎯⎯= ⋅ = ⋅= ⋅ = ⋅

Kör: , Ellipszis: ,

Lehetőségünk van arra is, hogy a már jól ismert növekményes módszert alkalmazva készítsünk körrajzoló algoritmust. Felhasználjuk az origó körüli forgatás ponttranszformációját.

Page 54: Kovács Emőd - Matematikai és Informatikai Intézetaries.ektf.hu/~emod/bevgraf/KOMA.pdf · 2.1 Beviteli eszközök Két alapvető grafikus beviteli művelet van. Egy adott pozíció

Fejezetek a számítógépi grafikából

54

6.4.1 Origó körüli forgatás:

Valamely P(x,y) pontot elforgatunk az origó körül α szöggel pozitív (az óra mutató járásával ellentétes) irányba P’(x’,y’) pontot kapjuk, ahol

P x y P x yx x yy x y

forgatás( , ) ' ( ' , ' )' cos sin ,' sin cos .

⎯ →⎯⎯⎯= ⋅ − ⋅= ⋅ + ⋅

α αα α

Ez az eredmény könnyen belátható a 26. ábra alapján:

αααωαω

αωαωαω

αωαω

ωω

sincos sinsincoscos

)sinsincos(cos)cos('

)sin(')cos('

sincos

⋅−⋅==⋅⋅−⋅⋅=

=⋅−⋅⋅=+⋅=

+⋅=+⋅=

⋅=⋅=

yxddddx

dydxdydx

P’(x’,y’)

P(x,y)

d

αω

x

y

d

26. ábra.

Page 55: Kovács Emőd - Matematikai és Informatikai Intézetaries.ektf.hu/~emod/bevgraf/KOMA.pdf · 2.1 Beviteli eszközök Két alapvető grafikus beviteli művelet van. Egy adott pozíció

Kör és ellipszis rajzolása

55

Érvényesek az alábbiak:

x dy dx dy d

x d dd dx y

= ⋅= ⋅= ⋅ += ⋅ +

= ⋅ + = ⋅ ⋅ − ⋅ == ⋅ ⋅ − ⋅ ⋅ == ⋅ − ⋅

cossin

' cos( )' sin( )

' cos( ) (cos cos sin sin )cos cos sin sin )cos sin

ωωω αω α

ω α ω α ω αω α ω αα α

Hasonló számítással adódik:

y d dd d d dx y

' sin( ) (sin cos cos sin )sin cos cos sin cos sin sin cossin cos

= ⋅ + = ⋅ ⋅ + ⋅ == ⋅ ⋅ + ⋅ ⋅ = ⋅ ⋅ + ⋅ ⋅= ⋅ + ⋅

ω α ω α ω αω α ω α ω α ω αα α

Ezt az eredményt felhasználva tudunk körgenerátort készíteni. Ugyanis egy kicsiny θ szöggel forgatjuk el a P pontot majd az elforgatottat újból elforgatjuk és így tovább, amíg meg nem kapjuk a kívánt mennyiségű körpontot. Mivel θ általában kicsiny ezért sin θ és cos θ viszonylag könnyen előállítható, és ezek az értékek konstansként szerepelnek bármely adott körsugár mellett. Nézzük az algoritmus egyenlet párját:

x x yy x in y

n n n

n n n

+

+

= ⋅ − ⋅= ⋅ + ⋅

1

1

cos sincos

θ θθ θs

A θ megválasztásánál ügyelni kell, hogy szimmetrikus alakzatot kapjunk. Ezt úgy tudjuk elérni, hogy 90 ° a θ egészszámszorosa legyen. Sajnos továbbra is probléma a valós számok használata ebből kifolyólag az algoritmus lassú, viszont a módszer kiterjeszthető a többi kúpszeletre is.

Page 56: Kovács Emőd - Matematikai és Informatikai Intézetaries.ektf.hu/~emod/bevgraf/KOMA.pdf · 2.1 Beviteli eszközök Két alapvető grafikus beviteli művelet van. Egy adott pozíció

Fejezetek a számítógépi grafikából

56

6.4.2 A midpoint (középonti) algoritmus

Bresenham nevéhez fűződik szintén egy olyan körgeneráló algoritmus, amely eleget tesz azoknak a kritériu-moknak, hogy egész aritmetikát használ és alkalmas akár hardver implementációra is. Szintén növekményes algoritmust kapunk, tehát (xi+1,yi+1) kiszámítását az (xi,yi) meghatározása után nyerjük. Az algoritmus során a második nyolcadot tárgyaljuk, a többi pont meghatározható a már ismertetett tükrözésekkel.

Tekintsük azt az esetet amikor xR

y RR

∈⎡

⎣⎢

⎦⎥ ∈

⎣⎢

⎦⎥0

2 2, , , .

A stratégiánk az, hogy két pixel pont közül azt válasszuk ki, amelyik közelebb áll a kör ideális nyomvonalá-hoz. Kiszámítjuk a kör 0-ra rendezett implicit egyenletéből kapott függvény helyettesítési értékét, a két pixel pont által meghatározott szakaszközéppontnál (midpoint), s a kapott érték előjelétől függően választunk a határpontok közül. A jobb érthetőség kedvéért vizsgáljuk meg az 27. ábrát.

MSE

P(xp,yp) E

M ME

SE

Előző pont

Aktuális pontválasztás

Következőpont választás

27. ábra.

Az előző pont a P(xp,yp) volt, a következő körpontot az E és SE közül kell kiválasztanunk. Tekintsük az említett függvényt:

F x y x y R( , ) = + −2 2 2 Ez a függvény 0 ha a középpont illeszkedik az ideális nyomvonalra, pozitív ha a pont kívül van a körön és negatív ha belül. Pl. az M középpont belül van, tehát a helyettesítési értéke negatív, ezért az E pontot választ-juk. Ahogy a szakaszrajzolónál tettük, legyen a döntési változók az i. lépésben d(i). Az előző P(xp,yp) pont alapján d(i) meghatározható az M pontban:

(1) ( )d i F x y x y Rp p p p( ) , .= + −⎛⎝⎜

⎞⎠⎟ = + + −

⎛⎝⎜

⎞⎠⎟ −1

12

112

22

2

Page 57: Kovács Emőd - Matematikai és Informatikai Intézetaries.ektf.hu/~emod/bevgraf/KOMA.pdf · 2.1 Beviteli eszközök Két alapvető grafikus beviteli művelet van. Egy adott pozíció

Kör és ellipszis rajzolása

57

Felhasználjuk, hogy d(i) -ből két eset vezethető le:

I. Ha d(i)<0 akkor az E pontot választjuk. A következő pont esetén az (i+1). lépésben legyen a döntési változók d(i+1).Az ME középpontot vizsgáljuk. Az előző P(xp,yp) pont alapján d(i+1) is meghatározható. A növekményt ∆E-vel jelöljük:

(2) ( )d i F x y x y R

d i d i x E x

p p p p

p p

( ) ,

( ) ( ) ( ) ( )

+ = + −⎛⎝⎜

⎞⎠⎟ = + + −

⎛⎝⎜

⎞⎠⎟ −

+ = + + = +

1 212

212

1 2 3 2 3

22

2

, ∆

II. Ha d i( ) ≥ 0 akkor az SE pontot választjuk, ekkor d(i+1) kiszámítása változik. Az MSE középpontot vizs-gáljuk. A növekmény ebben az esetben ∆SE-vel jelöljük:

(3) ( )d i F x y x y R

d i d i x y SE x y

p p p p

p p p p

( ) ,

( ) ( ) ( ) ( )

+ = + −⎛⎝⎜

⎞⎠⎟ = + + −

⎛⎝⎜

⎞⎠⎟ −

+ = + − + = − +

1 232

232

1 2 2 5 2 2 5

22

2

, ∆

A képletek megadják az algoritmust, hogyan lehet egy közbülső d(i)-hez kiszámítani az utána következő d(i+1)-et. Hiányzik a kezdőérték meghatározása. Az (1) egyenletbe behelyettesítjük a kezdő körpont (0,R) koordinátáit az yp és xp koordináták helyébe. Ekkor a következő összefüggést kapjuk:

(4) d F R R R R R R R( ) ,1 112

112

114

54

22 2 2= −

⎛⎝⎜

⎞⎠⎟ = + −

⎛⎝⎜

⎞⎠⎟ − = + − +

⎛⎝⎜

⎞⎠⎟ − = −

Ezek után megadjuk a körrajzoló eljárást: Procedure MidpointCircle(R,,color: integer); Var x,y : integer; d: real; Begin

x:=0; y:=R; d:=5/4−R; KorPont(x,y,color); While y>x do

Begin If d<0 Then Begin

d:=d+2∗x+3; x:=x+1;

End Else Begin

d:=d+2∗(x−y)+5; x:=x+1; y:=y−1;

End; KorPont(x,y,color);

End; End; Az algoritmus hátránya, hogy a d változó valós típusú. Egy egyszerű program transzformációval megszüntet-

jük a d változó inicializálásánál fellépő osztást. Bevezetünk egy új döntési változót: h d:= −14

és ezzel d-t

h +14

-re cseréljük. Ekkor az inicializálás h R:= −1 lesz, és a ciklusmagban a feltétel h < −14

-re válto-

zik. Mivel h egész értékről indul és egész értékkel növekszik, ezért ezt a feltételt megváltoztathatjuk h < 0 -ra. Ezek után nézzük, a már csak egész értékekkel dolgozó algoritmust:

Page 58: Kovács Emőd - Matematikai és Informatikai Intézetaries.ektf.hu/~emod/bevgraf/KOMA.pdf · 2.1 Beviteli eszközök Két alapvető grafikus beviteli művelet van. Egy adott pozíció

Fejezetek a számítógépi grafikából

58

Procedure MidpointCircle(R,,color: integer); Var x,y,h : integer; Begin

x:=0; y:=R; h:=1−R; KorPont(x,y,color); While y>x do

Begin If h<0 Then Begin

h:=h+2∗x+3; x:=x+1;

End Else Begin

h:=h+2∗(x−y)+5; x:=x+1; y:=y-1;

End; KorPont(x,y,color);

End; End;

Az algoritmusáltal generáltmásodik nyolcad

Tükrözésselgenerált elsőnyolcad

28. ábra. A 28. ábra jól mutatja, hogy hogyan generálta a pixelpontokat a körpontokat generáló növekményes közép-ponti algoritmus. Ahogy fentebb említettük az első nyolcad pontjait állítjuk elő, a többi körpont pedig a ko-ordináta tengelyekre és a szögfelező egyenespárra történő tükrözéssel származtatható.

Page 59: Kovács Emőd - Matematikai és Informatikai Intézetaries.ektf.hu/~emod/bevgraf/KOMA.pdf · 2.1 Beviteli eszközök Két alapvető grafikus beviteli művelet van. Egy adott pozíció

Rekurzió:

59

7. Rekurzív görbék és a teknőc grafika A téma kifejtéséhez hozzátartozik a LOGO nyelv ismertetése, melyre ezen írás keretein belül nem vállalko-zunk. A LOGO programozási nyelv talán legismertebb és legnevezetesebb része a teknőc grafika, melyet szintén ismertnek feltételezünk.

A Logo kifejezetten rajzorientált és megfelelően strukturált. Megtehetjük, hogy minden utasítás eredménye azonnal látható legyen interaktívan lépésenként vezérelve teknőcünket. Utasításainkat csomagolhatjuk is eljárások írásával és így tehetjük próbára ötleteinket. A strukturáltság a Logo egyik legfőbb jellemzője és pedagógiai értéke. Bemutatjuk, hogy milyen szoftver eszközök segítségével használjuk a Logo-t a rekurzió oktatásában.

7.1 Rekurzió:

Akkor mondjuk valamiről, hogy rekurzív, ha saját magát is tartalmazza, önmagával van definiálva. Rekurzi-óval nem csak a matematikában, hanem a mindennapi életben is találkozhatunk. Ki ne próbálta volna ki, hogy egy tükörrel a kezében áll a tükör elé, vagy egy kamerával felvesszük a megjelenő kameraképét a tele-vízión.

A rekurzió különösen hasznos eszköze a matematikai definícióknak. A természetes számok, a binárisfa és

bizonyos függvények példája is ezt mutatja. Gondoljunk az nk

⎛⎝⎜

⎞⎠⎟ -ra vagy a faktoriális definíciójára.

Rekurzió ereje nyilvánvalóan az, hogy véges sok állítással végtelen sok dolog definiálására nyílik lehetőség. Ugyanígy végtelen sok számítási lépést is ki lehet fejezni egyetlen, véges, rekurzív programmal anélkül, hogy benne explicit ciklust szerepeltetnénk.

A rekurzív algoritmusok használata elsősorban ott indokolt, ahol a megoldandó probléma, a kiszámítandó függvény eleve rekurzív módon definiált. A rekurzió használatának természetes eszköze az eljárás, függvény vagy szubrutin. Ennek megfelelően egyrészt beszélhetünk közvetlen rekurzióról amikor a P rekurzív függ-vény önmagát hívja. Másrészt beszélhetünk közvetett rekurzióról amikor a P függvény egy Q függvényt hív és a Q függvény visszahivatkozik a P-re.

Általánosan P rekurzív programot P-t nem tartalmazó Si alaputasításoknak és magának a P−nek valamilyen összetétele alkotja, gondolva a befejeződésre azaz nem rekurzív részre is: pl. legkézenfekvőbb a befejezés biztosítására egy n paraméter bevezetése és mindig n-1 paraméterérték megadása P rekurzív hívásaiban:

P(n)≡ ha n>0 akkor P[Si, ,P(n-1)] { Rekurzív rész}

különben B { Nem rekurzív rész}

(N. Wirth: Algoritmusok + adatsruktúrák = programok)

A gyakorlatban nemcsak a rekurzió végességét, hanem a mélységét is ellenőrizni kell. Ugyanis a rendelkezé-sünkre álló verem mérete hamar elégtelennek bizonyulhat. Ez a téma rögtön arra is figyelmeztet bennünket, hogy megvizsgáljuk mikor ne használjunk rekurziót. Erről bővebben Zsakó László, Szlávi Péter : Rekurzió munkájában olvashatunk, amely a jól ismert és méltán népszerű µlógia sorozat 4. tagja.

7.2 A rekurzív görbék:

A rekurzív görbék tanulmányozása során egyrészt a rekurzió fogalmának megértését is elősegítjük, másrészt a Logo mélyebb elsajátításához is segítséget kapunk, harmadrészt egy speciális szabadszoftver használatának segítségével a fraktálok, Mandelbrot és Júlia halmazok készítésébe is betekintést nyernek az olvasók.

A rekurzív görbék, ábrák megadása történhet egyszerűen úgy, hogy megadjuk az 1., majd a 2., 3. stb. elem görbéjét, és a rajz sugallja számunkra a képzés szabályát. Természetesen az így keletkezett rajzokból meg tudjuk adni a rekurzív definíciót is. Ez az a pont, ahol többféleképpen járhatunk el, mert figyelembe kell vennünk, hogy milyen rajzoló eszközzel akarjuk majd a görbét előállítani. Pontosabban fogalmazva használ-hatunk hagyományos grafikát pl. Turbo Pascal Graph Unit-ját vagy irányított grafikus kurzort. A tapasztala-tok szerint sokkal egyszerűbben definiálhatók a rekurzív görbék a Logo-ban, ahol a Teknőc grafika rendel-

Page 60: Kovács Emőd - Matematikai és Informatikai Intézetaries.ektf.hu/~emod/bevgraf/KOMA.pdf · 2.1 Beviteli eszközök Két alapvető grafikus beviteli művelet van. Egy adott pozíció

Fejezetek a számítógépi grafikából

60

kezésünkre áll. Saját magunk is készíthetünk olyan Unit-ot, amely a grafikus kurzor irányítását lehetővé teszi. Emellett választhatjuk a CGA grafikus kártya lehetőségeire támaszkodva a Turbo Pascal ősrégi Graph3 Unit-ját, amely a Pascal első grafikus kiterjesztése volt, és a teknőc grafikát támogatta. Egyszerűbb és jobb megoldás egy létező Logo implementációt használni vagy magunk készíteni. Ez utóbbit követték Egerben az Eszterházy Károly Tanárképző Főiskola Számítástechnika Tanszékén is. Hernyák Zoltán OTDK 1.díjas munkája Robot programot tartalmaz, amelyet valós tanítási körülmények között kipróbáltak és teszteltek. A program megvalósítja a teknőcgrafikát, amit interaktívan és programszerűen is használhatunk. Egy érdekes megoldás arra nézve, hogy alkalmas a Pascal programozási nyelv bevezetésére is, és megpróbálja hordozni mind a Pascal, mind a Logo előnyeit.

Emellett még használhatjuk a Bert Tyler Fractint 19.5 verzióját, amely egy csodálatosan megírt fraktál raj-zoló program. A szoftver szabadon felhasználható, sőt a C nyelvű forráskód is rendelkezésre áll. A program-mal nagyon egyszerűen és gyorsan készíthető Mandelbrot és Júlia halmaz valamint még számtalan egyéb fraktál és rekurzív görbe. A rekurzív görbék a teknőcgrafikához hasonlóan relatív vonatkoztatási rendszerben definiálhatók. A Fractint program tekinthető egy speciális rajzoló eszköznek is, amellyel gyönyörű ábrák készíthetők. Az elmúlt évtizedben már hazánkban is számos kiállítást rendeztek a Mandelbrot halmazok ábráiból. Első ránézésre talán öncélú grafikák ezek, de a filmipar bebizonyította ennek ellenkezőjét. Többek között az Indastrial Light & Magic, Pixar és a George Lucas filmstúdió is használja ezen fraktálokat, hogy mesterségesen generáljanak különböző térbeli felületeket. Ilyen felület lehet például egy havas táj, egy fém-bolygó vagy egy fenyőerdő.

7.2.1 Fraktálok:

A rekurzív módon megadott görbe n-ed rendű ábrái egy sorozatot alkotnak, és ha ez konvergens, akkor en-nek a határértékét nevezzük határgörbének. Ezek a határgörbék lefedik a sík egy tartományát de mégis végte-len hosszúak. Mondhatjuk egy dimenziónál több de két dimenziónál kevesebb kiterjedésűek, vagyis úgyne-vezett tört dimenziójúak. Az ilyen alakzatokat nevezzük fraktáloknak. A fraktálok különösen akkor kerültek előtérbe, amikor Benoit B. Mandelbrotról (IBM Thomas J. Watson Kutatóközpont tudósa) elneveztek egy csodálatos fraktált. Ezzel a számítógép adta lehetőségekre támaszkodva kezdetét vette egy világ őrület, ami talán azóta is rendületlen erővel és lelkesedéssel tart és egyre több követőre talál. Tekintsünk két példát ezen fraktálokból.

Page 61: Kovács Emőd - Matematikai és Informatikai Intézetaries.ektf.hu/~emod/bevgraf/KOMA.pdf · 2.1 Beviteli eszközök Két alapvető grafikus beviteli művelet van. Egy adott pozíció

A rekurzív görbék:

61

29. ábra. Egy bokor

Page 62: Kovács Emőd - Matematikai és Informatikai Intézetaries.ektf.hu/~emod/bevgraf/KOMA.pdf · 2.1 Beviteli eszközök Két alapvető grafikus beviteli művelet van. Egy adott pozíció

Fejezetek a számítógépi grafikából

62

30. ábra. Egy érdekes csiga

Nézzünk végezetül egy példát arra, hogyan lehet definiálni egy rekurzív görbét a Fractint-ben és a Hernyák Zoltán által megadott Robot nyelven Válasszunk egy nevezetes görbét, amelynek konkrét gyakorlati haszna is van.

Page 63: Kovács Emőd - Matematikai és Informatikai Intézetaries.ektf.hu/~emod/bevgraf/KOMA.pdf · 2.1 Beviteli eszközök Két alapvető grafikus beviteli művelet van. Egy adott pozíció

A rekurzív görbék:

63

7.2.2 Hilbert görbe: A Hilbert görbe segítségével be tudjuk járni a sík egy tetszőleges téglalap alakú területének minden pontját foltszerűen. Ezek után használva valamilyen egyszerű tömörítést (Pl.: Run-length encoding, RLE) nagyobb hatásfokkal tudunk egy képet tömöríteni, hiszen a képek többnyire foltszerűen tartalmaznak azonos színű pontokat és nem pedig sorfolytonosan. Tekintsük tehát a következő definíciót:

X YF XFX FYY XF YFY FX

:::

= − + + −= + − − +

=α 90 o

Ahol α az elfordulás szöge, a + jelenti fordulás α szöggel balra, a − jelenti fordulás α szöggel jobbra, az F jelenti az egységnyi előrelépést. A kiindulási irány Kelet. Nézzük meg ugyanezt a definíciót a Robot prog-ramban. Az X(i,h) eljárást adjuk meg, az Y(i,h) értelemszerűen adódik. Eljárás x(i,h) Ekezdet

Ha i>0 jobbra(90)

y(i-1,h) előre(h) balra(90) x(i-1,h) előre(h) x(i-1,h) balra(90) előre(h) y(i-1,h) jobbra(90)

Hvege

Evege

Ennek alapján, egyszerűen elkészíthető a görbe ábrája.

31. ábra. Az első- és másodrendű Hilbert-görbék

Page 64: Kovács Emőd - Matematikai és Informatikai Intézetaries.ektf.hu/~emod/bevgraf/KOMA.pdf · 2.1 Beviteli eszközök Két alapvető grafikus beviteli művelet van. Egy adott pozíció

Fejezetek a számítógépi grafikából

64

Ehhez és az előzőekhez hasonló ábrákat készíthetünk rendkívül egyszerűen, csak a görbe megadására kon-centrálva a Fractint segítségével. Pontosabban nem kell törődnünk a rajzolással, hogy kifér-e a képernyőre a kapott eredmény, hogy hova pozícionáljuk a teknőcöt, hogy mekkora legyen az egységnyi elmozdulás. Eze-ket a feladatokat mind elvégzi helyettünk a Fractint hagyva minket pusztán a feladatra összpontosítani. Ter-mészetesen ha a rekurzív program előállítása és a teknőc grafika használata a cél, akkor használhatjuk a fentebb említett Robot programot, amely szabadon elérhető a főiskola Számítástechnika Tanszékén. A fraktálokkal kapcsolatban rengeteg érdekes információt találhatunk az alábbi WWW címen: http:// spanky.triumf.ca Ezen a címen a Fractint free szoftver is megtalálható és szabadon letölthető.

32. ábra. Munkában a Teknőc egy magasabbrendű Hilbert-görbén

Page 65: Kovács Emőd - Matematikai és Informatikai Intézetaries.ektf.hu/~emod/bevgraf/KOMA.pdf · 2.1 Beviteli eszközök Két alapvető grafikus beviteli művelet van. Egy adott pozíció

Irodalom

65

8. Irodalom Magyarnyelvű könyvek: • NEWMAN,W.M., SPROULL,R.F.: Interaktív számítógépes grafika, Műszaki Kiadó, 1985, Budapest. ISNB 963 10 6421 2

• PURGATHOFER, Werner: Grafikus adatok számítógépes feldolgozása, Műszaki Kiadó, Budapest, 1988 ISBN 963 10 7661 X

• WEBER, Markus: IBM-PC 3D-grafika, Elmélet és gyakorlat, IWT-Novotrade, Budapest, 1987 ISBN 963 02 4693 7

• SZÉKELY, Vladimír, POPPE, András: A számítógépes grafika alapjai IBM-PC-n. Computer Books, Budapest, 1993

• PIRKÓ, József: 3D perspektívikus grafika IBM-PC-n Turbo Pascalban, LSI Alkalmazástechnikai Szolgálat, Budapest, 1988

• SZÉKELY, Vladimír, BENKŐ, Tiborné: Karakterisztikák - diagramok - nomogramok, Műszaki Könyv-kiadó, Budapest, 1975

• JUHÁSZ Imre :Számítógépi geometria és grafika Miskolci Egyetemi Kiadó, 1993

• KRAMMER Gergely: Turbo Pascal grafika - összefoglaló ELTE TTK, µlógia füzetek 13

• SZABÓ József : Számítógépi grafika KLTE Egyetemi jegyzet, 1986

• SZABÓ József : Feladatok a számítógépi grafikából KLTE Egyetemi jegyzet, 1992

• FÜZI János: 3D grafika és animáció IBM PC-n, ComputerBooks, 1995

• SZÉKELY, Vladimir: Képkorrekció, hanganalízis, térszámítás PC-n, ComputerBooks, 1994

• LÁSZLÓ József : A VGA-kártya porgramozása pascal és assembly nyelven, ComputerBooks, 1995

Angol nyelvű könyvek:

• NEWMAN,W.M., SPROULL,R.F.: Principles of Interactive Computer Graphics, Mc Graw-Hill, 1973

• FOLEY, J.,D., van DAM, A., FEINER, S.,K., HUGHES, J.,F. : Computer Graphics, Principles and Practice Addison-Wesley, Reading, Mass., 1990.

• FOLEY, J.,D., van DAM, A., FEINER, S.,K., HUGHES, J.,F. : Computer Graphics, Principles and Practice, Second edition in C, Addison-Wesley, Reading, Mass., 1996.

• ROGERS,D.F., ADAMS,J.A.: Mathematical elements for Computer Graphics, Mc Graw-Hill, New York, 1976, 2.nd.ed. 1990

• SALMON,R., SLATER, M.: Computer Graphics Systems and Concepts, Addison-Wesley, 1989.

Page 66: Kovács Emőd - Matematikai és Informatikai Intézetaries.ektf.hu/~emod/bevgraf/KOMA.pdf · 2.1 Beviteli eszközök Két alapvető grafikus beviteli művelet van. Egy adott pozíció

Fejezetek a számítógépi grafikából

66

• WATT, Alan: 3D Computer Graphics, Addison-Wesley, Wokingham, England, 1993. • KAY, David C., LEVINE, John R. :Graphics File Formats, Windrest/McGraw-Hill, 1992.