Dr. Szirmay-Kalos László - Számítógépes grafika

Embed Size (px)

Citation preview

SZAMIT OGEPES GRAFIKAIRTA:DR. SZIRMAY-KALOS LASZLOBort o: Tikos D ora es T uske ImreCD mell eklet: Dornbach P eterProgramok: dr. Szirmay-Kalos L aszl o es F oris TiborAbr ak: Szertaridisz ElefteriaLektor: dr. Tam as P eter1999Tartalomjegyz ek1. A sz amt og epes graka c eljai es feladatai 151.1. A modellez es feladatai . . . . . . . . . . . . . . . . . . . . . . . . . . 161.2. A k epszint ezis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181.3. A k epszint ezis l ep esei . . . . . . . . . . . . . . . . . . . . . . . . . . . 221.3.1. Objektum-primitv dekompozci o . . . . . . . . . . . . . . . . 231.3.2. Vil ag-k ep transzform aci o . . . . . . . . . . . . . . . . . . . . . 231.3.3. V ag as . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231.3.4. Takar asi feladat . . . . . . . . . . . . . . . . . . . . . . . . . . 231.3.5.Arnyal as . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241.3.6. Sznlek epz es a megjelent oeszk ozre . . . . . . . . . . . . . . . 241.4. A sz amt og epes graka jelfeldolgoz asi megk ozelt ese. . . . . . . . . . 241.5. Rasztergrakus rendszerek fel ept ese . . . . . . . . . . . . . . . . . . . 241.6. A k epek t arol asa es ut ofeldolgoz asa . . . . . . . . . . . . . . . . . . . 261.7. Program: TARGA form atum u k ep allom anyok kezel ese . . . . . . . . 272. Grakus szoftver alrendszerek fel ept ese 292.1. Programvez erelt es esem enyvez erelt interakci o . . . . . . . . . . . . . 302.2. A grakus hardver illeszt ese . . . . . . . . . . . . . . . . . . . . . . . 312.3. Program: egy egyszer u grakus k onyvt ar . . . . . . . . . . . . . . . . 322.3.1. A logikai es a zikai szintek osszekapcsol asa . . . . . . . . . . 352.3.2. A k onyvt ar megval ost asa DOS oper aci os rendszer alatt . . . . 362.3.3. A k onyvt ar megval ost asa Ms-Windows k ornyezetben . . . . . 382.3.4. Programtervez es esem enyvez erelt k ornyezetekben . . . . . . . 413. A geometriai modellez es 473.1. Pontok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473.2. G orb ek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473.3. Szabadform aj u g orb ek . . . . . . . . . . . . . . . . . . . . . . . . . . 483.3.1. Lagrange-interpol aci o . . . . . . . . . . . . . . . . . . . . . . 4956 Tartalomjegyz ek3.3.2. B ezier-approxim aci o . . . . . . . . . . . . . . . . . . . . . . . 503.3.3.Osszetett g orb ek . . . . . . . . . . . . . . . . . . . . . . . . . 513.4. Ter uletek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573.5. Fel uletek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573.5.1. Kvadratikus fel uletek. . . . . . . . . . . . . . . . . . . . . . . 583.5.2. Parametrikus fel uletek . . . . . . . . . . . . . . . . . . . . . . 583.6. Testek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 593.6.1. Fel uletmodellez es . . . . . . . . . . . . . . . . . . . . . . . . 593.6.2. Konstruktv t om ortest geometria alap u modellez es . . . . . . . 613.7. Program: param eteres g orb ek . . . . . . . . . . . . . . . . . . . . . . . 624. Sznelm eleti alapok 654.1. A sznek deni al asa. . . . . . . . . . . . . . . . . . . . . . . . . . . . 664.1.1. RGB sznrendszer . . . . . . . . . . . . . . . . . . . . . . . . 674.1.2. CMY sznrendszer . . . . . . . . . . . . . . . . . . . . . . . . 674.1.3. HLS sznrendszer . . . . . . . . . . . . . . . . . . . . . . . . . 674.2. Sznkezel es a 2D es a 3D grak aban . . . . . . . . . . . . . . . . . . . 684.3. Program: sznkezel es . . . . . . . . . . . . . . . . . . . . . . . . . . . 694.3.1. Sznilleszt o f uggv enyek . . . . . . . . . . . . . . . . . . . . . 694.3.2. Spektrumok kezel ese. . . . . . . . . . . . . . . . . . . . . . . 704.3.3. Szn erzetek . . . . . . . . . . . . . . . . . . . . . . . . . . . . 715. Geometriai transzform aci ok 735.1. Elemi afn transzform aci ok . . . . . . . . . . . . . . . . . . . . . . . . 735.1.1. Eltol as . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 735.1.2. Sk al az as a koordin atatengely ment en . . . . . . . . . . . . . . 735.1.3. Forgat as . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 745.1.4. Nyr as . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 755.2. Transzform aci ok homog en koordin at as megad asa . . . . . . . . . . . . 755.3. Transzform aci ok projektv geometriai megk ozelt ese . . . . . . . . . . 765.4. Program: geometriai transzform aci os oszt aly . . . . . . . . . . . . . . 796. Virtu alis vil agmodellek t arol asa 836.1. Hierarchikus adatszerkezet . . . . . . . . . . . . . . . . . . . . . . . . 836.2. A geometria es topol ogia sz etv alaszt asa . . . . . . . . . . . . . . . . . 836.3. CSG-fa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 856.4. Megjelent o allom anyok . . . . . . . . . . . . . . . . . . . . . . . . . 866.5. Szabv anyos vil agmodellek . . . . . . . . . . . . . . . . . . . . . . . . 866.6. Program: hierarchikus 3D adatszerkezet . . . . . . . . . . . . . . . . . 87Tartalomjegyz ek 77. A 2D k epszint ezis 917.1. Vektoriz aci o. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 927.2. Modellez esi transzform aci o . . . . . . . . . . . . . . . . . . . . . . . . 937.3. Ablak-n ezet transzform aci o . . . . . . . . . . . . . . . . . . . . . . . . 947.4. A modellez esi es az ablak-n ezet transzform aci ok osszef uz ese. . . . . . 947.5. 2D v ag as . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 957.6. 2D raszteriz aci o. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1007.6.1. Szakaszok rajzol asa . . . . . . . . . . . . . . . . . . . . . . . 1007.6.2. Ter uletel araszt as . . . . . . . . . . . . . . . . . . . . . . . . . 1057.6.3. Ter uletkit olt es . . . . . . . . . . . . . . . . . . . . . . . . . . 1057.7. Pixel m uveletek. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1107.7.1. Dither alkalmaz asa . . . . . . . . . . . . . . . . . . . . . . . . 1107.8. Interaktv 2D grakus rendszerek . . . . . . . . . . . . . . . . . . . . . 1117.9. Program: 2D grakus rendszer . . . . . . . . . . . . . . . . . . . . . . 1148. Az arnyal as optikai alapmodellje 1238.1. A f enyer oss eg alapvet o m ert ekei . . . . . . . . . . . . . . . . . . . . . 1238.2. A kamer ak jellemz ese . . . . . . . . . . . . . . . . . . . . . . . . . . . 1258.3. A f eny-fel ulet k olcs onhat as: az arnyal asi egyenlet . . . . . . . . . . . . 1278.4. Az arnyal asi egyenlet adjung altja: a potenci al egyenlet . . . . . . . . . 1298.5. Az arnyal asi illetve a potenci al egyenlet megold asa . . . . . . . . . . . 1308.6. BRDF modellek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1318.6.1. Klasszikus BRDF modellek . . . . . . . . . . . . . . . . . . . 1328.6.2. Lambert-t orv eny . . . . . . . . . . . . . . . . . . . . . . . . . 1328.6.3. Ide alis visszaver od es . . . . . . . . . . . . . . . . . . . . . . . 1338.6.4. Ide alis t or es. . . . . . . . . . . . . . . . . . . . . . . . . . . . 1348.6.5. Phong illumin aci os modell es v altozatai . . . . . . . . . . . . . 1348.7. F enyelnyel o anyagok . . . . . . . . . . . . . . . . . . . . . . . . . . . 1378.8. Program: BRDF modellek . . . . . . . . . . . . . . . . . . . . . . . . 1399. A 3D inkrement alis k epszint ezis 1439.1. Fel uletek tesszell aci oja . . . . . . . . . . . . . . . . . . . . . . . . . . 1469.2. Modellez esi transzform aci o . . . . . . . . . . . . . . . . . . . . . . . . 1469.3. Kamera denci o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1469.4. A n ezeti transzform aci o . . . . . . . . . . . . . . . . . . . . . . . . . . 1489.4.1. Vil ag-koordin atarendszerablak-koordin atarendszertransz-form aci o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1499.4.2. Ablak-k ept er transzform aci o p arhuzamos vett es eset en . . . . . 1499.4.3. Ablak-k ept er transzform aci o perspektv vett es eset en . . . . . 1519.5. N ezeti cs ovezet ek. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1548 Tartalomjegyz ek9.5.1. V ag as homog en koordin at akban . . . . . . . . . . . . . . . . . 1559.6. Takar asi feladat megold asa . . . . . . . . . . . . . . . . . . . . . . . . 1569.6.1. Trivi alis h ats olap eldob as . . . . . . . . . . . . . . . . . . . . . 1569.6.2. Z-buffer algoritmus. . . . . . . . . . . . . . . . . . . . . . . . 1579.6.3. Ter uletfeloszt o m odszerek . . . . . . . . . . . . . . . . . . . . 1599.6.4. Fest o algoritmus . . . . . . . . . . . . . . . . . . . . . . . . . 1619.7. Lok alis illumin aci os algoritmusok . . . . . . . . . . . . . . . . . . . . 1629.7.1. Saj at sznnel t ort en o arnyal as . . . . . . . . . . . . . . . . . . . 1649.7.2. Konstans arnyal as . . . . . . . . . . . . . . . . . . . . . . . . 1649.7.3. Gouraud- arnyal as . . . . . . . . . . . . . . . . . . . . . . . . . 1649.7.4. Phong- arnyal as . . . . . . . . . . . . . . . . . . . . . . . . . . 1659.8. Program: 3D grakus rendszer inkrement alis k epszint ezissel . . . . . . 16510. A sug ark ovet es 18310.1. Az illumin aci os modell egyszer ust ese . . . . . . . . . . . . . . . . . . 18310.2. A t uk or es t or esi ir anyok kisz amt asa . . . . . . . . . . . . . . . . . . . 18510.3. A rekurzv sug ark ovet o program. . . . . . . . . . . . . . . . . . . . . 18610.4. Metsz espontsz amt as egyszer u fel uletekre . . . . . . . . . . . . . . . . 18710.4.1. H aromsz ogek metsz ese . . . . . . . . . . . . . . . . . . . . . . 18810.4.2. Implicit fel uletek metsz ese. . . . . . . . . . . . . . . . . . . . 18910.4.3. Param eteres fel uletek metsz ese . . . . . . . . . . . . . . . . . . 18910.4.4. Transzform alt objektumok metsz ese. . . . . . . . . . . . . . . 19010.4.5. CSG modellek metsz ese . . . . . . . . . . . . . . . . . . . . . 19010.5. A metsz espontsz amt as gyorst asi lehet os egei . . . . . . . . . . . . . . 19210.5.1. Befoglal o keretek . . . . . . . . . . . . . . . . . . . . . . . . . 19210.5.2. Az objektumt er szab alyos feloszt asa. . . . . . . . . . . . . . . 19210.5.3. Az objektumt er adaptv feloszt asa . . . . . . . . . . . . . . . . 19310.6. Foton k ovet es . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19510.7. Program: rekurzv sug ark ovet es . . . . . . . . . . . . . . . . . . . . . 19511. Glob alis illumin aci os algoritmusok 20311.1. Integr alegyenletek megold asa . . . . . . . . . . . . . . . . . . . . . . . 20311.1.1. Inverzi o. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20411.1.2. V eges-elem m odszer . . . . . . . . . . . . . . . . . . . . . . . 20411.1.3. Expanzi o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20511.1.4. Monte-Carlo integr al as. . . . . . . . . . . . . . . . . . . . . . 20711.1.5. Iter aci o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21211.2. Diff uz eset: radiosity . . . . . . . . . . . . . . . . . . . . . . . . . . . 21211.2.1. Forma faktor sz amt as . . . . . . . . . . . . . . . . . . . . . . 21411.2.2. A line aris egyenletrendszer megold asa . . . . . . . . . . . . . . 217Tartalomjegyz ek 911.2.3. Progresszv nomt as . . . . . . . . . . . . . . . . . . . . . . . 21811.3. V eletlen bolyong ason alapul o algoritmusok . . . . . . . . . . . . . . . 21911.3.1. Inverz f eny utk ovet es . . . . . . . . . . . . . . . . . . . . . . . 21911.4. Program: inverz f eny utk ovet es . . . . . . . . . . . . . . . . . . . . . 22312. Raszteres k epek csipk ezetts eg enek a cs okkent ese 22912.1. El osz ur es . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23012.1.1. A szakaszok csipk ezetts eg enek cs okkent ese. . . . . . . . . . . 23112.2. Ut osz ur es . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23412.3. Program: sug ark ovet es kieg eszt ese csipk ezetts eg cs okkent essel . . . . 23613. Text ura lek epz es 23713.1. Param eterez es. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23813.1.1. Explicit egyenlettel deni alt fel uletek param eterez ese . . . . . . 23813.1.2. H aromsz ogek param eterez ese . . . . . . . . . . . . . . . . . . 23913.2. Text ura lek epz es a sug ark ovet esben . . . . . . . . . . . . . . . . . . . 23913.3. Text ura lek epz es az inkrement alis k epszint ezisben . . . . . . . . . . . . 24013.4. A text ur ak sz ur ese . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24113.5. Bucka lek epz es . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24313.6. Visszaver od es lek epz es . . . . . . . . . . . . . . . . . . . . . . . . . . 24513.7. Program: sug ark ovet es kieg eszt ese text ura lek epz essel . . . . . . . . . 24514. T erfogat modellek es t erfogatvizualiz aci o 24714.1. Direkt t erfogatvizualiz aci os m odszerek . . . . . . . . . . . . . . . . . 24714.1.1. T erfogat vett es. . . . . . . . . . . . . . . . . . . . . . . . . . 24914.1.2. T erfogati sug ark ovet es . . . . . . . . . . . . . . . . . . . . . . 24914.2. A voxel szn es az opacit as sz armaztat asa . . . . . . . . . . . . . . . . 25014.3. Indirekt t erfogatvizualiz aci os m odszerek . . . . . . . . . . . . . . . . . 25114.3.1. Masroz o kock ak algoritmusa . . . . . . . . . . . . . . . . . . 25114.3.2. Fourier-t er m odszerek . . . . . . . . . . . . . . . . . . . . . . 25214.4. Program: masroz o kock ak algoritmusa . . . . . . . . . . . . . . . . . 25415. Frakt alok 25715.1. A Hausdorff-dimenzi o . . . . . . . . . . . . . . . . . . . . . . . . . . 25715.1.1. Frakt alis dimenzi o nem onhasonl o objektumokra . . . . . . . . 26015.2. Brown-mozg as alkalmaz asa . . . . . . . . . . . . . . . . . . . . . . . 26115.3. Kaotikus dinamikus rendszerek . . . . . . . . . . . . . . . . . . . . . . 26315.4. Kaotikus dinamikus rendszerek a skon . . . . . . . . . . . . . . . . . 26515.4.1. Julia-halmazok . . . . . . . . . . . . . . . . . . . . . . . . . . 26615.4.2. A Mandelbrot-halmaz . . . . . . . . . . . . . . . . . . . . . . 27010 Tartalomjegyz ek15.5. Iter alt f uggv enyrendszerek . . . . . . . . . . . . . . . . . . . . . . . . 27215.5.1. Iter alt f uggv enyrendszerek attraktor anak el o allt asa. . . . . . . 27315.5.2. IFS modellez es . . . . . . . . . . . . . . . . . . . . . . . . . . 27615.5.3. Frakt alis k ept om ort es . . . . . . . . . . . . . . . . . . . . . . 27815.6. Program: IFS rajzol o . . . . . . . . . . . . . . . . . . . . . . . . . . 27916. Sz amt og epes anim aci o 28116.1. Pozci o-orient aci o m atrixok interpol aci oja . . . . . . . . . . . . . . . . 28416.2. A kameraparam eterek interpol aci oja . . . . . . . . . . . . . . . . . . . 28516.3. Mozg as tervez es . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28516.4. Dupla pufferel es . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28817. T erfogat modellek es t erfogatvizualiz aci o 28917.1. Direkt t erfogatvizualiz aci os m odszerek . . . . . . . . . . . . . . . . . 28917.1.1. T erfogat vett es. . . . . . . . . . . . . . . . . . . . . . . . . . 29117.1.2. T erfogati sug ark ovet es . . . . . . . . . . . . . . . . . . . . . . 29117.2. A voxel szn es az opacit as sz armaztat asa . . . . . . . . . . . . . . . . 29217.3. Indirekt t erfogatvizualiz aci os m odszerek . . . . . . . . . . . . . . . . . 29317.3.1. Masroz o kock ak algoritmusa . . . . . . . . . . . . . . . . . . 29317.3.2. Fourier-t er m odszerek . . . . . . . . . . . . . . . . . . . . . . 29417.4. Program: masroz o kock ak algoritmusa . . . . . . . . . . . . . . . . . 29618. CD mell eklet 31518.1. Demonstr aci os programok a k onyv fejezeteihez . . . . . . . . . . . . . 31518.1.1. A programokat fel ept o k oz os f ajlok. . . . . . . . . . . . . . . 31618.1.2. Grakus keretrendszer Ms-Windows es DOS/BGI k ornyezetre . 32018.1.3. P elda alkalmaz asok . . . . . . . . . . . . . . . . . . . . . . . . 320Irodalomjegyz ek 327El osz oElet unk folytonos szeml el od essel telik, gyelj uk k ornyezet unket es feldolgozzuk a min-ket ert hat asokat. A hat asok gondolatokat es erzelmeket keltenek benn unk, amelyeketszeretn enk kifejezni, maradand ov a tenni es m asokkal megosztani. A k epek form aj abanbefogadott es tov abbadott inform aci ok mindig is fontosak voltak az emberek sz am ara.K epek, rajzok segts eg evel a bonyolult gondolatokat is egyszer uen es k oz erthet oen ki-fejezhetj uk, az ilyen form aban kapott inform aci okat gyorsan befogadjuk, meg ertj uk esk onnyen megjegyezz uk. A kis gyermekekt ol kezdve, a fest ok on at, a tervez o m ern o-k okig mindenki szvesen rajzolgat, hogy elk epzel eseit m asok sz am ara is el erhet ov etegye.A sz amt og ep ebben a folyamatban hat ekony t ars lehet, mert k epes arra, hogy afej unkben k orvonalaz od o v azlatokat atvegye es azokb ol meggy oz o k epeket k esztsen.A sz amt og ep munk aja sor an alkalmazhatja a zika t orv enyeit, Dali vagy Picasso stlu-s at, az ept eszek vagy a g ep eszek altal k ovetett rajzol asi szab alyokat, vagy ak ar teljesen ujszer u l at asm odot is k ovethet.Igy a kapott eredm eny lehet olyan, mintha csak f eny-k epez og eppel vagy ecsettel k esztett uk volna, olyan, mintha egy tervez oiroda m uszakirajzol oinak a szorgalm at es ugyess eg et dics ern e, de bepillant ast engedhet olyan vil agok-ba is, amelyekb ol m eg sohasem ertek minket k epi hat asok, ez ert t obbs eg unk sz am aramindig is felfoghatatlanok voltak.A sz amt og epes graka c elja az, hogy a sz amt og epb ol olyan eszk ozt var azsoljon,amely v azlatos gondolatainkr ol k epeket alkot. Egy ilyen eszk oz sokr et u ismereteketfoglal mag aban. A gondolatainkban szerepl o alakzatok megad as ahoz a geometri ahozkell erten unk, a f eny hat as anak modellez es ehez az optika t orv enyeit alkalmazzuk. Asz amt og ep monitor an megjelen o k epet az emberi szem erz ekeli es az agy dolgozza fel,ez ert a sz amt asi folyamatoknak gyelembe kell venni uk az emberi szem es agy lehet o-s egeit es korl atait is. Mivel a f enyk epez est sz amt og epes programmal kell megoldani,a szoftvertechnol ogia, algoritmusok es adatszerkezetek ismeret et ol sem tekinthet unk el.R aad asul a k epek megjelent es ehez es el o allt as ahoz a sz ukre szabott id o miatt hardvert amogat as is sz uks eges, ez ert a legjobb, ha m ar most elkezdj uk felfrissteni a hardverismereteinket.A sz amt og epes graka neh ez, mert nagyon sokf ele tud ast kell megszerezn unk ah-hoz, hogyigaz ansaj atunknak erezz uk. Ugyanakkorasz amt og epesgrakanagyon1112 El osz osz ep is, mert kincseket lelhet benne az integr alegyenletekkel foglalkoz o matematikus,az optik aban vagy a Maxwell-egyenletekben elm elyed o zikus, a l at as rejtelmeit kutat oorvos, az adatstrukt ur akkal es az algoritmusokkal b uv eszked o programoz o, es az eg e-szet alkalmaz o k epz om uv esz vagy tervez om ern ok. Az interaktv grakus programok,k epek, lmek, sz amt og epes j at ekok form aj aban megjelen o eredm eny pedig mindannyi-unk gy ony or us eg ere szolg al.Ezen k onyv els osorban szoftvertervez ok es programoz oksz am ara k esz ult, szerkezete a Budapesti M uszaki Egyetem informatikus es villamos-m ern oki szakjain el oadott sz amt og epes graka t argy tematik aj at k oveti.A k onyv c elja,hogy megtantsa az olvas ot arra,hogy hogyan kell grakus rend-szereket fejleszteni. Az el oismeretek is ennek megfelel oek, a k onyv nagy r esze ugyancsup an k oz episkolai matematikai es zikai ismereteket haszn al, azonban n eh any r esz ept a term eszettudom anyi es m uszaki egyetemeken oktatott matematik ara is.Hab ar a k onyv els osorban szoftverfejleszt oknek sz ol, a magam r esz er ol rem enyke-dem abban, hogy a szoftverfejleszt ok on kv ul a grakus rendszerek felhaszn al oihoz esa sz amt og epes j at ekokat megsz allottk ent uz okh oz is eljut, es ez altal jobban meg ertik esmegbecs ulik kedvenc alkalmaz oi rendszer uket, es tal an kedvet kapnak ahhoz is, hogy afelhaszn al ok roppant sz eles t abor ab ol a fejleszt ok sokkal sz ukebb t abor aba kalandozza-nak el.A k onyv algoritmusainak a nyelveA grakai algoritmusokat k et szinten t argyaljuk. El osz or egy matematikai jel ol esekethaszn al o pszeudok od segts eg evel fogalmazzuk meg az algoritmusokat. Az utast asokatk ul on sorba rjuk vagy vessz ovel v alasztjuk el egym ast ol. Ez a pszeudok od a felt etelt aciklus elej en vizsg al o ciklusokat for es endforilletve while es endwhileutas-t asok k oz e, a felt etelt a ciklus v eg en vizsg al o ciklusokat do es whileilletve repeat es untilutast asok k oz e, v eg ul a felt etel n elk uli ciklusokat loop es endlooputas-t asok k oz e helyezi el. A f uggv enyekb ol, szubrutinokb ol a returnutast as segts eg e-vel t erhet unk vissza, a f uggv enyek bemeneti es kimeneti param etereit altal aban a jelv alasztja el. Ahol ezt k ul on szeretn enk hangs ulyozni, ott az eg esz v altoz okat nagy be-t uvel jel olj uk. A szok asos matematikai jel ol esek mellett a pszeudok od m eg alkalmazzaa legk ozelebbi eg eszt megkeres o round es az eg eszr eszt el o allt o truncf uggv enye-ket, valamint a C++ nyelvb ol k olcs onz ott, a v altoz ot eggyel inkrement al o ++ oper atort es ax v altoz oty-nal n ovel ox +=y m uveletet. A Pixel(x, y, color) m uvelet azx, ykoordin at aj u k eppontot color sznre alltja.A pszeudok odon t ul a legfontosabb algoritmusok C++ nyelv u implement aci oj at ismegadjuk. Ezen p eld ak meg ert es ehez alapvet o programoz asi ismeretek sz uks egesek. Aprogramok elk eszt ese sor an arra t orekedt unk, hogy azok sz epek es k onnyen erthet oklegyenek.El osz o 13A CD mell ekletA k onyvh oz CD mell eklet is tartozik, amelyet Dornbach P eter alltott ossze r eszben asaj at maga, F oris Tibor es j omagam altal rt programokb ol, r eszben szabadon terjeszt-het o, forr asnyelven rendelkez esre all o programokb ol. A CD tartalmazza a k onyvbent argyalt p eldaprogramokat, valamint forr ask oddal egy utt feltett k esz grakai alkalma-z asokat, mint a StingRay Monte-Carlo sug ark ovet o program, az Eagles val osidej u he-likopter szimul ator, a n epszer u DOOM j at ekprogram, a PovRay sug ark ovet o programk ul onb oz o platformokra a kieg eszt o programokkal egy utt, OpenGL k onyvt arak, doku-ment aci ok es p eld ak,DirectX futtat o k ornyezet, es egy JPEG konverter program. Afentieken kv ul MGF, 3DS es PovRay form atum u geometriai adatb azisokat, ezen adat-b azisok ertelmez oprogramjait esk epekettett unkaCD-re. ACDlehet os egeithtmlb ong esz okkel, azaz p eld aul a Internet Explorer program segts eg evel, t arhatjuk fel.Hogyan k esz ult a k onyv?A szerkeszt esi munk akat LATEX sz ovegszerkeszt ovel v egezt uk, a magyar ekezetekkel esaz elv alaszt assal Verh as P eter altal k esztett HION program, a magyar megjegyz esek-kel ell atott programlist akkal pedig Kocsis Tam as HUTA programja birk ozott meg. Ak onyvben szerepl o k epek egy r esz et a CD-n tal alhat o mintaprogramok segts eg evel sz a-mtottuk ki es TARGA illetve JPEG form atumban mentett uk el. A m asok altal k esztettk epeket altal aban GIF vagy JPEG form atumban kaptuk meg. A k epeket az xv prog-ram alaktotta egys egesen EPS form atumra. A rajzokat Szertaridisz Elefteria r eszbentgif programmal, r eszben CorelDraw programmal k esztette, es a tov abbi m uveletekhezugyancsak EPS form atumban alltotta el o. A grakonokat a gnuplot program rajzoltamegam er esieredm enyekb ol. AlefordtottLATEXf ajlt esazEPSform atum ugra-kus elemeket a dvips programmal Postscript alakra hoztuk amit egy saj at programmalt ukr ozt unk. Ezzel a t uk orr asos fekete-feh er oldalakat m ar nyomtathattuk is, a sznesoldalakat,azonban m eg ci an,magenta,s arga es fekete arnyalatokra bontottuk es a 4sznre k ul on k esztett unk nyomdai sablonokat.Hogyan k esz ult a bort o?A bort ot Tikos D ora es T uske Imre tervezte. A bort on szerepl o 3 dimenzi os objek-tumt er k ep et sug ark ovet o algoritmus sz amtotta ki. A keletkezett k epre a Photoshopprogrammal ker ultek r a a feliratok es a log ok, majd ugyanezen program bontotta fel asznes k epet ci an, magenta, s arga es fekete arnyalatokra, amelyeket egyenk ent levil agt-va kaptuk meg a nyomdai maszkokat.14 El osz oK osz onetnyilv ant asAk onyvaBudapestiM uszakiEgyetemIr anyt astechnika esInformatikaTansz ek enk esz ult, az itt rendelkez esre all o sz amt astechnikai infrastrukt ura felhaszn al as aval, esa kolleg aim t amogat as aval. Szem elyes k osz onetemet szeretn em kifejezni dr. M artonG abornak, dr. Horv ath Tam asnak, F oris Tibornak, Cs ebfalvi Bal azsnak, Dornbach P e-ternek, Szalav ari Zsoltnak, Pap G abornak, F abi an J anosnak, Szirmay-Kalos Barnab as-nak es a B ecsi M uszaki Egyetem Sz amt og epes Graka Int ezete oktat oinak, hogy az altaluk k esztett k epeket, programr eszleteket felhaszn alhattam a k onyvben, dr. Tam asP eternek, Megyeri Zsuzs anak es Keszthelyi M ari anak a k onyv k ul onb oz o v altozatainakaz atn ez es e ert. A kutat asi munk at a KHVM Konvergencia strat egia az informatik abanelnevez es u p aly azat es a T029135 sz am u OTKA p aly azat t amogatta.Egy k onyv elker ulhetetlen sorsa az, hogy olvas oi kisebb-nagyobb hib akat tal alnakbenne. H al as lenn ek azoknak, akik kritikai eszrev eteleiket eljuttatj ak hozz am (email:[email protected]). A megjegyz eseknek legyenek azok b armilyen elmarasztal oakis nemcsak az ert or uln ek, mert hozz aj aruln anak ahhoz, hogy egy esetleges k es obbikiad asban kevesebb hiba maradjon, hanem az ert is, mert ezek az eszrev etelek tal an aztis mutatn ak, hogy vannak, akik a k onyvet elm ely ulten es gyakorta forgatj ak.Budapest, 1999.1. fejezetA sz amt og epes graka c eljai es feladataiA sz amt og epes graka feladata az, hogy a felhaszn al o sz am ara egy virtu alis vil agr olf enyk epeket k esztsen es azt a sz amt og ep k eperny oj en megjelentse. A vil ag ler as atnevezz uk modellez esnek. Ezt k oveti a k epszint ezis, amely a mem ori aban t arolt vil agr olf enyk epet k eszt.1.1. abra. A sz amt og epes graka adatfolyam-modellje1516 1. A sz amt og epes graka c eljai es feladatai1.1. A modellez es feladataiA modellez es sor an virtu alis vil agot runk le a modellez oprogram utast asai es r ogztettelemk eszlete segts eg evel. A modellez o lehet a felhaszn al o, vagy ak ar az alkalmaz oiprogram. A felhaszn al ok a modellt altal aban interaktv m odon eptik fel. Az interaktvvil ag ept es sor an elemi parancssorozattal deni aljuk a modellt, es minden egyes parancsut an a k epszint ezis k epet k eszt a modell aktu alis allapot ar ol. Ily m odon folyamatosvisszajelz est kapunk a k esz ul o virtu alis vil agr ol.1.2. abra. Egy tipikus modellez oprogram felhaszn al oi fel uleteAmodellez es term eke a virtu alis vil ag, amelyet a felhaszn al o m odosthat, a k epszin-t ezis programmal megjelenthet, vagy ak ar m as programokkal analiz alhat. A m odost-hat os ag es m as programokkal t ort en o elemezhet os eg erdek eben a virtu alis vil ag modellbels o reprezent aci oja nem k ot odhet nagyon szorosan a k epszint ezishez, hanem term e-szetes fogalmakat es dimenzi okat kell haszn alnia. A felhaszn al oi interf eszen megjelen ofogalmak (objektum, primitv, stb.) alapj an eptkez o virtu alis vil agokban k onnyen meg-1.1. A modellez es feladatai 17oldhat o, hogy a felhaszn al o egy modellelemet kiv alasszon, es azt interaktv eszk oz ok-kel m odostsa, esetleg le is t or olje. A term eszetes dimenzi okat haszn al o t er referenciarendszer et gyakran vil ag-koordin atarendszernek nevezz uk. Az interaktv rendszerek-ben sz uks egk eppen megjelenik az utols o m uveletek hat as at megsz untet o visszavon as(Undo) m uvelet.Ezt t obbf elek eppen is megval osthatjuk.A legegyszer ubb esetben t a-roljuk a vil agmodell kor abbi allapotait es sz uks eg eset en azokhoz t er unk vissza. Jobbmegold asnak t unik, ha a felhaszn al o altal kiadott parancsokat t aroljuk, es vagy az utol-s o m uveletek inverz et hajtjuk v egre, vagy a teljes modellt let or olj uk es a m uveletsort akor abbi m uveletig ujra lej atsszuk.1.3. abra. Egy egyszer u rajzol oprogram (Paintbrush)Egyszer ubb rajzol oprogramok (p eld aul a Paintbrush) mag at a k epet tekintik a virtu- alis vil ag modellj enek. Ilyen rendszerekben a kor abban bevitt elemek nem v alaszthat okki, nem m odosthat ok es nem t avolthat ok el, csup an ujabb elemekkel elfedhet ok. Azilyen rendszerek haszn alata teh at egyr eszt neh ezkes, m asr eszt az elk esz ult modell amegjelent esen kv ul m asra nem haszn alhat o.18 1. A sz amt og epes graka c eljai es feladatai1.2. A k epszint ezisA k epszint ezis (rendering vagy image synthesis) c elja a virtu alis vil ag lef enyk epez ese.A f enyk epez es sor an t obbf ele l at asm odot k ovethet unk. A k et legk ezenfekv obb m od-szer a rajzol as es a term eszet folyamatainak a szimul al asa. Az els o esetben a keletkez ok epek m uszaki rajzszer uek lesznek, a m asodik esetben pedig a keletkez o k epek annyi-ra fognak hasonltani a val odi f enyk epekre, amennyire a szimul aci o sor an k ovett uk azikai t orv enyeket (1.4., 17.19. abra). Hab ar ezen k onyv d ont o r eszben a 2 dimenzi osm uszaki rajz es a 3 dimenzi os f enyhat asok zikai t orv enyeit alkalmaz o f enyk epez esielj ar asokkal foglalkozik, a sz amt og epes graka lehet os egei nem mer ulnek ki ezekben.F enyk epezhet unk absztrakt vil agokat is, es ez altal l athat ov a tehetj uk a gazdas agi folya-matokat, bonyolult araml asi rendszereket (1.5. abra), ipari ir anyt asi rendszerek pilla-natnyi allapot at (1.7. abra), egy sz amt og epes tomogr af vagy m as zikai m er oeszk oz altal osszegy ujt ott adathalmazt (1.6. abra), egy t obbdimenzi os f uggv enyt vagy ak ar egyskbeli illetve t erbeli gr afot (1.8. abra).1.4. abra. 3D vil agok f enyk epei: Bal: a f eny zikailag pontos szimul aci oja [SK98b];Jobb: Egyszer ustett arnyal asi modellel dolgoz o val osidej u helikopter szimul ator [Dor97]Az igaz an val os agh u k epek el o allt as at fotorealisztikus k epszint ezisnek nevezz uk.Val os agh us egen azt ertj uk, hogy a sz amt og ep monitor an kibocs atott hull amok megk o-zelt oleg hasonl o ill uzi ot keltenek, mintha a val os vil agot szeml eln enk.Ebben a folyamatban h arom alapvet o szerepl o vesz r eszt:Az els o a sz amt og epes program, amely a vil agler as alapj an szimul alja a virtu alist erben bek ovetkez o f enyhat asokat es vez erli a grakus megjelent ot.1.2. A k epszint ezis 191.5. abra. Absztrakt vil agok f enyk epei: gazdas agi es araml astani modellek vizualiz aci oja(B ecsi M uszaki Egyetem, Sz amt og epes Graka Int ezet) [L of98]1.6. abra. Absztrakt vil agok f enyk epei: sz amt og epes tomogr af m er esi eredm enyeinekvizualiz aci oja [BSKG97]20 1. A sz amt og epes graka c eljai es feladatai1.7. abra. Bp-Hegyeshalom vas ut folyamat-vizualiz aci oja [SKMFF96]1.2. A k epszint ezis 21Convergence of the Metropolis method (5000 samples)distribution012345600.511.522.53012345678reference1.8. abra. Absztrakt vil agok f enyk epei: f uggv enyek es gr afok megjelent ese [SK94]A m asodik a grakus megjelent o, amely a k eperny o kijel olt pontjait a vez erl es altal meghat arozott spektrum u f eny kibocs at as ara gerjeszti.V eg ul az utols o szerepl o az emberi szem, amely a f enyhull amokat felfogja es azagyban szn erzetet hoz l etre.K epszint ezis rendszerek l etrehoz asa sor an teh at ismern unk kell a f eny-anyag k olcs on-hat as alapvet o zikai modellj et, a megjelent o rendszerek k epess egeit es az emberi szemtulajdons agait egyar ant.Ezekalapj annyilv anval o, hogyasz amt og epesprogramnakolyanpontosankellszimul alnia a val os f enyhat asokat, amilyennek a k ovet es ere a kijelz o egy altal an k epes, es amilyennek a megk ul onb oztet es ere a szem alkalmas. Ez ut obbi miatt a sz amt og epesgraka nem csup an a zikai illetve matematikai modellek alkalmaz asa, hanem olyantudom any, amely az emberi szem korl atait is k epes saj at el ony ere fordtani. Erre ann alis ink abb sz uks ege van, mert a bonyolult zikai modellek megold as ahoz roppant kev esid o all rendelkez esre. Gondoljunk csak a mozg ok ep sorozatot val os id oben el o allt orep ul og ep szimul atorra, vagy csup an egy kommersz j at ekprogramra. Ahhoz, hogy amozg as folytonosnak t unj on, m asodpercenk ent legal abb 15 k epet kell el o alltani. Mi-vel egy k ozepesn el jobb k eperny o k epe viszont kb. egy milli o k eppontb ol all, egyetlenk eppont szn enek meghat aroz as ahoz atlagosan kb. 1sec/15/106 60 nsec (!) id o allrendelkez esre, ami viszont az operatv t ar egyetlen mem oria ciklusidej en el is kisebb.Gondolkozzunk el ezen egy kicsit! Egy k eppont szn enek meghat aroz as ahoz ki kellnyomoznunk,hogy abban melyik objektum l atszik,majd a f enyhat asokat szimul alva22 1. A sz amt og epes graka c eljai es feladataisz amtanunk kell a r ola visszaver od o sznt. Ehhez a processzornak sz amtalan utast astkell v egrehajtania, amelyek mindegyike t obb ciklusb ol all, majd bernia az eredm enyta t arba. Hogyan is lehets eges a sz amt asokat es a ber ast kevesebb id o alatt elv egez-ni, mint egyetlen ciklusid o, vagy ak ar az eredm eny ber as anak az ideje? Ezen k onyvelk eszt esekor t obbek k oz ott erre a k erd esre pr ob altunk v alaszt adni.A k epszint ezis algoritmusai f uggnek att ol, hogy a virtu alis modell 2 vagy 3 dimen-zi os (m ern oki vizualiz aci oban enn el magasabb dimenzi ok is el ofordulhatnak), ez ert ak epszint ezis algoritmusokat alapvet oen eszerint oszt alyozzuk. Teh at a k et dimenzi os,vagy r oviden 2D modellek megjelent ese eset en 2D k epszint ezisr ol vagy 2D sz amt o-g epes grak ar ol, mg a h arom dimenzi os, azaz 3D modellek megjelent ese eset en 3Dgrak ar ol fogunk besz elni.1.3. A k epszint ezis l ep esei1.9. abra. 2D es 3D k epszint ezis osszehasonlt asaA 2D k epszint ezis egy t eglalap alak u 2D ablakot (window) helyez a skban abr a-zolt virtu alis vil agra, lef enyk epezi azon objektumokat, objektumr eszleteket, amelyekaz ablak belsej ebe esnek, majd a k epet a k eperny o ugyancsak t eglalap alak u n ezet eben(viewport) megjelenti. A 3D k epszint ezis ezzel szemben egy altal anos helyzet u t eg-lalapot tesz be a vil ag-koordin atarendszerbe, szemet vagy kamer at helyez el az ablak1.3. A k epszint ezis l ep esei 23m og ott es a vil agnak a szemb ol az ablakon kereszt ul l athat o r esz er ol k eszt k epet, amitv eg ul ugyancsak a k eperny o n ezet eben jelent meg.1.3.1. Objektum-primitv dekompozci oA virtu alis vil agot altal aban az adott alkalmaz asi ter uleten term eszetes fogalmakkal de-ni aljuk es t aroljuk. P eld aul egy t erinformatikai rendszer alapvet o objektumai az ep ulet, ut, h al ozat, telep ul es, stb.Egy altal anos k epszint ezis program viszont nyilv an nem k e-sz ulhet fel egyszerre az osszes alkalmaz asi ter ulet fogalmainak meg ert es ere, hanem asaj at alkalmaz asf uggetlen objektumaival dolgozik. A k epszint ezis program altal kezeltalapobjektumok altal aban a geometriai primitvek, mint p eld aul a poligon, g omb, f eny-forr as, stb. Ez ert a k epszint ezis els o l ep ese a virtu alis vil agmodellnek, a k epszint ezisprogram sz am ara t ort en o lefordt asa.1.3.2. Vil ag-k ep transzform aci oA vil ag-koordin atarendszerben rendelkez esre all o primitvek alapj an a k eperny on azaz egy m asik koordin ata rendszerben kell k epet k eszteni. A koordin atarendszerv alt as ahoz geometriai transzform aci ok sz uks egesek. 3D grak aban ez a transzform aci ovett est is tartalmaz, hiszen a modell 3 dimenzi os, mg a k ep mindig 2.1.3.3. V ag asA k epszint ezis a modell azon r esz et f enyk epezi, amely a 2D ablakon bel ul, vagy a 3Dablak es a szem altal deni alt v egtelen piramison bel ul helyezkedik el. Az ezeken kv ules o objektumokat, objektumr eszleteket valamikor ki kell v alogatni es el kell hagyni.Ezt a folyamatot nevezz uk v ag asnak (clipping).1.3.4. Takar asi feladatA transzform aci ok t obb objektumot is vetthetnek ugyanarra a k eppontra. Ilyenkor elkell d onten unk, hogy melyiket jelents uk meg, azaz melyik takarja a t obbi objektumotaz adott pontban. Ezt a l ep est takar asnak, vagy takart fel ulet/ el elhagy asnak (hiddensurface/line elimination) nevezz uk. 2D grak aban nincs olyan geometriai inform aci o,amely alapj an ezt a d ont est meghozhatn ank, ez ert a takar ast az objektumok egy k ul on-leges tulajdons aga, az un. priorit asa alapj an hat arozhatjuk meg. 3D grak aban nyilv ana szempozci ohoz legk ozelebbi objektumot kell v alasztanunk.24 1. A sz amt og epes graka c eljai es feladatai1.3.5.Arnyal asHa siker ult eld onteni, hogy egy k eppontban melyik objektum l atszik, akkor a k eppontotennek megfelel oen kell kisznezni. 2D grak aban a sznez es az objektum saj at szn evelt ort enik. 3D grak aban viszont a l athat o szn a t erben fenn all o f enyviszonyok bonyolultf uggv enye.Osszehasonltva a 2D es 3D graka k epszint ezis l ep eseit meg allapthatjuk,hogy a 3D grak at a takar as es az arnyal as (shading) teszi nehezebb e a 2D grak an al.1.3.6. Sznlek epz es a megjelent oeszk ozreAz arnyal asak epegyespontjainkereszt ulaszembejut of enyintenzit as athat aroz-za meg a hull amhossz f uggv eny eben. A hull amhosszf ugg o intenzit as-eloszl ast spekt-rumnak nevezz uk. Ezen spektrum altal keltett szn erzetet kell a megjelent oeszk oz le-het os egeinek a gyelembev etel evel a lehet o legpontosabban visszaadni, azaz a spekt-rumot le kell k epezni az eszk oz altal megjelenthet o hull amhosszokra es intenzit asokra(tone-mapping).1.4. A sz amt og epes graka jelfeldolgoz asi megk ozelt eseAgrakusprogramak epetasz amt og epmem ori aj aban alltjael o, amelyalapj anamegjelent o elektronika vez erli a monitort. A k ep mem ori aban l ev o reprezent aci oj atdigit alis k epnek nevezz uk. A digit alis k ep a folytonos, 2 dimenzi os k epet v eges sz a-m u elemb ol epti fel. Amennyiben az alapvet o ept oelem a szakasz, vektorgrak ar olbesz el unk. Ha az ept oelem t eglalap alak u kicsiny ter ulet, un. pixel, akkor a rendsze-r unk rasztergrakus. Jelen jegyzet csak a rasztergrakus megjelent okkel foglalkozik.A pixel sz o a picture es element, k ep es elem angol szavak kompozci oja.A digit alis k epben t arolt szakaszhalmazt, vagy pixelhalmazt a monitoron kell meg-jelenten unk. A jelenleg haszn alatos kat odsug ar cs oves monitorban a megjelent o egyespontjait v or os, k ek es z old szn u f eny emitt al as ara brhatjuk 3 elektronsug ar segts eg e-vel. A h arom k ul onb oz o hull amhosszon kibocs atott fotonok ar any anak v altoztat as avala szemben k ul onb oz o szn erzet keletkezik.1.5. Rasztergrakus rendszerek fel ept eseA rasztergrakus rendszerekn el a k ep szab alyos n egyzetr acsba szervezett pixelekb ol allthat o ossze. Az egyes pixelek szn et meghat aroz o sz amot speci alis mem ori aba,arasztert arba kell berni. Az elektronsugarak alland o p aly at j arnak be es egym as alattivzszintes vonalakat h uzva v egigp aszt azz ak a k eperny ot. A megjelent o elektronika ap aszt az as alatt rasztert ar tartalom alapj an modul alja az elektronsugarak intenzit as at, ilym odon kialaktva a k epet.1.5. Rasztergrakus rendszerek fel ept ese 25Az 1.10. abra egyszer u rasztergrakus rendszert mutat be. A grakus processzor arasztert arat illeszti a sz amt og ep rendszerbusz ahoz es elv egzi az alacsonyszint u rajzo-l asi m uveleteket. A legegyszer ubb rendszerekben a grakus processzor el is maradhat,ilyenkor a sz amt og ep k ozponti processzora hajtja v egre a rajzol asi m uveleteket is.1.10. abra. Rasztergrakus rendszerek fel ept ese (val os szn m od)A rasztert ar olyan nagy kapacit as u, speci alis szervez es u mem oria, amely mindenegyes pixel szn et egy mem oriasz oban t arolja. A sz o sz eless ege (n) a legegyszer ubbrendszerekben altal aban 4, szem elyi sz amt og epekben 8, grakus munka allom asokban12, 24 s ot 36, vagy 48. A pixel szn enek a szavakban t arolt biteken t ort en o k odol as arak et m odszer terjedt el.1. Val os szn m od eset en a sz ot h arom r eszre osztjuk, ahol az egyes r eszek a v or os,z old es k ek sznkomponensek sznintenzit as at jelentik.2. Indexelt szn m od, vagy m as n even pszeudo szn m od eset en az egyes szavakatdek odol o mem oria, un. lookup t abla (LUT) vagy paletta cmeik ent ertelmezz uk, es a v or os, z old es k ek komponensek t enyleges intenzit asait ebben a dek odol omem ori aban helyezz uk el (1.11. abra).Ha a rasztert arban egy pixelhez n bit tartozik, akkor val os szn m odban a megjelent-het o sznek sz ama 2n. Indexelt szn m odban az egyszerre megjelenthet o sznek sz amaugyancsak 2n, de, hogy melyek ezek a sznek, az m ar a paletta tartalm at ol f ugg. Ha apalett aban egy sznkomponenstm biten abr azolunk, akkor a lehets eges sznek sz ama23m.L atnunk kell, hogy az indexelt szn m od egy p otmegold as, hogy a pixelenk ent kev esbitet tartalmaz o grakus rendszerekben a r ovidre szabott takar onkat meghosszabbtsuk.26 1. A sz amt og epes graka c eljai es feladatai1.11. abra. Indexelt szn m odot haszn al o rasztergrakus rendszer fel ept eseAmonitork ep enekstabiliz al as ahozarasztert artartalm atrendszeresen(legal abbm asodpercenk ent50-100-szor)kikellolvasni, esak eperny oreak epet ujrafelkellrajzolni. A pixelek egym as ut ani kiolvas as at a k eperny ofrisst o egys eg vez erli, amelyszinkroniz aci os jeleket biztost a monitor sz am ara annak erdek eben, hogy az elektron-sug ar a pixelsor v eg en fusson vissza a k eperny o bal sz els o oldal ara.A monitor sz am ara a digit alis szninform aci ot anal og jell e kell atalaktani, amelyeth arom D/A atalakt o v egez el.A pixel sorok es oszlopok sz ama deni alja a grakus rendszer felbont as at. Egy ol-cs obb rendszerben a tipikus felbont as 640 480, 1024 768, a professzion alis grakapedig 1280 1024, vagy 1600 1200 felbont assal jellemezhet o. Professzion alis rend-szerekben teh at a pixelek sz ama 1 milli o felett van. Figyelembe v eve, hogy egy m asod-perc alatt ezt az 1 milli o pixelt legal abb 50-szer kell kiolvasni, az egy pixel kiolvas as ara,dek odol as ara es digit al-anal og atalakt as ara kevesebb mint 20 nsec all rendelkez esre.A rasztert ar m erete sznkomponensenk ent 8 bitet felt etelezve 1280 1024 24bits 3 Mbyte nem engedi meg, hogy ilyen nagysebess eg u mem oria aramk or okb ol eptkezz unk. Szerencs ere a rasztert arhozz af er es koherens jellege (mindig soronk ent,egy soron bel ul pedig egym as ut ani pixelenk ent vessz uk el o az adatokat a k eperny o-frisst eshez) lehet ov e teszi, hogy a pixeleket p arhuzamosan olvassuk ki a rasztert arb ol.A kiolvasott pixelek egy shift-regiszterbe ker ulnek, amelynek v eg en az egym as ut anipixelek m ar 20 nsec-k ent kics op ogtethet ok.1.6. A k epek t arol asa es ut ofeldolgoz asaAzon t ul, hogy a k epszint ezis altal kisz amtott k ep altal aban a megjelent oeszk ozre ke-r ul, gyakran felmer ul az ig eny, hogy a k epet egy allom anyba elments uk es egy m asikrendszerbe atvigy uk. A k epeket akkor vihetj uk at m asik rendszerbe, ha az allom any for-m atuma szabv anyos es a m asik rendszer sz am ara erthet o. Sz amos k ul onb oz o form atum1.7. Program: TARGA form atum u k ep allom anyok kezel ese 27l etezik, amelyek t arolhatj ak a k ep m eret et es a k eppontok szn ert ekeit t om ortetlen for-m aban (BMP, TARGA, stb.) vagy k ul onb oz o vesztes eg n elk uli vagy vesztes eges t om or-t esi m odszerrel s urtve (GIF, TIFF, JPEG, PCX, stb.). Egyes form atumokban (MPEG)nem csup an on all o k epeket, hanem k epsorozatokat, anim aci okat is t arolhatunk.1.12. abra. Egy k epfeldolgoz o program kezel oi fel ulete (xv)A k epfeldolgoz o programok a grakus rendszereknek egy k ul onleges tpus at jelen-tik.Ezen rendszerek bemeneti adatk ent egy digit alis k epet kapnak, amelyb ol altal abantranszform alt k epeket, ritk abban a k epek alapj an valamilyen geometriai inform aci ot al-ltanak el o [SP92].1.7. Program: TARGA form atum u k ep allom anyok kezel eseEbben a fejezetben TARGA form atum u k epek kir as ahoz es beolvas as ahoz adunk megoszt alyokat. ATGAOutputFile oszt aly segts eg evel a k epet egy TARGA form atum uk ep allom anyba menthetj uk, aTGAInputFile felhaszn al as aval pedig a k epet az allo-m anyb ol bet olthetj uk. Egy TARGA form atum u allom any egy 18 b ajtos fejr esszel kez-d odik, ami tartalmazza a k ep sz eless eg et (width), magass ag at (height), es az egyespixelekheztartoz obiteksz am at(jelenmegold asbanegypixelt1b ajtosv or os(r), 1b ajtos z old (g) es 1 b ajtos k ek (b) ert ekkel runk le). A k et implement aci os oszt aly akonstruktorban kezeli a f ajl fejr esz et, aPixel tagf uggv eny pedig az egyes pixeleketkirja, illetve beolvassa.28 1. A sz amt og epes graka c eljai es feladatai//=============================================================class TGAOutputFile {//=============================================================FILE*file;public :TGAOutputFile( char*outputfilename, int width, int height ) {file = fopen(outputfilename, "wb");fputc(0,file); fputc(0,file); fputc(2,file);for(int i = 3;i < 12; i++) fputc(0,file);fputc(width & 0xff, file);fputc(width / 256, file);fputc(height & 0xff, file);fputc(height / 256, file);fputc(24,file); fputc(32,file);}void Pixel( double r, double g, double b ) {if (b > 1.0) b = 1.0; fputc(b*255, file);if (g > 1.0) g = 1.0; fputc(g*255, file);if (r > 1.0) r = 1.0; fputc(r*255, file);}TGAOutputFile( ) { fclose(file); }};//=============================================================class TGAInputFile {//=============================================================FILE*file;public :TGAInputFile( char*inputfilename, int& width, int& height ) {file = fopen(inputfilename, "rb");for(int i = 0;i < 12; i++) fgetc(file);width = fgetc(file) + fgetc(file)*256L;height = fgetc(file) + fgetc(file)*256L;fgetc(file); fgetc(file);}void Pixel( double& r, double& g, double& b ) {b = fgetc(file) / 255.0;g = fgetc(file) / 255.0;r = fgetc(file) / 255.0;}TGAInputFile( ) { fclose(file); }};2. fejezetGrakus szoftver alrendszerek fel ept eseA 2.1. abra egy tipikus interaktv grakus program strukt ur at mutat be.2.1. abra. A grakus szoftver fel ept eseAfelhaszn al oagrakusbevitelieszk oz oksegts eg evelavatkozhatbeaprogramm uk od es ebe. A grakus beviteli eszk oz ok 2D abszol ut vagy relatv pozci o adatot, 3Dabszol ut vagy relatv pozci o adatot vagy karaktersorozatot szolg altathatnak. A bevitelieszk oz oket megszakt asi rutinok illesztik a programhoz. A megszakt asi rutinok a be-viteli eszk oz ok esem enyeit egy vagy t obb esem enysorba pakolj ak. A grakus programezt az esem enysort gyeli, es ha abban megjelenik valami, akkor reag al r a.2930 2. Grakus szoftver alrendszerek fel ept ese2.1. Programvez erelt es esem enyvez erelt interakci oA felhaszn al oi beavatkoz asok kezel es ere alapvet oen k et programoz asi technik at hasz-n alhatunk. A hagyom anyos un. programvez erelt interakci oban a program t olti be azir anyt o szerepet, a felhaszn al o pedig v alaszol a feltett k erd esekre. Amikor a sz am-t asok sor an a programnak uj bemeneti adatra van sz uks ege, err ol ertest est k uld a fel-haszn al onak, majd addig v arakozik, amg az v alaszt nem ad a k erd esre. A j ol ismertprintf-scanf C f uggv enyp ar ennek tipikus megval ost asa. Ebben az esetben a beg e-pelt karakterek ertelmez es ehez sz uks eges allapotinform aci ot (p eld aul a 123 valakineka kora vagy egy banki atutal as osszege) az hat arozza meg, hogy pontosan hol tartunka program v egrehajt as aban. A programvez erelt interakci o alapvet o hi anyoss aga, hogyegyszerre egyetlen beviteli eszk oz kezel es ere k epes. Ha ugyanis a program felteszi ak erd es et a felhaszn al onak, akkor addig nem l ep tov abb, amg a scanf f uggv eny visszanem t er a k erd esre adott v alasszal, gy ezalatt r a sem n ezhet a t obbi beviteli eszk ozre. Am asik f o probl ema, hogy a felhaszn al oi kommunik aci o es a program feldolgoz o r eszenem v alik el elesen egym ast ol. Emiatt a felhaszn al oi kommunik aci oban nem haszn al-hatunk el ore deni alt magas szint u k onyvt ari szolg altat asokat. K ovetkez esk eppen csakkorl atozott min os eg u felhaszn al oi kommunik aci o val osthat o meg elfogadhat o r aford-t as ar an.2.2. abra. Programvez erelt es esem enyvez erelt programok szerkezeteAz esem enyvez erelt interakci oban a felhaszn al o ir anyt, a program passzvan reag ala felhaszn al oi beavatkoz asokra. A program nem v ar egyetlen eszk ozre sem, hanem pe-riodikusan teszteli, hogy valamelyik eszk oz on t ort ent-e esem eny, gy tetsz oleges sz am ubeviteli eszk oz is kezelhet o. Minden pillanatban a felhaszn al o v alaszthat, hogy melyikbeviteli eszk ozt haszn alja. Ebben az esetben az esem eny ertelmez es et nem v egezhetj ukel aszerint, hogy eppen hol tartunk a programban, hiszen az esem enyt mindig ugyanott,az esem enysor tesztel es en el kezdj uk feldolgozni. Az esem enyek ertelmez es ehez sz uk-2.2. A grakus hardver illeszt ese 31s eges allapotinform aci ot explicit m odon, v altoz okban kell t arolni. Vegy uk eszre, hogyaz eszk oz ok tesztel ese es az esem enysor kezel ese, s ot bizonyos alapvet o esem enyekreelv art reakci o (p eld aul az eg er mozgat asakor a kurzort is mozgatni kell) f uggetlen az al-kalmaz ast ol, ez ert ezt egyszer kell megval ostani es egy k onyvt arban el erhet ov e tenni.Az alkalmaz asf ugg o r esz az egyes esem enyekre reag al o rutinok gy ujtem enye (szok asoselnevez esek az esem eny kezel o vagy trigger). Ez egyr eszt el ony os, mert az alkalmaz oiprogram fejleszt oj et megkm elhetj uk az interakci o alapvet o programjainak a megr as a-t ol. M asr eszt viszont felborul az a j ol megszokott vil agk ep unk, hogy a bel ep esi pontt olkezdve a program egy j ol meghat arozott, atl athat o sz alon fut v egig. A programfejleszt oszempontj ab ol az esem enyvez erelt rendszerek k ul on all o triggerek l atsz olag f uggetlengy ujtem enyei, ahol m eg azt sem mindig mondhatjuk meg, hogy ezeket milyen sorrend-ben hajtja v egre a program. Az esem enyvez erelt rendszerek programoz asa teh at nehe-zebb, de a nagyobb odagyel es felt etlen ul megt er ul. Ezt bizonytja az a t eny is, hogya modern, interaktv szoftvereket el o allt o eszk oz ok mind az esem enyvez erelt loz o atk ovetik.A esem enyekre reag al o program egyr eszt modellez esi feladatokat v egezhet,azazmegv altoztathatja a virtu alis vil agot reprezent al o adatstrukt ur at (vagy adatb azist), m as-r eszt m odosthatja a kamera param etereit. Mindk et esetben a k epet ujra kell sz amtaniak epszint ezisalrendszersegts eg evel. Aprogramaz ujrasz amtottk epetagrakusmegjelent o eszk oz on mutatja meg a felhaszn al onak.2.2. A grakus hardver illeszt eseA program a grakus hardver szolg altat asait a grakus k onyvt arak segts eg evel erhetiel.A grakus k onyvt arak altal aban hierarchikus r etegeket k epeznek, es t obb e-kev esb eszabv anyostott interf esszel rendelkeznek. A grakus k onyvt arak kialakt asakor igye-keznek k ovetni a logikai ki-bevitel es a rajzol asi allapot elveit.A logikai ki-bevitel azt jelenti, hogy a m uveletek param eterei nem f uggnek a hard-ver jellemz oit ol, gy az erre a fel uletre ep ul o program hordozhat o lesz. A koordin at akatp eld aul a megjelent oeszk oz felbont as at ol f uggetlen ul c elszer u megadni, a sznt pedigelvonatkoztatva az egy k epponthoz tartoz o rasztert arbeli bitek sz am at ol.A rajzol asi allapot haszn alat ahoz az a felismer es vezet, hogy m ar az olyan egysze-r ubb grakus primitvek rajzol asa is, mint a szakasz, igen sok jellemz ot ol, un. attri-b utumt ol f ugghet, p eld aul a szakasz szn et ol, vastags ag at ol, mint azat at ol, a szaggat asik oz ok szn et ol es atl atsz os ag at ol, a szakaszv egek lekerekt es et ol, stb. Ez ert ha a pri-mitv osszes adat at egyetlen f uggv enyben pr ob aln ank atadni, akkor a f uggv enyek para-m eterlist ainak nem lenne se v ege se hossza. A probl em at a rajzol asi allapot koncepci obevezet es evel oldhatjuk meg. Ez azt jelenti, hogy a k onyvt ar az erv enyes attrib utumokategy bels o t abl azatban tartja nyilv an. Az attrib utumok hat asa mindaddig erv enyben ma-32 2. Grakus szoftver alrendszerek fel ept eserad, amg meg nem v altoztatjuk azokat. Az attrib utumok kezel ese a rajzol oparancsokt olelk ul ontett attrib utum allt o f uggv enyekkel lehets eges.Sz amos grakus k onyvt ar ismeretes, amelyek kapcsol odhatnak az oper aci os rend-szerhez (Ms-Windows GDI, X-Window, a hardverhez (OpenGL, Starbase, TEK-STI), aprogramoz asi nyelvhez (ObjectWindows, MFC), de l eteznek szabv anyos, gy art of ugget-len interf eszek is (GKS, CGI, PHIGS, stb.). Az el erhet o szolg altat asok k ore a szakasz-rajzol ast ol eg eszen a text ur akkal kieg esztett 3D fel uletek megjelent es eig terjedhet.2.3. Program: egy egyszer u grakus k onyvt arA grakus k onyvt arak altal aban a bemeneti esem enyek feldolgoz as at az esem eny el-oszt oig bez ar olag v egzik el, a grakus megjelent o vez erl es et pedig az alacsony szint uprimitvek megjelent es et ol kezdve v allalj ak fel. A k ovetkez okben egy egyszer u gra-kus k onyvt arat mutatunk be, amely a beviteli eszk oz oket esem enyvez erelten kezeli,a grakus kimenetet pedig mind zikai, mind pedig logikai m odon illeszti. A logikaiszint a zikai szintre ep ul, elfedve annak hardverf ugg o saj atoss agait.A k onyvt arunkt ol mind ossze a pont es a szakasz rajzol as at v arjuk el. A pont es aszakasz attrib utumai a pont illetve a szakasz szne es a raszter oper aci o, amely azonlogikai m uveletet hat arozza meg, amelyet a rasztert ar eredeti tartalm ara es a szakaszszn ere v egre kell hajtani, hogy a rasztert ar uj ert ek et el o alltsuk. Tekints uk tov abb a akezd opont koordin at ait is a szakasz attrib utum anak, gy a szakaszrajzol as f uggv enybencsak a v egpont szerepel. A k onyvt ar rutinjai a zikai szinten a k ovetkez ok:typedef int PCoord;typedef long PColor;void Pixel(PCoord X, PCoord Y, PColor color);void PLine(PCoord X, PCoord Y);void PMove(PCoord X, PCoord Y);void PSetColor( PColor color );Ezekben a rutinokban az X, Y koordin at ak a pixelkoordin at akban ertend ok. A zikaicmek haszn alat ahoz sz uks eges lehet a megjelent oeszk oz felbont as anak lek erdez ese is:void GetResolution( PCoord& px, PCoord& py );A raszteroper aci ok k oz ul a rasztert arnak az uj sznnel t ort en o atr as at (SET) es az uj es a r egi szn bitenk enti modulo 2 osszeg et ( un. kiz ar o vagy, illetve XOR) engedj ukmeg.typedef enum {SET, XOR} ROP;void RasterOp( ROP rop );2.3. Program: egy egyszer u grakus k onyvt ar 33A logikai ki-bevitel elveinek megfelel oen a rutinok param eterez ese nem f ugghet azaktu alis eszk oz zikai jellemz oit ol, mint p eld aul a felbont ast ol, vagy az egy pixelheztartoz o bitek sz am at ol. A koordin at ak logikai megad as anak egyik lehets eges m odja,haaparam eterekateljesablakm eretar any abanadj ak akv antpozci ot,gyakoor-din at akegy[0...1]tartom anybanl ev o ert eketvehetnekfel. Alogikaikoordin at akatCoord tpussal deni aljuk. Az eszk ozkoordin at ak maxim alis ert ek enek lek erdez es ehezl etrehozzuk a GetDevice(Coord& x, Coord& y) f uggv enyt. A kimenetet val obanlogikai szinten kezel o k onyvt arakn al teh at ez azx esy v altoz oba 1 ert eket r. Fizikaiszint u eszk ozkezel es eset en a v altoz okba a vzszintes es a f ugg oleges felbont as ker ul.A sznt logikai m odon a rendszerben el erhet o maximum ert ekre vettett relatv R, G, B ert ekekkel adhatjuk meg.Osszefoglalva a k onyvt ar logikai szint u szolg altat asai:typedef double Coord;typedef struct { double R, G, B; } Color;void GetDevice(Coord& x, Coord& y);void Pixel(Coord x, Coord y, Color color);void DrawLine(Coord x, Coord y);void Move(Coord x, Coord y);void SetColor(Color color);void Clear();Az esem enyvez erelt loz o anak megfelel oen a bemeneti esem enyekr ol a k onyvt ar ertesti az alkalmaz ast, szemben a programvez erelt megold assal, amikor az alkalmaz asr ak erdez, hogy t ort ent-e bemeneti esem eny. Az egyszer u k onyvt arunk eg er es billenty u-zet esem enyeket kezel. Ak onyvt ar egy billenty u lenyom asakor a KeyboardEvent uze-netet k uld az alkalmaz asnak, a bal eg ergomb lenyom asakor egy MouseLeftBtnDown uzenetet, az eg ergomb elenged esekor egyMouseLeftBtnUp uzenetet, v eg ul az eg ermozgat asakor MouseMove uzeneteket. A KeyboardEvent uzenet param etere a lenyo-mott billenty u ASCII k odja, az eg er uzenetek param etere pedig a kurzor aktu alis pozci- oja. El ofordulhat, hogy valamilyen ok miatt p eld aul a felhaszn al o egy m asik ablakoth uzott el ezen ablak el ott az ablak tartalma erv enytelenn e v alik, es ez ert ujra kellrajzolni. Err ol a k onyvt ar a ReDraw uzenettel ertestheti az alkalmaz ast.Osszefoglalva a k ovetkez o rutinokat az alkalmaz asban kell implement alni, es ezeketa k onyvt ar hvja a megfelel o esem enyek bek ovetkeztekor:void KeyboardEvent( int keyASCII );void MouseLeftBtnDown( Coord x, Coord y );void MouseLeftBtnUp( Coord x, Coord y );void MouseRightBtnDown( Coord x, Coord y );void MouseRightBtnUp( Coord x, Coord y );void MouseMove( Coord x, Coord y );void ReDraw( );34 2. Grakus szoftver alrendszerek fel ept eseObjektum-orient alt k ornyezetekben a grakus kimenethez kapcsol od o m uveleteket altal aban egyetlen ablakoszt alyban Window foglaljuk ossze. A konkr et alkalmaz as eb-b ol or okl essel hozza l etre az elv art m uk od esnek megfelel o ablakot. Mivel az ablakokegy enis egeabb olad odik, hogyabemenetiesem enyekrem ask eppenreag alnak, az or okl es sor an a esem enykezel o virtu alis f uggv enyeket at kell deni alni. Az uj f uggv e-nyek term eszetesen haszn alhatj ak a k onyvt arban megrt rajzol o parancsokat.//=============================================================class Window {//=============================================================void GetDevice( Coord& x, Coord& y );void Pixel(Coord x, Coord y, Color c);void SetColor( Color c );void Move(Coord x, Coord y);void DrawLine(Coord x, Coord y);void RasterOp( ROP r );void Clear( );virtual void KeyboardEvent( int keyASCII ) {}virtual void MouseLeftBtnDown( Coord x, Coord y ) {}virtual void MouseLeftBtnUp( Coord x, Coord y ) {}virtual void MouseRightBtnDown( Coord x, Coord y ) {}virtual void MouseRightBtnUp( Coord x, Coord y ) {}virtual void MouseMove( Coord x, Coord y ) {}virtual void ReDraw( ) {}public:Window( ) { pwindow = this; }void Execute( );};extern Window*pwindow = NULL;V eg ul a programindul asakor a k onyvt ar az alkalmaz as inicializ al as ahoz meghv egyAppStart f uggv enyt, ami az alkalmaz as bel ep esi pontj anak tekinthet o. Az AppStartl etrehozza az alkalmaz oi ablak egy p eld any at, es a k onyvt arExecute f uggv eny evelbeindtja az uzenetsor ciklikus lek erdez es et:class MyWindow : public Window { ... };void AppStart( ) {MyWindow win;win.Execute( );}2.3. Program: egy egyszer u grakus k onyvt ar 352.3.1. A logikai es a zikai szintek osszekapcsol asaA logikai szinten el erhet o szolg altat asok a zikai szint szolg altat asaira ep ulnek. Eh-hez a bemeneti l ancon a zikai eszk ozkoordin at akat logikai eszk ozkoordin at akra kellalaktani, a kimeneti l ancon pedig eppen fordtva, a logikai koordin at akat vissza kellalaktani eszk ozf ugg o ert ekekre.A transzform aci ok elv egz es ehez felt etelezz uk,hogy az eszk oz zikai felbont as a-nak megfelel oen m ar kit olt ott uk adevice t eglalap v altoz ot, amivel az atalakt as m ark onnyen elv egezhet o:typedef struct { int left, top, right, bottom; } RECT;RECT device;void Physical2LogicalCoord( PCoord X, PCoord Y, Coord& x, Coord& y ) {x = (Coord)(X - device.left) / (device.right - device.left);y = (Coord)(Y - device.bottom) / (device.top - device.bottom);}void Logical2PhysicalCoord( Coord x, Coord y, PCoord& X, PCoord& Y ) {X = x*(device.right - device.left) + device.left;Y = y*(device.top - device.bottom) + device.bottom;}A sznek atalakt as ahoz a paletta azon bejegyz eseit kell azonostani, amelyek a leg-ink abb hasonltanak a megjelentend o sznre. Amennyiben a paletta aBLACK, BLUE,GREEN, RED, YELLOW, MAGENTA, CYAN es WHITE sorokban rendre a fekete, k ek, z old,piros, s arga, magenta, ci an es feh er szneket tartalmazza, akkor a konverzi o a k ovetke-z ok eppen v egezhet o el:int Logical2PhysicalColor( Color c ) {if (col.R = 0.5 && col.G < 0.5 && col.B < 0.5) return RED;if (col.R >= 0.5 && col.G >= 0.5 && col.B < 0.5) return YELLOW;if (col.R >= 0.5 && col.G < 0.5 && col.B >= 0.5) return MAGENTA;if (col.R < 0.5 && col.G >= 0.5 && col.B >= 0.5) return CYAN;if (col.R >= 0.5 && col.G >= 0.5 && col.B >= 0.5) return WHITE;}Ezek felhaszn al as aval a kimenetet logikai szinten kezel o szolg altat asokat a zikaiszint u szolg altat asokra vezethetj uk vissza:36 2. Grakus szoftver alrendszerek fel ept esevoid Window :: Move( Coord x, Coord y ) {PCoord X, Y; Logical2PhysicalCoord( x, y, X, Y ); PMove( X, Y );}void Window :: DrawLine( Coord x, Coord y) {PCoord X, Y; Logical2PhysicalCoord( x, y, X, Y ); PLine( X, Y );}void Window :: Pixel( Coord x, Coord y, Color col ) {PCoord X, Y; Logical2PhysicalCoord(x, y, X, Y); Pixel(X, Y, col);}void Window :: SetColor( Color col ) {PSetColor( Logical2PhysicalColor( col ) );}2.3.2. A k onyvt ar megval ost asa DOS oper aci os rendszer alattA billenty uzet es az eg er illeszt es et elv egezhetj uk a hardver portok zikai kezel es evelis, de jelent os f arads agot takartunk meg, ha kihaszn aljuk azt, hogy a a DOS/BIOS ope-r aci os rendszer, illetve a C k onyvt ar m ar sz amos dolgot megval ost a billenty uzet es azeg er kezel es eb ol.A billenty uzetet kezel o oper aci os rendszer szolg altat asokat legk ony-nyebben C k onyvt ari rutinokon kereszt ul erhetj uk el. Akbhit rutin ellen orzi, hogyt ort ent-e klaviat ura esem eny, a getch rutin pedig visszaadja a le ut ott billenty u k odj at.Az eg erkezel o DOS hv asokhoz sajnos nemtartoznak Ck onyvt ari f uggv enyek, ez erta g epi k od u r eszleteket magunknak kell a magas szint u nyelvhez illeszteni. Az eg erke-zel o funkci ok a 33h DOS hv ashoz kapcsol odnak. P eld aul az eg er pillanatnyi, a k eper-ny o pixelegys egeiben m ert pozci oj at es a gombok st atusz at a k ovetkez o rutinnal kap-hatjuk meg:#define IRET 0xCFstatic REGS regs;#define REG( r ) regs.x.##r#define MOUSE_IT int86(0x33, &regs, &regs)//-------------------------------------------------------------------void getmouse( int*px, int*py, int*pstat ) {//-------------------------------------------------------------------REG(ax) = 3; // funkci o = st atusz lek erdez esMOUSE_IT;*pstat = REG(bx); // gomb st atusz: 0. bit bal, 1. bit jobb*px = REG(cx); // X pozci o pixel koordin at akban*py = REG(dx); // Ypozci o pixel koordin at akban}A rutin az eg er aktu alis pozci oj at a pX es pY param eterek altal megcmzett v alto-z oba, a bal gomb st atusz at pedig pstat cm u v altoz oba teszi.2.3. Program: egy egyszer u grakus k onyvt ar 37A zikai eszk ozkoordin at akat logikai eszk ozkoordin at akk a kell alaktani. A k ovet-kez o programr eszlet BGI grakus szolg altat asokkal a zikai felbont asnak megfelel oenkit olti a device t eglalap v altoz ot:device.left = 0; device.right = getmaxx( );device.bottom = 0; device.top = getmaxy( );A beviteli eszk oz oket pediorikusan tesztel o f ociklus ugyancsak a k onyvt arba ker ul://-------------------------------------------------------------------void Window :: Execute( ) {//-------------------------------------------------------------------PCoord X, Y, X_old, Y_old;int stat, leftstat_old = 0, rightstat_old = 0;for( ; ; ) { // f ociklusif ( kbhit() ) { // billenty uzet tesztel eseint c = getch(); // billenty uzet lek erdez eseKeyboardEvent( c );}getmouse(&X, &Y, &stat); // eg er st atusz lek erdez eseint leftstat = stat & 1; // bal gombint rightstat = stat & 2; // jobb gombCoord x, y;Physical2LogicalCoord( X, Y, x, y ); // atalakt as logikai koordin at akk a// ha a koordin ata v altozott ...if (X != X_old || Y != Y_old) pwindow -> MouseMove( x, y );if (leftstat != leftstat_old) { // ha a bal gomb st atusza v altozott ...if (leftstat > 0) pwindow -> MouseLeftBtnDown( x, y );else pwindow -> MouseLeftBtnUp( x, y );}if (rightstat != rightstat_old) { // ha a bal gomb st atusza v altozott ...if (rightstat > 0) pwindow -> MouseRightBtnDown( x, y );else pwindow -> MouseRightBtnUp( x, y );}// felk esz ul unk a k ovetkez o ciklusraX_old = X; Y_old = Y;leftstat_old = leftstat, rightstat_old = rightstat;}}A grakus uzemm od be- es kikapcsol as at, valamint a zikai szint u grakus kimene-ti rutinokat p eld aul a BGI grakus k onyvt ar [SP92] szolg altat asaira eptve val osthatjukmeg.38 2. Grakus szoftver alrendszerek fel ept ese#include void InitGraph( ) {int GraphDriver = DETECT;int GraphMode;initgraph( &GraphDriver, &GraphMode, "." );device.left = 0; device.right = getmaxx( );device.bottom = 0; device.top = getmaxy( );}void CloseGraph( ) { closegraph(); }void Pixel( PCoord X, PCoord Y, PColor color ) { putpixel(X, Y, col); }void PSetColor( PColor col ) { setcolor( col ); }void PMove( PCoord X, PCoord Y ) { moveto(X, Y); }void PLine( PCoord X, PCoord Y ) { lineto(X, Y); }2.3.3. A k onyvt ar megval ost asa Ms-Windows k ornyezetbenAz Ms-Windows m ar maga is egy esem enyvez erelt grakus k onyvt arat tartalmaz, ez erta k onyvt arunk megval ost asa sor an csak az uzenet- es param eterkonverzi oval kell meg-birk oznunk.Az Ms-Windows minden olyan helyzetben, amikor a programunkt ol valamilyen re-akci ot v ar el, egy uzenetet tov abbt az alkalmaz as ablakkezel o f uggv eny enek. Az ab-lakkezel o f uggv eny egy lehets eges kialakt asa az al abbi:#include static HDC hdc; // attrib utum t abla azonost ochar szClassName[] = "grafika"; // ablak oszt aly neve//-------------------------------------------------------------------long FAR PASCAL WndProc(HWND hwnd, WORD wmsg, WORD wPar, LONG lPar) {//-------------------------------------------------------------------PAINTSTRUCT ps;switch ( wmsg ) {case WM_PAINT: // Ablak tartalma erv enytelenGetClientRect( hwnd, &device ); // ablakm eret lek erdez esehdc = BeginPaint(hwnd, &ps);if (pwindow) pwindow -> ReDraw( );EndPaint( hwnd, &ps );break;case WM_LBUTTONDOWN: // Bal eg ergomb lenyom ascase WM_LBUTTONUP: // Bal eg ergomb elenged escase WM_RBUTTONDOWN: // Jobb eg ergomb lenyom ascase WM_RBUTTONUP: // Jobb eg ergomb elenged es2.3. Program: egy egyszer u grakus k onyvt ar 39case WM_MOUSEMOVE: // Eg er mozgat ashdc = GetDC( hwnd ); // attrib utum t abla lek er esPCoord X = LOWORD(lPar); // az esem eny zikai koordin at aiPCoord Y = HIWORD(lPar);Coord x, y;Physical2LogicalCoord( X, Y, x, y ); // atalakt as logikai koordin at av aswitch ( wmsg ) { // az alkalmaz as esem enykezel oj enek atadjukcase WM_LBUTTONDOWN: pwindow -> MouseLeftBtnDown(x, y); break;case WM_LBUTTONUP: pwindow -> MouseLeftBtnUp(x, y); break;case WM_RBUTTONDOWN: pwindow -> MouseRightBtnDown(x, y); break;case WM_RBUTTONUP: pwindow -> MouseRightBtnUp(x, y); break;case WM_MOUSEMOVE: pwindow -> MouseMove(x, y); break;}ReleaseDC( hwnd, hdc ); // attrib utum t abla felszabadt asbreak;case WM_CHAR: // klaviat ura esem enyhdc = GetDC( hwnd );pwindow -> KeyboardEvent( wPar ); // atadjuk az alkalmaz asnakReleaseDC( hwnd, hdc );break;case WM_COMMAND: // Men u elem kiv alaszt as esem enyhdc = GetDC( hwnd );pwindow -> MenuCommand( wPar ); // atadjuk az alkalmaz asnakReleaseDC( hwnd, hdc );break;default: // Minden m as esem enyre az alap ertelmez es u reakci oreturn DefWindowProc( hwnd, wmsg, wPar, lPar );}return 0;}Ez az ablakkezel o f uggv eny az ablak erv enyest ese miatti ujrarajzol as (WMPAINT)esem eny hat as ara az alkalmaz oi ablakReDraw f uggv eny et aktiviz alja. Ebben az uze-netben az ablakkezel o f uggv eny felm eri az aktu alis ablak m ereteit, es az eredm enyt adevice v altoz oba rja. Ezt a m eretet haszn alja a program a zikai-logikai eszk ozkoor-din ata transzform aci ok sor an.Az ablakkezel o f uggv eny az eg errel kapcsolatos esem enyekn el (WMLBUTTONDOWN,WMLBUTTONUP, WMRBUTTONDOWN, WMRBUTTONUP, WMMOUSEMOVE)el osz orazi-kai eszk ozkoordin at akat logikai eszk ozkoordin at akk a alaktja, majd az eg er bal illetvejobb gombj anak megnyom asa eset en meghvja az alkalmaz oi ablak az adott esem eny-nek megfelel o rutinj at. V eg ul a WMCHAR klaviat ura esem enyt ugyancsak az alkalmaz oiablak tagf uggv eny ehez tov abbtja.40 2. Grakus szoftver alrendszerek fel ept eseA grakus rajzol o parancsok:void Pixel( PCoord X, PCoord Y, PColor color )SetPixel( hdc, X, Y, color );}void PMove( PCoord X, PCoord Y ) { MoveTo( hdc, X, Y ); }void PLine( PCoord X, PCoord Y ) { LineTo( hdc, X, Y );}void PRasterOp( ROP r ) {switch ( r ) {case SET: SetROP2( hdc, R2_COPYPEN ); break;case XOR: SetROP2( hdc, R2_XORPEN ); break;}}Az inicializ al o r esz az uzenetciklussal://-------------------------------------------------------------------void InitWindowClass( HANDLE hInstance, HANDLE hPrevInstance ) {//-------------------------------------------------------------------WNDCLASS wndclass;strcpy(szClassName, "grafika");if ( !hPrevInstance ) {wndclass.style = CS_HREDRAW | CS_VREDRAW;wndclass.lpfnWndProc = WndProc; // ablakkezel o f uggv enywndclass.hInstance = hInstance; // program azonost owndclass.hIcon = LoadIcon( hInstance, IDI_APPLICATION );wndclass.hCursor = LoadCursor( NULL, IDC_ARROW );wndclass.hbrBackground = GetStockObject( WHITE_BRUSH );wndclass.lpszMenuName = "windowsmenu"; // men un ev az er oforr as f ajlbanwndclass.lpszClassName = szClassName; // oszt alyn evwndclass.cbClsExtra = 0;wndclass.cbWndExtra = 0;if ( !RegisterClass( &wndclass ) ) exit( -1 );}}//-------------------------------------------------------------------void InitWindow( HANDLE hInstance, int nCmdShow ) {//-------------------------------------------------------------------HWND hwnd = CreateWindow( szClassName, // oszt alyn ev"grafika", // megfog o cskWS_OVERLAPPEDWINDOW, // az ablak stlusaCW_USEDEFAULT, // kezdeti x pozci oCW_USEDEFAULT, // kezdeti y pozci oCW_USEDEFAULT, // kezdeti x m eretCW_USEDEFAULT, // kezdeti y m eretNULL, // sz ul o ablak azonost oNULL, // men u azonost o, ha nem az oszt aly ehInstance, // program azonost o2.3. Program: egy egyszer u grakus k onyvt ar 41NULL ); // param eterlista v egeif ( ! hwnd ) exit( -1 );ShowWindow(hwnd, nCmdShow ); // ablak megjelent eseUpdateWindow( hwnd ); // erv enytelent es}//-------------------------------------------------------------------// egy Windows program itt indulint PASCAL WinMain( HANDLE hInstance, // program azonost oHANDLE hPrevInstance, // ugyanezen oszt aly m ar fut o p eld anyaLPSTR lpszCmdLine, // parancssor argumentumokint nCmdShow ) { // ablak megjelen ese//-------------------------------------------------------------------InitWindowClass(hInstance, hPrevInstance); // ablak oszt aly inicializ al asInitWindow( hInstance, nCmdShow ); // ablak p eld any inicializ al asAppStart( ); // alkalmaz as indt asreturn 0;}//-------------------------------------------------------------------void Window :: Execute( ) { // esem enykezel es//-------------------------------------------------------------------MSG msg;while( GetMessage( &msg, NULL, 0, 0 ) ) { // esem eny hurokTranslateMessage( &msg ); // klaviat ura esem eny konverzi oDispatchMessage( &msg ); // esem eny atad asa az alkalmaz asnak}}AzInitWindowClass esInitWindow f uggv enyek r eszletes megval ost asa b ar-milyen Windows programoz assal kapcsolatos irodalomban megtal alhat o.2.3.4. Programtervez es esem enyvez erelt k ornyezetekbenAz interaktv rendszerek modellez es enek, tervez es enek es implement aci oj anak alapel-veit egy egyszer u feladat megold as aval mutatjuk be. A p elda k ul onb oz o szn u szaka-szokat helyezelak eperny ore gumivonaltechnik aval. Afelhaszn al oa gumivonalm odszerrel egy szakaszt ugy deni alhat, hogy a szakasz egyik v egpontj an lenyomja azeg er gombj at, majd lenyomott gombbal elkezdi mozgatni az egeret. A kijel olt kezd o-pont es az aktu alis pozci o k oz e a program egy ideiglenes szakaszt h uz, ami k oveti azeg er mozg as at. A szakasz a gumi form ab ol akkor merevedik meg, ha elengedj uk azeg ergombot. Ebben a pillanatban a program a v egleges sznnel felrajzolja a szakaszt ak eperny ore, majd felk esz ul a k ovetkez o szakasz fogad as ara.Egy program tervez ese sor an a programunk adatait, funkcionalit as at es dinamik aj atkell kialaktanunk [LKSK95]. A funkcionalit ason azon feldolgoz asi l ep eseket ( ugyne-42 2. Grakus szoftver alrendszerek fel ept esevezett transzform aci okat) ertj uk, amelyek a bemeneti adatokb ol el o alltj ak a kimenetiadatokat. A dinamika a feldolgoz asi l ep esek id obelis eg et hat arozza meg. Interaktvrendszerekben k ul on osen nagy jelent os ege van a rendszer dinamik aj anak, hiszen a fel-haszn al ok minden pillanatban nagyon sokf ele ig enyt t amaszthatnak a rendszerrel szem-ben, ez ert a feldolgoz asi l ep eseket nagyon sok k ul onf ele sorrendben kell v egrehajtani.A grakus rendszerekben az adat-, a funkcion alis- es a dinamikus-modell h armas atm eg a program megjelen esi modellje eg eszti ki, amely rendelkezik arr ol, hogy a prog-ram milyen l atv anyt produk aljon a felhaszn al o sz am ara a k eperny on. A megjelen esimodellt az adott grakus fel ulet ept oelem k eszlet eb ol (widget) alakthatjuk ki.Az interaktv rendszerek specik al asa altal aban a probl ema szerepl oinek azonost a-s aval, azaz az adatmodell kialakt as aval kezd odik. A megoldand o feladatunkban ilyenszerepl ok a felhaszn al o (User) ( o minden interaktv rendszerben jelen van) es a rajzol asalatt all o szakasz (Line).Az esem enyvez erelt rendszereket a felhaszn al oi ig enyek m uk odtetik, l enyeg ebenmindent a felhaszn al oi beavatkoz asok, esem enyek indtanak el. Ez ert a k ovetkez o l ep esa felhaszn al o es a program k oz otti lehets eges p arbesz ed tpusok megfogalmaz asa. Eza p arbesz ed olyan, mintha a felhaszn al o a fej eben futtatn a le a programot, amely so-r an a programb ol rutinokat hvogat. A p eld aban h arom dial ogus szerepel, nevezetesenegy szakasz felv etele, a rajzol asi szn be allt asa es a k eperny o t orl ese. Egy sza-kasz felv etele sor an a felhaszn al oi esem enyek sorrendje es a program reakci oi az egyesesem enyekre a k ovetkez ok:1. Kezd opont kijel ol es2. Gumivonal mozgat as: gumivonal felrajzol as3. Gumivonal mozgat as: gumivonal athelyez es4. ...5. Gumivonal mozgat as: gumivonal athelyez es6. V egpont kijel ol es: v egleges felrajzol as a rajzol asi sznnelEbbenaforgat ok onyvbenazegyesbejegyz esekbenafelhaszn al oiesem enyeket esaprogram reakci oit kett osponttal v alasztottuk el.A szn be allt asa es k eperny o t orl es trivi alis dinamik aval rendelkezik, hiszen a fel-haszn al o kiadja az ilyen ertelm u parancsot, a program pedig tudom asul veszi azt.Mivel a p arbesz edek a felhaszn al oi fel ulet szintj en deni alj ak a rendszert, a p arbe-sz edeket ki kell terjeszteni a rendszer bels o objektumaira is, azaz meg kell mondani,hogy egy a felhaszn al oi fel uleten megjelent ig eny kiel egt es eben a program objektumai2.3. Program: egy egyszer u grakus k onyvt ar 43mik ent vesznek r eszt. A program objektumainak egy uttm uk od es et kommunik aci os di-agramokon rjuk le, amelyek azt mutatj ak be, hogy egy felhaszn al oi esem eny melyikobjektumhoz jut el, es az milyen m as objektumoknak uzen a feladat elv egeztet ese sor an.2.3. abra. A gumivonal rajzol as kommunik aci os diagramjaAz objektumok k oz otti p arbesz edek felt erk epez ese ut an az egyes objektumok bel-sej enek modellez ese k ovetkezik. Mik ent azt a kommunik aci os diagram bemutatja, egyobjektum az ot ert uzenet hat as ara m as objektumoknak uzenhet. El ofordulhat, hogy ak uld ott uzenet nem csak az utols o kapott uzenet f uggv enye, hanem a kor abbi uzene-tek is befoly asolj ak a viselked est. Az objektum teh at eml ekeket hordozhat a kor abbi uzenetekr ol. Az eml ekeket az objektum allapot aban t aroljuk. Els o megk ozelt esben akommunik aci os diagramon minden k et kapott uzenet k oz otti id ot az objektum egy uj allapot anak tekintj uk. Az allapotv altoz asokat es az allapotokhoz kapcsol od o tev ekeny-s egeket pedig az objektum allapott abl aj aban foglaljuk ossze. Az allapott abla oszlopaiaz uzeneteket, a sorai pedig a lehets eges allapotokat jelk epezik, az egyes t abl azatele-mekbepedigazadott allapotbanelv egzend otev ekenys eget esak ovetkez o allapototrjuk be.Figyelj uk meg, hogy az allapott abla kit olt es et soronk ent v egezz uk, hiszen a kom-munik aci os diagramr ol az olvashat o le, hogy az objektum egy adott allapotb ol milyenk ovetkez o allapotba jut a k ul onb oz o uzenetek hat as ara. Aszakasz kommunik aci os diag-ramj anak vizsg alata sor an h arom allapotot k ul onb oztethet unk meg: nyugalmi (IDLE) allapotot, amikor nem rajzolunk, a kezd opont kijel ol es et szimboliz al o kezd o (START) allapotot, es a vonalat gumik ent h uzogat o gumi (RUBBER) allapotot. Az allapotoktev ekenys eg enek ler asa sor an a Set start es Set end a szakasz kezd o es v egpont-j anak be allt as at, a DrawRubber f uggv eny a szakasz XOR m odban t ort en o felrajzol a-44 2. Grakus szoftver alrendszerek fel ept ese2.4. abra. A szakasz allapott abl ajas at, aDeleteRubber f uggv eny egy m asodszori XOR tpus u felrajzol assal a szakaszlet orl es et, a Draw pedig a SET tpus u felrajzol as at jelenti.Az allapott abl ak felv etele ut an a rendszer specik al asa befejez od ott, a k ovetkez of azis a rendszer tervez ese. A tervez es sor an gyelembe kell venni a konkr et implemen-t aci os k ornyezet lehet os egeit, es az absztrakt esem enyeket es funkci okat a rendelkez esre all o elemekre kell lek epezni.A kialaktott k onyvt arunk a k ovetkez o zikai esem enyeket kezeli: karakter bevitel,eg ergomb lenyom as, eg er mozgat as, eg ergomb elenged es. K ezenfekv o a logikai ese-m enyek es a zikai esem enyek k ovetkez o osszerendel ese: az eg ergomb lenyom asa aszakasz kezd opontj at jel oli ki, az eg er mozgat as a gumivonal mozgat as esem enyt je-lenti, az eg ergomb elenged ese a v egpont kijel ol es enek felel meg, az R billenty u piros,a G billenty u z old, a B pedig k ek rajzol asi sznt allt be, a C billenty u lenyom as anakhat as ara pedig t or olj uk a k eperny ot.A logikai esem enyeknek a zikai esem enyekkel t ort en o felv alt asa ut an az allapot-t abl ak k ozvetlen ul implement aci os programokk a alakthat ok. Mivel az esem enyvez ereltprogramoknak az egyes zikai esem enyekre kell reag alniuk, az allapott abl akat a zikaiesem enyeknek( uzeneteknek)megfelel ooszloponk entdolgozzukfel, esaz uzenetekkezel es et a lehets eges allapotok szerint k ul on agakban v egezz uk el. Az egyes agak-ban a k ovetkez o allapotot is be alltjuk, hogy a j ov obeli esem enyek feldolgoz asa sor aneml ekezhess unk ezen esem eny bek ovetkezt ere. Vegy uk eszre, hogy a soronk ent felrt allapott abl ak oszloponk enti kiolvas asa azt jelenti, hogy a felhaszn al o szemsz og eb ol aprogram szemsz og ere t er unk at.2.3. Program: egy egyszer u grakus k onyvt ar 45Az allapotokban v egzett tev ekenys egeket programutast asokra es a rendelkez esre all o szolg altat asokra kell visszavezetni. Ezek a szolg altat asok aWindow oszt aly nemvirtu alis tagf uggv enyei. Jelen feladatban a Set start es Set end a saj at adattagok ert ek enek megv altoztat as at, a Draw norm al rajzol ast, a DrawRubber es DeleteRub-ber funkci ok pedig XOR m od u rajzol ast jelentenek. Ezek alapj an a Line oszt aly de-nci oja a k ovetkez o://=============================================================class Line {//=============================================================enum { IDLE, START, RUBBER } state;Coord start_x, start_y, end_x, end_y;Color c;void DrawRubber( ) {pwindow -> RasterOp(XOR);Draw( );pwindow -> RasterOp(SET);}void DeleteRubber( ) { DrawRubber( ); }void Draw( ) {pwindow -> SetColor( c );pwindow -> Move( start_x, start_y );pwindow -> DrawLine( end_x, end_y );}public:Line( ) { state = IDLE; }void SetColor( Color c0 ) { c = c0; }void SetStart( Coord x, Coord y ) {start_x = x; start_y = y; state = START;}void SetEnd( Coord x, Coord y ) {switch (state) {case START: state = IDLE; break;case RUBBER: DeleteRubber( );end_x = x; end_y = y;Draw( );state = IDLE; break;}}46 2. Grakus szoftver alrendszerek fel ept esevoid MoveRubber( Coord x, Coord y ) {switch (state) {case IDLE: break;case START: end_x = x; end_y = y;DrawRubber( );state = RUBBER; break;case RUBBER: DeleteRubber( );end_x = x; end_y = y;DrawRubber( ); break;}}};Az alkalmaz as elk eszt es ehez az altal anos Window oszt alyt az elv art viselked esnekmegfelel oen specializ alni kell, majd a bel ep esi ponton egy ilyen tpus u objektumot kelll etrehozni. A specializ aci o a sz uks eges mez ok felv etel et es azon felhaszn al oi esem e-nyeket kezel o rutinok atr as at jelenti, amelyekre az alap ertelm u reakci o nem megfelel o://=============================================================class RubberWindow : public Window {//=============================================================Line line;void MouseLeftBtnDown( Coord x, Coord y ) { line.SetStart(x, y); }void MouseLeftBtnUp( Coord x, Coord y ) { line.SetEnd(x, y); }void MouseMove( Coord x, Coord y ) { line.MoveRubber(x, y); }void KeyboardEvent( int keyASCII ) {switch ( keyASCII ) {case R: line.SetColor( Color(1, 0, 0) ); break;case G: line.SetColor( Color(0, 1, 0) ); break;case B: line.SetColor( Color(0, 0, 1) ); break;case C: Clear( ); break;case Q: Quit( );}}public:RubberWindow( ) { line.SetColor( Color(1, 0, 0) ); }};V eg ul az alkalmaz as bel ep esi pontj an l etrehozzuk az ablakobjektumot es beindtjukaz uzenetciklus m uk od es et:void AppStart( ) {RubberWindow win;win.Execute( );}3. fejezetA geometriai modellez esA virtu alis vil ag deni al as at modellez esnek nevezz uk. A modellez es sor an megadjuka vil agban szerepl o objektumok geometri aj at, megjelent esi attrib utumait es egy eb al-kalmaz asf ugg o param etereit (p eld aul egy ellen all as nagys ag at, egy alkatr esz anyag at,stb.). A k ovetkez okben a 2D es 3D geometria deni al as aval foglalkozunk. A 2D es 3Dgrak anak azon objektumok lehetnek a r eszei, amelyek nem l ognak ki a 2 illetve a 3dimenzi ob ol. Ezek a 0 dimenzi os pontok, az 1 dimenzi os g orb ek, a 2 dimenzi os skbeliter uletek es t erbeli fel uletek, valamint a 3 dimenzi os testek. A m ern oki megjelent es-benban (scientic visualisation) magasabb dimenzi oj u adatok is el ofordulhatnak, ezeketa megjelent es el ott vetteni kell a 2 vagy 3 dimenzi os t erbe. A dimenzi o fogalm anakmegfelel o altal anost asa eset en besz elhet unk nem eg esz dimenzi os objektumokr ol, un.frakt alokr ol is. A frakt alokat k ul on fejezetben t argyaljuk.3.1. PontokEgy pont egy alkalmasan v alasztott koordin atarendszerben a koordin at ak megad as avaldeni alhat o.3.2. G orb ekG orb en folytonos vonalat ert unk. Matematikai szempontb ol a g orbe pontok halmaza.Ez a halmaz skal ar egyenletekkel vagy vektor egyenlettel deni alhat o, amelyeket a g or-be pontjai el egtenek ki. Egy 2D g orb et megad o egyenletet felrhatunk explicit m odon:x = x(t), y = y(t), t [0, 1], (3.1)vagy implicit form aban is:f(x, y) = 0. (3.2)4748 3. A geometriai modellez esP eld aul egy (x0, y0) k oz eppont u, R sugar u k or explicit egyenlete:x = x0 +Rcos 2t, y = y0 +Rsin 2t, t [0, 1], (3.3)illetve implicit egyenlete:(x x0)2+ (y y0)2R2= 0. (3.4)Az explicit forma akkor el ony os, ha pontokat kell gener alnunk a g orb en. Ekkor a [0, 1]intervallumonkijel ol unkmegfelel osz am utiparam eterpontot, esbehelyettestj ukazegyenletbe. Az implicit forma viszont k ul on osen alkalmas arra, hogy eld onts uk, hogyegy adott pont illeszkedik-e a g orb ere. Ehhez az adott pontot be kell helyettesten unk azegyenletbe es ellen orizni, hogy 0-t kapunk-e eredm eny ul. A sz amt og epes grak abanels osorban az els o funkci ora van sz uks eg, ez ert altal aban explicit egyenleteket haszn a-lunk.A 3D g orb eket explicit form aban adhatjuk meg:x = x(t), y = y(t), z = z(t), t [0, 1]. (3.5)P eld aul egy (x1, y1, z1)-t ol (x2, y2, z2)-ig tart o 3D szakasz egyenlete:x = x1 t+x2 (1t), y = y1 t+y2 (1t), z = z1 t+z2 (1t), t [0, 1].(3.6)Azexplicitvagyimplicitegyenletekimplement al as avalagrakaiprogramunkatfelk eszthetj uk klasszikus g orbeszegmensek (k or, szakasz, ellipszis, stb.) kezel es ere. Amodellez es ekkor az egyenletek ismeretlen param etereinek (p eld aul egy k or k oz eppont-ja es sugara) megad as at jelenti.3.3. Szabadform aj u g orb ekA modellez esi ig enyek altal aban nem el egthet ok ki csup an klasszikus g orbeszegmen-sekkel. Felvet odhet ugyan, hogy b armely g orbe kell o pontoss aggal k ozelthet o p eld aulsok kis szakasszal, de ez nem minden utt differenci alhat o g orb eket eredm enyez, ami p el-d aul mechanikai alkatr eszekn el megengedhetetlen. Ez ert egy olyan f uggv enyoszt alyravan sz uks eg, amelyben a g orbe alakja a differenci alhat os ag garant al as aval tetsz olegesenkialakthat o.Egy k ezenfekv o f uggv enyoszt aly a polinomok oszt alya,x(t) =n

