Középiskolai Matematikai és Fizikai Lapok
Informatika rovattal
Kiadja a MATFUND Alapítvány
Már regisztráltál?
Új vendég vagy?

Az I. 243. feladat (2010. május)

I. 243. Az optikai csalódások a látási folyamat részeinek tévedéseiből jönnek létre, amikor az agy olyan jeleket kap a látóidegektől, amelyek számára ellentmondóak. Egyik példája a Münsterberg által leírt jelenség. A párhuzamos fekete-fehér négyzetek alsó és felső élei egymáshoz képest elhajlani és a szélek felé összetartani látszanak.

Készítsünk programot, amely elkészíti paraméterek beolvasása után az ábrát egy SVG típusú vektorgrafikus képállományba. A legtöbb internetböngésző az SVG állományt képes megfelelően megjeleníteni. Az SVG állomány szerkezetéről a http://svg.elte.hu/ címen olvashatunk.

A program kérje be a következő paramétereket:

[--] \(\displaystyle N\)-et, az ábrán a vízszintes és függőleges fekete négyzetek számát (\(\displaystyle 3\le N\le 50)\);

[--] OLDAL-t, az elemi négyzetek oldalhosszát (\(\displaystyle 5\le \mbox{OLDAL} \le 50)\);

[--] VV-t, a vízszintes elválasztó vonalak vastagságát (\(\displaystyle 0\le \mbox{VV}\le \mbox{OLDAL}\)) és

[--] FAJLNEV-et, a képállomány nevét.

Példa bemenet az ábrához
\(\displaystyle N = 8\)
\(\displaystyle \mbox{OLDAL} = 30\)
\(\displaystyle \mbox{VV} = 2\)
\(\displaystyle \mbox{FAJLNEV} = \mbox{'optika.svg'}\)

Megfigyelhető, hogy az illúzió akkor erősebb, ha a négyzetek árnyalata erősen eltérő és a köztük lévő elválasztó csík színe pedig a két négyzet színe közé esik.

Beküldendő egy tömörített i243.zip állományban a program forráskódja (i243.pas, i243.cpp, ...), valamint a program rövid dokumentációja (i243.txt, i243.pdf, ...), amely tartalmazza a megoldás rövid leírását, és megadja, hogy a forrásállomány melyik fejlesztő környezetben fordítható.

(10 pont)

A beküldési határidő 2010. június 10-én LEJÁRT.


Megoldásokról

A feladat az SVG állomány szerkezetének megismerését igényelte, programozási szempontból egyszerű volt. Szükséges SVG elemek (stílusok, vonalak húzása, négyzetek rajzolása…), megtalálhatók voltak a megadott linken.

Mintamegoldás Horváth Lóránd (Budapest, Németh László Gimnázium) 12. osztályos tanuló megoldását közöljük:

Első lépésként bekérem a szükséges paramétereket a felhasználótól (n, oldal, vv, fajlnev) és létrehozom a kívánt .svg fájlt. Ebbe először az svg fejlécet írom bele:

A hossz és a magassag adatokat a bekért adatok alapján számítom ki:

A kép hossza: n*oldal*2 mivel n darab fekete és fehér négyzet van a képen vízszintesen.

A kép magassága: n*(oldal+vv) mert függőlegesen n darab négyzet és elválasztóvonal követi egymást.

Ha megnézzük a készíteni kívánt kép felépítését látjuk, hogy minden sor több egyforma elemre bontható. Az első sor például egy fekete és egy fehér négyzetre, ami a sor többi részén n-szer ismétlődik. Második sor hasonló logika alapján bontható szét (+ sorok között szürke vonal):

Ezt a két elemet készítettem el, csoportba foglaltam ezeket a <g> ill. </g> tagek segítségével és elnevezem őket resz1 és resz2-nek. A teljes kép legenerálása ezen részek felhasználásával történik a <usexlink:href="#resz1" tag segítségével. 2 egymásba ágyazott for ciklus-t használok. Ha a külső for ciklusváltozója páratlan, akkor az első fajta elemet ismételgetem, ha páros, akkor a második fajta elemet ismételgetem – így kialakítva a különböző sorokat.

Az utolsó lépésben egy kis szürke keretet rajzolok a kép köré (ahogy a mintán is látszik) és lezárom az svg fájlt.

i243.pas


Statisztika:

5 dolgozat érkezett.
10 pontot kapott:Balla Attila, Barta 111 János, Horváth 135 Loránd, Szabó 928 Attila.
9 pontot kapott:Pap 999 Dávid.

A KöMaL 2010. májusi informatika feladatai