Feladat: I.223 Korcsoport: - Nehézségi fok: -
Füzet: 2009/november, 486 - 487. oldal  PDF file
Témakör(ök): Feladat

A szöveg csak Firefox böngészőben jelenik meg helyesen. Használja a fenti PDF file-ra mutató link-et a letöltésre.

Készítsünk szimulációs programot, amely síkbeli színes buborékok életét szemlélteti. A szimulációban látható buborékok egyszínű körlapok, amelyek egy 800×600-as képben mozognak, illetve egymásba alakulnak. A buborékok helyzete és sebessége egy-egy valós számpárral, sugara egy valós számmal, színe RGB kódolással bájt méretű számhármassal adható meg. A buborékokhoz tömeget is rendelünk, melynek nagysága a buborék sugarának négyzetével egyenlő, azaz annak képzeletbeli területével arányos. A buborékok a képben a sebességük alapján minden szimulációs lépésben elmozdulnak. Amennyiben a kép határain kívülre kerülnek, úgy az ellentétes oldalon azonos sebességgel folytatják útjukat, most már a kép belseje felé. Amikor két buborék először egymásba ér, akkor összeolvadnak, és kettőjük helyett egy új buborék keletkezik, amelynek

tömege a két találkozó buborék tömegének összege, azaz r12+r22;
középpontja a két buborék középpontjának súlyozott közepe, azaz koordinátái:
(r12x1+r22x2r12+r22;r12y1+r22y2r12+r22);
sebességének koordinátái az impulzus-megmaradás alapján hasonló módon
(r12vx1+r22vx2r12+r22;r12vy1+r22vy2r12+r22);
míg színének R, G és B összetevői szintén az egyes színösszetevők tömegükkel súlyozott közepével számítandók ki.

Amennyiben egy új buborék olyan méretű, hogy egy másik buborékba ér, úgy azzal szintén összeolvad az előző szabályok szerint.
A szimuláció kezdetén meglévő buborékok adatait a program a parancssor első argumentumaként megnevezett szöveges állományból olvassa, melynek minden egyes sora egy-egy buborék leírása szóközzel elválasztott megfelelő értékekkel a következő sorrendben: helyx helyy sebességx sebességy sugár vörös zöld kék.
Például:
 
 

Beküldendő a feladat megoldását tartalmazó forrás és projektállományok (az i223.exe és más, a fordító által generált kiegészítő állományok nélkül) egy tömörített mappában (i223.zip).