i=0ai ti, y(t) =n

i=0bi ti, t [0, 1], (3.7)3.3. Szabadform aj u g orb ek 49amelyben egy g orb et az ai, bi polinomegy utthat ok megad as aval specik alhatunk. Vek-toros alakban:r(t) =n

i=0[ai, bi]ti, t [0, 1]. (3.8)Sajnos a polinomegy utthat oknak nincs szeml eletes tartalma, ez ert a modellez es so-r an haszn alatuk k enyelmetlen. Az egy utthat ok k ozvetlen megad asa helyett azt az elj a-r ast k ovethetj uk, hogy a felhaszn al ot ol csak un. vez erl opontokat (control point) k er unk,amelyek meghat arozz ak a g orbe alakj at. Egy pont k onnyen kijel olhet o interaktv m od-szerekkel,p eld aul az eg er segts eg evel. Majd a modellez oprogramra bzzuk,hogy amegadott vez erl opont sorozatra egy g orb et illesszen, azaz kisz amolja a megfelel o poli-nomegy utthat okat.Alapvet oen k et illeszt esi strat egia l etezik. Amennyiben megk ovetelj uk, hogy a g or-be atmenjen a vez erl opontokon, az elj ar ast interpol aci onak nevezz uk. Az approxim a-ci os m odszerek ezzel szemben nem garant alj ak, hogy a sz amtott g orbe telibe tal alja avez erl opontokat, csak annyit, hogy nagyj ab ol k oveti az altaluk kijel olt ir anyvonalat. Azengedm eny ert cser ebe sz amos j o tulajdons agot v arhatunk a g orb et ol.3.3.1. Lagrange-interpol aci oTegy uk fel, hogy a megadott vez erl opont sorozat r1, r2, . . . rn. Keress uk azt a minim a-lis foksz am u L(t) polinomot, amely t1-n el r1, t2-n el r2, stb. tn-n el rn ert eket vesz fel.Figyelembe v eve a felt etelek sz am at, a megfelel o polinom n 1-d fok u, az ismeretlen[ai, bi] egy utthat okat pedig megkaphatjuk, ha minden j (j = 1, 2 . . . , n) vez erl opontrafelrjuk ar(tj) = [x(tj), y(tj)] =n1

