Particle Systems—A Technique for Modeling a Class of Fuzzy Objects
Začalo sa to v '80 rokoch. Vtedy bol definovaný pojem "particle system"
“A particle system is a collection of many many minute particles that together represent a fuzzy object. Over a period of time, particles are generated into a system, move and change from within the system, and die from the system.”
Od vtedy sa s ním stretávame všade tam, kde sa nám hodí simulácia vody, ohňa, dymu a podobne...
Od filmov až po default vizualizér v iTunes (mimochodom, pôvodne napísaný prave v processingu)
Na vystavanie vlastného "particle" systému nám tentokrát bude stačiť takmer úplne kód z predchádzajúcich lekcií. Tentokrát získané znalosti ideme zúročiť.
Jedna častica
Začnime so sytémom obsahujúcim "jednu časticu".
Tentokrát začnime s prázdnym sketchom. A pridajme doň poslednú verziu triedy Mover. Avšak odteraz ju premenujeme na Particle
Všetky potrebné dáta a metódy tam už máme!
position
velocity
acceleration
display()
update()
A poďme jeden particle zobraziť + aplikovať gravitačnú silu:
Fajn. Zobrazí sa jeden bod. A padne dole.
Pre zjednodušenie tentokrát priamo v konštruktore v triede Particle nastavme náhodnú velocity.
Ok... vyletí hore a potom dole.
Čaro particle systému tkvie práve v tom, že tu nastáva "flow of particles". Stále pribúdajú nové.
Avšak aby to by mohlo spôsobiť, že časom sa pamäť zaplní a/alebo výpočet počítať prestane zvládať.
Kľúčovou novou vlastnosťou je zavedenie "životnosti" objektu.
lifespan atribút vie byť použitý podobne, ako "primerny vek dožitia". môže byť rovnaký alebo rôzny. a je dobré ho aj vizuálne aplikovať (typicky "alpha" alebo inak)
Keď sa lifespan minie, dané miesto môžeme v pamäti uvoľniť.
Poďme si to teraz aplikovať na náš príklad s jednou časticou.
Jedna zo skvelých možností, ktoré nám triedy umožňujú, je práve dedičnosť.
Je to v niečom podobné, ako napr. pri klasifikácií vtáctva:
Kačice
Dravce
Spevavce
Majú rovnaké atribúty:
zobák
krídla
2 × nohy
perie
A tiež zdielajú mnohé schopnosti. Vedia:
lietať
jesť
spať
Avšak každý druh vyzerá trocha inak - i keď s ostatnými zdiela hore vymenované atribúty a schopnosti. Niektoré vedia navyše aj plávať, iné loviť alebo spievať.
Pre našu situáciu by sme povedali, že máme triedu "Vták" a pod-triedy (resp. trieda -> rad -> čelaď -> druh)
Podobný vzťah si vieme definovať pri triedach. Kde vieme vytvoriť novú triedu (napr. SparkleParticle ktorá rozširuje triedu Particle)
Kľúčové sú tu dve slová: extends a super()
Príklad:
Úloha 7:
Priprav obálku/krabičku s prekvapením. Po rozkliknutí z nej vyletia konfety.
konfety sú rôznych tvarov a farieb (vytvor nové triedy, ktoré rozširujú trietu Particle)
v obálke/krabičke je ich presne definovaný obmedzený počet (napr. 1000) - ktorý sa priebežne míňa (a časom určite minie)