JAMPAPER 1./V./2010
Parlamenti ül!helyek vizuális ábrázolása Az általános elvárások, alapfogalmak és problémák elméleti áttekintése a grafikai programozás szemszögéb!l. Nagy Keve Kivonat: Virtuális parlamentek megjelenítésével foglalkozó kutatás során hamar szembesülhetünk azzal, hogy a néz!terek ábrázolásával, elrendezésével, illetve azok szempontjaival, kihívásaival és megoldásaival kapcsolatosan mennyire nehéz a grafikai programozást segít!, jól használható és nyílvános forrásanyagot találni. Ez a tanulmány a témában összegy"jtött és rendszerezett jegyzeteket kínálja fel azon fejleszt!knek, akik hasonló területen próbálkoznak multimédiás ábrázolással vagy grafikai programozással. Az összefoglaló el!ször bemutatja az ülésterek sematikus modellezésekor általánosságban alkalmazott matematikai és informatikai környezetet, illetve a projekt fokozatos felépítésére használható alapvet! épít!kockákat. Ezután valós parlamenti példákon keresztül sorba veszi a különböz! bels! elrendezési formákat és ismerteti az ott jelentkez! szempontokat, buktatókat és nehézségeket, valamint az összesre egyaránt vonatkozó szükséges vagy elégséges ábrázolási feltételeket. Végül az általánosság és képzeletbeli környezetek fel!l a valóságh"bb megjelenítések irányába fordulva arra is kitér, hogy mire kell ügyelnünk amikor az üres székelrendezés kirajzolásán túl a teremben valamilyen szempont szerint összetartozó székcsoportokat is jelölni kívánunk.
Kulcsszavak: ül!hely, néz!tér, ábrázolás, elrendezés, grafikai programozás, parlament Bevezetés
Az elektronikus kormányzati portálok és elektronikus önkormányzatok idejét éljük [8, 9]. Az adatfeldolgozás gyorsaságának, pontosságának és költségének alakulása is azt indokolja, hogy a lehet! legtöbb "rlap kitöltése és az adatok nyilvántartása elektronikus úton történjen. Fokozatosan egyre több helyen kell valamilyen számítógépes állomány formájában benyújtani a terveket, dokumentumokat, kérelmeket és ugyanígy elektronikus levél vagy telefonos üzenet formájában kapunk ezekr!l visszajelzést. Egy épület terveit vagy az önkormányzat új rendezési tervét is megtekinthetjük egy portálon keresztül vagy letölthetjük videóanimáció vagy tervrajz formájában. A számítógépes ábrázolás tehát elengedhetetlen részévé vált a mindennapjainknak. Az elektronikus adatkezelési és megjelenítési szolgáltatásokkal kapcsolatban naponta újabb igények születnek, azok kielégítésére pedig folyamatosan új szoftvermegoldásokat kell készíteni. Az ilyen programok készít!inek meg kell ismerni az adott célterületre jellemz! matematikai és programozási sajátságokat, ezek viszont soha nincsenek úgy összegy"jtve és ledokumentálva, mint például a kiválasztott programozási nyelv vagy a fejleszt!i környezet. Így szembesültem én is a parlamenti üléstermek grafikus megjelenítésének alap problémáival, amikor a választások idején (vagy azok szimulálásakor) használható virtuális parlamentet megalkotó szoftvermegoldással kapcsolatos kutatásokkal kezdtem el foglalkozni. Érint!legesen ugyan találtam a témámmal kapcsolatos kutatási jegyzeteket, de konkrétan a székek optimális elhelyezésével és a grafikai ábrázolással kapcsolatos alap problémák összefoglalására, illetve azok ismertetésére nem sikerült rábukkannom. A forrásanyag hiány részben lehet amiatt, hogy maga a feladat túlságosan határozott területnek számít, de minden bizonnyal annak is köszönhet!, hogy más ilyen jelleg" megoldások készít!i ezzel kapcsolatosan inkább csak rögtönzött jegyzeteket és vázlatokat készítettek, jelent!sebb id!t és energiát nem fektettek ennek el!készületi részébe vagy nem igazán dokumentálták ezt a részt, illetve például szerz!déses okok miatt nem tették nyilvánosan elérhet!vé az ezt tartalmazó dokumentumokat. Az ül!helyek megjelenítése és valamilyen feltétel szerinti csoportosítása nem csak parlamentális környezetben lehet hasznos, hanem például konferenciatermek, rendezvényközpontok, színházak vagy sportarénák lelátóinak sematikus modellezése kapcsán is1 . Összefoglalóm azoknak kíván bevezet!ül szolgálni, akik ilyen területen próbálnak elméleti vagy konkrét programozási problémákat megérteni, illetve megoldani. 1
Természetesen ilyen területen is keresgéltem forrás után.
14
JAMPAPER 1./V./2010 Elemi egységek, objektumok, eljárások és függvények
Akár a számítógép fizikai képerny!jét, akár az operációs rendszer grafikus felületén natívan futó alkalmazásunk által megjelenített ablak belsejét, akár egy böngész!-programban futó internetes alkalmazás számára kijelölt keret területét tekintjük, ugyanúgy egymásra mer!leges tengelyek közti kétdimenziós képkoordinátákat használunk. A konkrét megvalósításhoz használható fejleszt!i környezetek között eltérés lehet a koordináta-páron belüli vízszintes és függ!leges irány sorrendjében, valamint a (0,0) kiindulási pont helyzetében, mégis minden esetben ugyanabban a síkban és ugyanazokkal a koordináta-geometriai szabályokkal dolgozunk. Az egyértelm"ség kedvéért az origó itt a megjelenítésre használt terület bal-alsó sarkában kerül rögzítésre, x a vízszintes, y pedig a függ!leges irányú elmozdulást fogja jelölni. Elemi egység az (x,y) koordináta párral meghatározott képpont vagy pixel lesz. Hosszúság, távolság vagy általában méret pixelben, szög pedig fokban kerül megadásra. Az ül!helyek ábrázolásához egy el!re elkészített, pixelekb!l felépített grafikai objektumot használhatunk fel (az ábra egy háttámlás szék alakját hivatott követni). Az objektum olyan tulajdonságokkal ruházható fel, amelyek egy része futás közben az objektum-osztály minden elemére kötelez!en azonos érték" (például méret, távolság), más része viszont elemenként eltér! lehet (például középpont pozíciója, elforgatás szöge, kitöltés színe). Az objektumot kezel! alapvet! eljárások a: létrehozás, pozícionálás, elforgatás, mozgatás, megjelenítés, eltüntetés és törlés. Az objektumtól 1. ábra - Szék objektum független alapvet! eljárásaink vagy függvényeink feladata pedig: két pont távolságának meghatározása, két ponton átmen! egyenesnek az x vagy y tengellyel bezárt szögének meghatározása, pont illeszkedése egyenesre, pont illeszkedése körívre. Az ülésterem modellezése, üres székek megjelenítése
Különböz! környezetekben az ülésterem építészeti alakjának, illetve azon belül a székek geometriai elhelyezésének megfelel!en az általánosságban használt alapvet! elrendezési modellek más-más eleme fog illeszkedni a feladathoz. Ennek beállítása els!sorban az egyes képvisel!i székek adott helyen történ! kirajzolásához alkalmazott geometriai és trigonometriai függvények összetettségét fogja meghatározni. Ezek tanulmányozásakor érdemes megvizsgálni, hogy mennyivel egyszer"södik a feladatunk ha a szék objektum képe helyett egy körrel is megelégszünk. Téglalap alakban elhelyezett ül!helyek
Elrendezés szempontból a legegyszer"bbnek a téglalap alak számít. Ezt a formát láthatjuk például a kanadai képvisel!-házban, vagy az angol parlament alsóházában is, ahol két azonos méret", egymással szembe fordított téglalap alakú terület egyikén a kormánypárt, másikán az ellenzék képvisel!i foglalnak helyet [1, 2]. Az els! esetben a sorok, oszlopok és székek száma alapján bármelyik ül!hely pozícionálása és annak kirajzolása egyszer" feladat. Az algoritmus bonyolultságát növel! egyetlen olyan tényez! amivel még számolnunk kell a székek közti átjárósorok helyzete lehet2. A második példához hasonló, picit összetettebb esetekben az algoritmus annyival b!vül, hogy a kirajzolt székeknek nem csak helyzete, hanem iránya is lesz. Az azonban nyilvánvalóan látható, hogy az irány csak nagyon korlátozott számú értéket vehet fel és a szék pozíciója egyetlen, roppant egyszer" lineáris függvény segítségével meghatározza annak irányát is. 2 Amennyiben
ezeket egyáltalán figyelembe kívánjuk venni.
15
2. ábra - Téglalap elrendezés
JAMPAPER 1./V./2010
3. ábra - Az angol parlament alsóháza Londonban
4. ábra - A kanadai parlament alsóháza Ottawában
16
JAMPAPER 1./V./2010 Trapéz alakban elhelyezett ül!helyek
A trapéz elrendezés néhány szempontból hasonló a téglalaphoz, s!t bizonyos esetben akár annak egy speciális változataként is kezelhetnénk. Azonban több olyan egyedi jellemz!je lehet, amelyek miatt külön kategóriát érdemel. Legjellemz!bb esetben a székek azonos irányba néznek és soronkénti számuk el!refelé haladva fokozatosan csökken, a sort mindkét oldalon egyformán rövidítve. Ha a sorok páros számú székkel rövidülnek, akkor egyben illeszkednek is egymásra és szempontjaink az egyszer"bb téglalapnál tárgyaltakkal lesznek megegyez!ek. Ellenkez! esetben a székek pozícionálása az egymást átfed! sorokban valamelyest különböz! megoldást igényel. Létezik egy összetett elrendezési forma is, ahol három trapéz van úgy összeforgatva, hogy egy a szónoki emelvénnyel szemben, kett! pedig annak jobb és bal oldalán egymással szembeforgatva helyezkedik el. Noha a hármas-trapéz parlamentekre3 nem igazán jellemz!4 , új kihívásai miatt kiváló átvezetést jelent a következ!kben tárgyalt és bonyolultabb megoldásokat igényl! elrendezési formákra. Az említésre leginkább méltó nehézséget itt az okozza, hogy az egyes székek iránya a pozícióból már nem állapítható meg egy egyszer" képlet segítségével. A három lehet!ség közül a megfelel! meghatározásához több lineáris függvény együttes alkalmazása vagy koordináta halmazok használata szükséges. Körív mentén elhelyezett ül!helyek
A leggyakoribb elrendezési forma amit parlamentekben láthatunk kétség kívül a félkör alakzat, ahol a középpontnak tekinthet! szónoki emelvény körül egyre növekv! sugárhosszúságú körívek mentén a körív hosszával arányosan növekv! számú szék van elhelyezve olyan mértékben elforgatva, hogy mindegyik pontosan a középpont felé néz. Bizonyos megvalósításoknál a körívek rövidebbek vagy akár hosszabbak is lehetnek a félkörnél. Félkör elrendezési formát használ például az Egyesült Államok 5. ábra - Trapéz elrendezések Szenátusa vagy a svájci parlament, míg a félkörnél nagyobb körívet láthatunk például az Európa Parlamentben [3, 4, 5]. Mivel a székek nem egymásra mer!leges sorokban és oszlopokban helyezkednek el, pozícionálásukra az eddig tárgyaltaktól teljesen eltér! algoritmust kell alkalmaznunk. További kihívást jelent az egyes székek irányának meghatározása, ugyanis az elforgatás mértéke itt már 0 és 360 fok között elméletileg bármilyen értéket felvehet. A két említett probléma közül az irány kiszámítása az egyszer"bb, mivel ennek algoritmusához csak néhány egyértelm"en meghatározható tényez!t kell figyelembe vennünk. A körív középpontjának és az azon elhelyezend! szék középpontjának 5 ismeretében ugyanis szögfüggvények alkalmazásával megszerkeszthet! a széken átmen! sugár, majd az arra mer!leges és a szék adott pontján átmen! egyenes, amelyre a széket (vagy székeket) elhelyezzük. Akár az x vagy y tengely 6. ábra - köríves elrendezés és a sugár által bezárt szög, akár a sugárra mer!leges és a szék (vagy székek) adott pontján átmen! egyenes ismeretében a szék már a 3
Valójában egyetlen parlamentet sem tudok erre példaként említeni. De ez nem zárja ki azt, hogy van ilyen.
4
Inkább szórakoztató központokban vagy sport arénákban lehet ezzel a kialakítással találkozni.
5
Székek esetén ez bármely el!re meghatározott pont lehet, csak az minden szék esetén ugyanaz legyen.
17
JAMPAPER 1./V./2010 megfelel! irányba forgatható. Határozottan összetettebb feladatnak számít a székek adott köríven történ! pozícionálása. Itt ugyanis nem egyértelm", hogy milyen paraméterek határozzák meg a grafikai algoritmusunkat. Egyik tipikus példánk lehet az, amikor minden egyes köríven annyi széket próbálunk elhelyezni, amennyi a körív hosszának, a szék szélességének és a székek közti minimális távolság értékének figyelembe vételével maximálisan megtehet!. Másik tipikus példánk az lehet, amikor egy meghatározott parlament valós elrendezését követve minden egyes körívhez el!re meg van határozva az azon elhelyezked! székek száma. Az ilyen szabályok alapján felvázolt algoritmus a székeket mindkét esetben egyenletesen teríti el a köríven. Ez viszont a legtöbb esetben nem ad kielégít! megoldást, ugyanis nem biztosítja annak lehet!séget, hogy bizonyos székpozíciók a köríveken azonos sugárra essenek, azaz a középpontból nézve egymásra illeszkedjenek és szabályos oszlopot alkossanak. Ennek hiányában viszont sem az átjárósorok, sem a parlamenti szekciók ábrázolása nem valósítható meg. Egy lehetséges megoldás, hogy a köríveken el!ször az átjárósorok sugara által kijelölt pozíciókba helyezünk el székeket (lefoglaljuk, zároljuk az adott székpozíciót). Ezután a szabadon maradt körív szakaszokon egyenletesen osztjuk el a kívánt vagy maximális számú széket. Majd végül felszabadítjuk, kiürítjük az átjárósorok sugarai mentén ideiglenesen lefoglalt székpozíciókat.
7. ábra - Az Európa Parlament Brüsszelben
18
JAMPAPER 1./V./2010
8. ábra - Az Amerikai Egyesült Államok Szenátusa Washingtonban
9. ábra - A svájci parlament Bernben
19
JAMPAPER 1./V./2010 Patkó alakban elhelyezett ül!helyek
A patkó vagy U alakú elrendezés a körívet kombinálja az egymással szemben álló két téglalap alakzattal úgy, hogy a félkör egy folyamatos, íves átmenetet képez a párhuzamos két oldal között. A patkó vagy U alakzatnak magyarországi vonatkozásban kiemelt jelent!sége van, mivel a budapesti Országház is ezt az alakzatot alkalmazza a parlamenti képvisel!i székek elrendezésére. Ugyanezzel a formával találkozhatunk például az ausztrál vagy egyiptomi parlamentben is [6, 7]. Habár az eddig ismertetett elrendezések közül ez tekinthet! a leginkább összetettnek, grafikai programozás tekintetében mégsem jelent semilyen új kihívást, hiszen a félkörnél és a téglalapnál már minden szükséges szempontot megvizsgáltunk. A székeket ábrázoló algoritmusunk nehézségi fokát itt a kétféle alakzat egyesítéséb!l fakadó értelemszer" méretnövekedés és bonyolultság indokolja.
10. ábra - Patkó elrendezés
11. ábra - Az ausztrál parlament Canberrában
12. ábra - A magyar parlament Budapesten 20
JAMPAPER 1./V./2010 Az elrendezés paraméterezése, az alakzat tagolása
Még mindíg csak a képvisel!k nélküli, üres parlamenti székek felvázolásának feladatánál maradva az alkalmazott elrendezés típusa mellett valamilyen formában figyelembe kell vennünk a rendelkezésre álló ül!helyek számát is. Egy képzeletbeli parlament ábrázolásához az alakzat mellé elegend! paraméter lehet csupán egyetlen számérték, amely vagy a szükséges ül!helyek számát, vagy a rendelkezésre álló székek pontos számát határozza meg. Az ábrázoláshoz szükséges minden egyéb paraméterhez a program felhasználói beavatkozás nélkül “rögtönözhet” értéket. Az el!bbi esetben az ábrázolt székek számát az algortimus a felhasználó által megadott érték fölött szabadon hozzáigazíthatja az általa megfelel!nek talált egyéb paraméterekhez (pl. sorok vagy oszlopok száma, hossza, stb). Az utóbbi esetben viszont a többi paraméter értékét kell a meghatározott ül!helyszámhoz igazítani. Ez pedig könnyen eredményezhet olyan szabályrendszert, amelyhez nem illeszthet! megfelel! megoldás. Gondoljunk csak téglalap elrendezésnél például a prím számokra! Hogyan helyezhetnénk el 307, 503 vagy 149 ül!helyet egyforma hosszú6 sorokba vagy oszlopokba csoportosítva? Ugyanakkor a sorok változó hossza miatt ugyanezekkel a székszámokkal elképzelhet! lehet köríves vagy trapéz elrendezés" megoldás. Illetve a székek számának felkerekítésével akár a téglalapba csoportosítás is elvégezhet! lenne. Létez! parlament ülésrendjének modellezése esetén azonban az algoritmusunk nem élvezhet ilyen mérv" önállóságot, a valóságh" ábrázolás érdekében törekednünk kell az ülésterem szerkezeti tagolásának követésére. Az székek összesített számának megadása önmagában már egyetlen elrendezési forma esetén sem lesz ehhez elegend!. Kötött paraméterként kell kezelnünk a sorok és/vagy oszlopok számát, vagy akár soronként a székek pontos számát. Ezen kívül gondoskodnunk kell a közleked!folyosókra vonatkozó szabályok megfogalmazásáról is, illetve ezeknek a székeket elrendez! algoritmusban történ! figyelembe vételér!l. Nyilvántartás vezetése
Az el!z! bekezdés végére már látni lehetett, hogy az egyes ül!helyek pozícióját kiszámító algoritmusunk az ülésteremre vonatkozó paraméterek függvényében csakhamar roppant összetetté válhat. A programkód processzorigényének féken tartása és a m"velet sebességének növelése érdekében törekednünk kell arra, hogy a bonyolult logikájú kódrészt a lehet! legkevesebbszer (például csak egyetlen egyszer) kelljen futtatni. Ennek megvalósításához az egyszer már megfelel!en pozícionált objektumok tulajdonságait érdemes valamilyen tömbben, listában vagy adatbázisban folyamatosan nyilvántartani. Az eltárolt objektumadatokat újra el!venni és szükség esetén módosítani gyorsabban lehet, mint egy bonyolult szabályrendszeren keresztül újra kiszámolni, hogy el!z!leg pontosan hova helyezhettünk el egy bizonyos széket. Jól lehet, ez kétségtelenül túlmutat a szigorú értelemben vett garfikai programozás problémáin és inkább az adatszerkezetek és adatbáziskezelés témakörébe való átkalandozást igényel, egy egyszer"bb megvalósítása bármely konkrét fejleszt!i környezetben viszonylag könnyen elvégezhet!7 . A székek feltöltése képvisel!kkel, a parlamenti frakciók ábrázolása
A végs! elméleti probléma amelyet a programnak meg kell oldania a képvisel!k (illet!leg sokkal inkább “képvisel! csoportok”) elhelyezése a rendelkezésre álló ül!helyeken. A képvisel!k különböz! pártokban való összetartozását legegyszer"bben a székek színezésével jelezhetjük. Minden párthoz kiválasztunk egy-egy színt. A pártokhoz nem tartozó, független képvisel!ket érdemes megegyez!, de erre a célra külön
6
Természetesen létezik egy triviális megoldás. Egyetlen sorba kell helyezni a székeket! Ez viszont valós parlamentális alkalmazás tekintetében aligha képezne használható megoldást. Ezért itt nem számolok vele. 7 Akár
még a témával csak ismerked! programozó számára is.
21
JAMPAPER 1./V./2010 kiválasztott színnel jelölni (viszont nem kell !ket egy összefügg! területen elhelyezni)8. A színkitöltés nélküli (fehér/fekete) székekkel pedig leginkább a még gazdátlan, szabad vagy tartalék ül!helyeket érdemes jelölni. A fejlesztés ezen szakaszában a kihívást mégsem maga az objektum kiszínezését végz! programkód megírása vagy közvetlenül a célnak megfelel! szín kiválasztása fogja jelenteni, hanem az egyes objektumok csoportokba sorolása, más szóval a pártpolitikailag összetartozó képvisel!k székeinek egyazon összefügg! területen való elhelyezése. Valóságos körülmények között ugyanis számos olyan faktort szükséges figyelembe venni, amelyek befolyásolják az egyes csoportok üléstermen belüli helyét. Tipikusan ilyen realisztikus faktorok például: • Az ülésterem építészeti adottságaitól és elrendezését!l függ!en mindíg akadnak olyan területek, amelyeket a képvisel!k az átlagosnál jobbnak (zöld) értékelnek, és olyanok is, amelyeket az átlagosnál rosszabbnak (piros). Például a szónoki emelvényhez közelebbi sorok, vagy az ajtók közvetlen közelébe es! székcsoportok “jó helynek” számítanak. Szomszédos, de egymástól távol es! átjárósorok közötti méretes széktömb bels!, elzárt területei viszont nem népszer"ek. Ahogyan a közvetlenül falak mellé es! sarkok vagy székoszlopok sem kedveltek. Bizonyos területeknek politikai státuszszimbóluma is lehet, tehát kiemelt jelent!sége lesz annak, hogy melyik párt tagjai ülhetnek ott, vagy hogy az egyes pártoknak hány-hány tagja juthat székhez azon a területen.
13. ábra - Magas és alacsony érték!, illetve semleges helyek • A különböz! pártok egymáshoz viszonyított helyzete is mérvadó lehet. Az egymás “létezését” generációk óta nem kedvel! csoportokat, vagy az egymással szembeni radikális hevességér!l híres pártokat érdemes átjárósorokkal vagy semleges képvisel!csoportokkal elhatárolni egymástól, esetleg tudatosan a terem két átellenes felére csoportosítani. Minél több féle szempontot kívánunk figyelembe venni, annál összetettebb lesz az algoritmusunk. A legegyszer"bb esetben minden életszer" használatból származtatott faktort figyelmen kívül hagyunk és kizárólag a matematikai tényez!kkel dolgozunk. A legszükségesebb matematikai tényez!k:
8
Lásd az erre vonatkozó bekezdést kés!bb, a fejezet végén.
22
JAMPAPER 1./V./2010 • Az egyes parlamenti pártok képvisel!inek pontos száma, illetve a párthoz nem tartozó független képvisel!k száma. Ez fogja meghatározni, hogy a különböz! színek mekkora összefügg! területeket foglalnak le az üléstermen belül. • A székek feltöltési sorrendje, azaz feltöltéskor honnan indulva és milyen útvonalon haladva lépegetünk végig a székpozíciókon. Ez a különböz! színek közti átmenet karakterisztikáját, a színes területek alakját fogja meghatározni. Bármilyen logikát választunk a csoportok tagjainak ugyanazon összefügg! területen történ! elhelyezésére, a végleges összkép kialakításában nagy segítségünkre lehet a független képvisel!k rugalmas kezelésének beépítése az algoritmusba. #k ugyanis egy olyan csoportba tartoznak, amelyet nem szükséges összefügg! területként ábrázolni, azaz tagjait bármilyen elosztásban szét lehet szórni az ülésteremben. Ez a tulajdonságuk lehet!vé teszi, hogy megkezdett sorokat egészítsünk ki velük, hézagokat töltsünk fel vagy egy adott határterületre éppen az adott számban ültessük be !ket.
14. ábra - Alul balról jobbra kígyózó sorfolytonos feltöltés
15. ábra - Jobb oldalon lentr"l felfelé kígyózó oszlopfolytonos feltöltés
23
JAMPAPER 1./V./2010
16. ábra - Független képvisel"kkel egész oszlopokra kiegészített, jobb oldalon lentr"l felfelé kígyózó oszlopfolytonos feltöltés
Mintaképek optimalizált, összetett logikájú megoldásokra
Az alábbiakban két példát láthatunk olyan megoldásokra, amilyenekhez az el!z! fejezetekben ismertetett összetett szempontok figyelembevételével és alkalmazásával juthatunk. Mindkét esetben az volt a cél, hogy a parlamenti pártok meghatározott számú képvisel!ihez a székek fizikai elrendezését és az átjárósorok által kialakított széktömbök alakját, méretét figyelembe véve úgy osszuk ki a székeket, hogy az egyes pártok egyetlen saját összefügg! blokkjukba kerüljenek. A logikát bonyolító tényez! volt annak elkerülése, hogy az elrendezés szempontjából fizikailag elkülönül! székcsoportok közti átmeneteknél mindössze egy-két képvisel! csússzon át a következ! szekcióba és ott egy másik párt képvisel!inek tömegében kelljen ülnie. Az els! példánál jól észrevehet!, ahogyan a trapéz elrendezés adta lehet!ségek között az egyes pártok képvisel!i létszámuk arányában igazságosan jutottak az elöl lév! értékesebb helyekhez. A legkisebb párt
17. ábra - Hárompárti parlament optimalizált trapéz elrendezése arányaiban kicsit több el!l lév! széket kapott, de a terem szélén. A leger!sebb párt a terem középs!, legértékesebb székeit kapta. Figyeljük meg a terem bal szélét elfoglaló zöld-szín" párt egy kisebb, de nem jelentéktelen csoportja hogyan illeszkedik be a legnagyobb párt uralta középen elhelyezked! széktömbbe! A második példa esetén egy félkör alakú elrendezésben, más képvisel!i létszám mellett láthatjuk az el!bbihez meglehet!sen hasonló eredményeket.
24
JAMPAPER 1./V./2010
18. ábra - Hárompárti parlament optimalizált félkör elrendezése
Összefoglalás
Néz!terek sematikus ábrázolását végz! programok készítésekor meglehet!sen sok olyan tényez!re kell figyelni, amelyek alapvet!en befolyásolják az ül!helyek pozícióját meghatározó algoritmusunkat. Az algoritmus9 bonyolultságát az határozza meg, hogy hány tényez!t kívánunk figyelembe venni és az eredménynek mennyire kell egy valóságos helyzethez illeszkednie. Megoldásunk logikájának f!bb paramétereit az elrendezési alakzat, az alakzatot felosztó átjárósorok száma és helyzete, az ül!helyek száma (illetve azok soronkénti, oszloponkénti vagy körívénkénti száma) fogják alkotni. Opcionális paramétereknek és az algoritmus összetettségét radikálisan növel! faktoroknak tekinthetjük az egyes székpozíciók értékességét, a szék objektum alakját és kifinomultságát, valamint az összefügg! székcsoportok egymáshoz való viszonyát. Érdemes megvizsgálni, hogy milyen algoritmikus különbséget jelent a 6. ábra és a 19. ábra mintájára készített egy-egy megvalósítás. Mindezek mellett nem árt 19. ábra - Egyszer! objektumok figyelembe venni azt is, hogy a m"ködési környezet mekkora er!forrásokkal gazdálkodhat, ugyanis egy webböngész! kijelölt keretén belül m"köd! programkód már kisebb komplikációk esetén is észrevehet! lassulást okozhat, míg egy grafikus kártyát közvetlenül vezérl! alkalmazás elképeszt!en összetett algoritmus esetén is villámgyors eredményt képes biztosítani. Megfelel! el!retervezéssel, átgondolt és jól felépített elképzeléssel, a kód lépésr!l-lépésre való réteges felépítés" bonyolításával, az igényekhez leginkább megfelel! fejleszt!i környezet kiválasztásával és a feltétlenül nem szükséges faktorok figyelmen kívül hagyásával számos buktató elkerülhet!.
9
Ábrázolással kapcsolatos matematikai képletek és programkód példák tekintetében a Programming Challenges cím" könyv 13. és 14. fejezetét ajánlom. [10]
25
JAMPAPER 1./V./2010 Irodalom
[1] [2] [3] [4] [5] [6] [7] [8] [9] [10]
Az angol parlament alsóháza Londonban, 16. oldal. (britparl.jpg) http://www.editorsweblog.org/parliament_000.jpg A kanadai parlament alsóháza Ottawában, 16. oldal. (canparl.jpg) http://www2.parl.gc.ca/sites/lop/aboutparliament/guidehousecommons/images/HOC_session_e.jpg Az Európa Parlament Brüsszelben, 18. oldal. (europarl.jpg) http://farm4.static.flickr.com/3159/2331899782_0aaf175045.jpg Az Amerikai Egyesült Államok Szenátusa, 19. oldal. (ussenat.jpg) http://www.politicalinformation.net/encyclopedia/Senate_in_session.jpg A svájci parlament Bernben, 19. oldal. (swissparl.jpg) http://genevalunch.com/files/2009/03/swiss-parliament.jpg Az ausztrál parlament Canberrában, 20. oldal. (auparl.jpg) http://www.peo.gov.au/images/library/0342.jpg A magyar parlament Budapesten, 20. oldal. (hunparl.jpg) http://www.estihirlap.hu/cikkepek/Politika/ulesterem.jpg Alfred Tat-Kei Ho - Reinventing Local Governments and the E-Government Initiative Public Administration Review, Vol. 62, No. 4 (Jul. - Aug., 2002), pp. 434-444 Blackwell Publishing (on behalf of the American Society for Public Administration) Bekkers, V. (2003) - E-government and the emergence of virtual organizations in the public sector. Information Polity: The International Journal of Government & Democracy in the information Age, 8(3/4), 89-101. ISSN 1570-1255 Steven S. Skiena, Miguel Revilla - Programming Challenges Springer (2003) ISBN-10: 0387001638, ISBN-13: 978-0387001630
Ábrajegyzék
1. ábra - szék objektum ................................................................................................................................ 15 2. ábra - téglalap elrendezés ......................................................................................................................... 15 3. ábra - az angol parlament alsóháza Londonban ....................................................................................... 16 4. ábra - a kanadai parlament alsóháza Ottawában ...................................................................................... 16 5. ábra - trapéz elrendezések ........................................................................................................................ 17 6. ábra - köríves elrendezés .......................................................................................................................... 17 7. ábra - az Európa Parlament Brüsszelben .................................................................................................. 18 8. ábra - az Amerikai Egyesült Államok Szenátusa Washingtonban ........................................................... 19 9. ábra - a svájci parlament Bernben ............................................................................................................ 19 10. ábra - patkó elrendezés ........................................................................................................................... 20 11. ábra - az ausztrál parlament Canberrában .............................................................................................. 20 12. ábra - a magyar parlament Budapesten .................................................................................................. 20 13. ábra - magas és alacsony érték", illetve semleges helyek ...................................................................... 22 14. ábra - alul balról jobbra kígyózó sorfolytonos feltöltés ......................................................................... 23 15. ábra - jobb oldalon lentr!l felfelé kígyózó oszlopfolytonos feltöltés .................................................... 23 16. ábra - független képvisel!kkel egész oszlopokra kiegészített, jobb oldalon lentr!l felfelé kígyózó oszlopfolytonos feltöltés ................................................................................................................... 24 17. ábra - hárompárti parlament optimalizált trapéz elrendezése ................................................................ 24 18. ábra - hárompárti parlament optimalizált félkör elrendezése ................................................................ 25 19. ábra - egyszer" objektumok ................................................................................................................... 25
26