04 - Oscilácia
Kmitanie všade okolo nás
Last updated
Kmitanie všade okolo nás
Last updated
Po uvedení vektorov a síl by sme sa teraz azda mohli priamo pustiť naplno do modelovania húfov rýb, lietajúcich vtákov, plaziacich dážďoviek, poletujúcich mušiek a množstva iných organizmov okolo nás.
Avšak je tu ešte jedna dôležitá kapitola, skôr, než sa naplno ponoríme do "aplikovania" simulácie prírodných úkazov.
Je to kapitola o kmitaní (anglicky oscillation). Možno nie hneď na prvý poľad, ale celý svet okolo nás kmitá. Je to ten najrozšírenejší pohyb.
Kmitajú atómy na mieste v pevných objektoch. Vlnia sa vlny. V mori. Aj tie elektromagnetické okolo nás. Rádio. Aj wifi.
Kmitá naše srdce. Osciluje náš krvný obeh. Aj dýchanie.
Aj svetlo, ktoré vychádza z displeja keď práve toto teraz čítaš je kmitanie. Každá farba na trocha inej frekvencii.
Kmitanie je pre pochopenie reálneho sveta kľúčové. Tak poďme na to.
Doplň uhly do obrázku:
Dobný zádrhel spočíva v tom, že vo svete programovania sa uhly zadávajú v radiánoch.
Zober nasledujúci sketch:
Alebo zduplikuj sketch:
A implementuj rotáciu okolo stredu.
Nastav opacity pre pozadie
Dynamicky rotuj podľa mouseY (a nezabudni na opačnú rotáciu)
V predchádajúcich kapitolách sme si vysvetlili, že základ pohybu sa dá predstaviť ako reťazec vzájomne sa ovplyvňujúcich vektorov:
sila (resp. sily) -> zrýchlenie -> rýchlosť -> pocícia
Vieme tieto pravidlá aplikovať aj na rotáciu?
Poďme prepísať sketch z poslednej úloha pridajme doň premenné:
Za poznámku stojí povšimnutie, že sa tu jedná o skalárnu hodnotu a nie vektor.
Otvor sketch z minula. A pridaj uhlový pohyb pre každý Mover.
Prípadne začni so sketchu:
Pribudla nám tu trieda Ground. V nej si všimni stav ground.magic
- ten sa aktivuje keď na klávesnici stlačíš klávesu "m".
Úlohou je vymyslieť stav "magic".
Avšak určite by v ňom pri dotyku objektu so zemou mal začať objekt rotovať (náhodne? v smere dotyku? to je na tebe...).
Druhá časť úlohy je zistiť, že animácia skončila. Vtedy musí prestať aj rotovať.
Tretia časť úlohy - uprav metódu "display" v triede Mover podľa seba, aby zobrazovala niečo tebe blízke - z čoho sa dá vyčítať orientácia.