Siva
Particle System
Felhasználóknak
Bal egér kattintással füstöt rajzolhatunk. A jobb egér gombot nyomva tartva pedig mozgathatjuk a kísérletben pattogó halvány színes labdákat. Később egy napocskára hasonlító karaktert is irányíthatunk a nyíl billentyűkkel.
Fejlesztőknek
A rendszer olyan magas szintű függvényeket biztosít, melyekkel könnyedén hozhatunk létre mozgó részecske rendszereket (animációkat).
Részecske rendszer
Adott egy kezdő- és egy végállapot. Továbbá a lájátszás sebessége, típusa (pl lineáris), részecske alakja. A program ezekből a paraméterekből hozza létre az animációt. Illetve számolja a részecskék aktuális állapotát.
Kilöködő (emitter)
Létrehozhatunk részecske rendszer csoportokat különböző paraméterekkel.
Kép alapú kirajzolás
Adott egy képfájl, amit a program képpontonként dolgoz fel, majd ez alapján hoz létre tetszőleges típusú és sűrűségű részecske rendszereket.
Függvények rendre
void addParticle(Emitter e)
Hozzá ad 1 darab részecskét a kilöködés paramétereivel.
void addEmitter(Emitter e)
Kilöködő objektum létrehozása a paramétereivel:
Emitter newEmitter(char *name, int preDuration, int reStart, char *type
, int db, double x, double y, int rotation, int alpha
, int startR, int rMin, int rMax
)
típusok (char *type):
"bouble"
, "smoke"
, "water"
, "ball"
, "wind"
, "siva"
, "sun"
Az ujjászületés mélysége (int reStart) szintenként eggyel csökken.
void addEmitterGroup(char *img, double scaleX, double scaleY, double density, Emitter e)
A beolvasott kép fekete képpontjaihoz tetszőleges sürűséggel ad hozzá kilőködőket.
Egyéb
A program duplán láncolt listát használ. Az egyes részecskéket név alapján külön tudjuk kezelni.
Tesztelés
A szaporodásra képes részecskéknek köszönhetően könnyedén felhasználhatjuk az összes memóriát. Ez a program kifagyásához vezet az általam használt rendszeren (Windows 7). Ilyenkor a másodpercekre eső képmegjelenítések száma is jelentősen lecsökken.
Érdekes látványt kaphatunk, ha a törlő szín átlátszóságát át állítjuk. Ugyanis ilyenkor a mozgó részecskék lenyomatot hagynak maguk után.
Bizonyos körülmények között a program nem tudja lekezelni a bemeneteket, mert csak a kirajzoltatásra jut az erőforrásokból. Ezt megpróbáltam kiküszöbölni, például azzal hogy a másodpercekre eső képmegjelenítések számát magam számolom ki.
Kapcsolatfelvétel