i=0[ai, bi]tij = rjegyenletet es megoldjuk [ai, bi]-re a keletkez o egyenletrendszert. Ennek az egyenlet-rendszernek mindig van megold asa, hiszen az egyenletrendszerb ol keletkez o Vander-monde-determin ans nem lehet z erus.Van azonban egy egyszer ubb elj ar as is, ugyanis kap asb ol fel tudjuk rni a megold ast:r(t) =n

i=1Li(t)ri, ahol Li(t) =

j =i(t tj)

j=i(titj). (3.9)Az Li(t) l enyeg eben az i. pont s uly at hat arozza meg a param eter f uggv eny eben, ez erts ulyf uggv enynek (blending function) nevezz uk. A 3.1. abra s ulyf uggv enyei t1=0,t2=0.33, t3=0.67 est4=1 param eterekkel k esz ultek. Figyelj uk meg, hogy at=ti ert ekre egyetlen s ulyf uggv eny vesz fel 1 ert eket, az osszes t obbi pedig z erus,50 3. A geometriai modellez es00.20.40.60.810 0.2 0.4 0.6 0.8 1kontroll pontokkontroll poligonLagrange-0.4-0.200.20.40.60.811.20 0.2 0.4 0.6 0.8 1tL1L2L3L43.1. abra. Lagrange-interpol aci o es s ulyf uggv enyeigy val oban r(ti) = ri. Sajnos bizonyos tartom anyokban a s ulyf uggv enyek negatv er-t ek uek, itt a vonatkoz o vez erl opont tasztja a g orb et. Ebb ol sz armazik az a t eny, hogya Lagrange-interpol aci o hajlamos az oszcill aci ora, azaz olyan kanyarulatok l etrehoz a-s ara, amely nem k ovetkezne a vez erl opont-sorozatb ol. M asik f o neh ezs eg az, hogy ag orbe k enyelmetlen ul alakthat o, hiszen a s ulyf uggv enyek a teljes tartom anyon z erust olk ul onb oz ok, azaz egy vez erl opont a g orbe minden r esz ere hat. Gondoljunk arra, hogy ag orbe m ar majdnem minden utt j o, csak egy kicsit kellene alaktani rajta, de egy vez erl o-pont m odost asa a g orb et mindenhol megv altoztatja, teh at ott is ahol m ar nagy nehezenelegyengett uk.3.3.2. B ezier-approxim aci oHa feladjuk azt a megk ot est, hogy a g orb enek at kell mennie a vez erl opontokon, akkora vez erl opontokb ol nem k ovetkez o hull amoss ag elt untethet o. Azok a g orb ek sim ak eshull amokt ol mentesek, amelyek nem l epnek ki a vez erl opontok konvex burk ab ol (egyponthalmaz konvex burka (convex hull) az a minim alis konvex halmaz, ami a ponthal-mazt tartalmazza). Konvex burokkal p eld aul az aj and ekok becsomagol asa sor an tal al-kozhatunk, hiszen a sz epen kifesztett csomagol opapr eppen a t argyak konvex burk arasimul r a). A konvex burokban marad as felt etele az, hogy a s ulyf uggv enyek ne legyeneknegatvak es osszeg uk mindenhol 1 legyen. Ekkor egy adott param eterre a g orbe pont-j at egy olyan mechanikai rendszer s ulypontjak ent is elk epzelhetj uk, amelyben az egyesreferenciapontokba a s ulyf uggv enyek pillanatnyi ert ek evel megegyez o s ulyt helyez unkel. Nyilv anval o, hogy pozitv s ulyokn al a s ulypont nem ker ulhet a rendszer konvexburk an kv ulre.3.3. Szabadform aj u g orb ek 51Egy fontos s ulyf uggv enyk eszlethez juthatunk a (t +(1 t))mbinomi alis t etel sze-rinti kifejt es evel. A kifejt es egyes tagjait Bernstein-polinomoknak nevez unk:(t + (1 t))m=m

i=0_mi_ti (1 t)mi. (3.10)B(m)i(t) =_mi_ti (1 t)mi. (3.11)00.20.40.60.810 0.2 0.4 0.6 0.8 1kontroll pontokkontroll poligonBezier00.20.40.60.810 0.2 0.4 0.6 0.8 1tb0b1b2b33.2. abra. B ezier-approxim aci o es s ulyf uggv enyeiAdenci ob olr ogt onad odik, hogy mi=0B(m)i(t) =1, eshat [0, 1], akkorB(m)i(t) 0, teh at a g orbe kiel egti a konvex burok tulajdons