If you're seeing this message, it means we're having trouble loading external resources on our website.

Ha webszűrőt használsz, győződj meg róla, hogy a *.kastatic.org és a *.kasandbox.org nincsenek blokkolva.

Fő tartalom

Rezgések szögsebességgel

A valós világ jelenségeinek szimulációjához nem árt, ha tisztában vagy a rezgőmozgás, amplitúdó és frekvencia illetve rezgésidő fogalmával. Ugyanakkor van egy egyszerűbb lehetőségünk arra, hogy az előző példát újraírjuk úgy, hogy az eredmény változatlan maradjon. Vessünk még egy pillantást a rezgőmozgás képletünkre:
var x = amplitude * sin(TWO_PI * frameCount / period);
És most írjuk fel egy kicsit másképpen:
var x = amplitude * sin(valamilyen lassan növekvő érték);
Ha valami miatt szükségesnek látjuk a rezgésidőt az animációs képkockaváltási sebességhez kötni, akkor az eredeti képletet érdemes használni, de akár újra is írhatjuk a programot a szögsebesség (és szöggyorsulás) alapján az Elfordulás fejezetben tanultak alapján. Legyen:
var angle = 0;
var aVelocity = 0.03;
... és a draw() függvényben egyszerűen azt mondhatjuk:
angle += aVelocity;
var x = amplitude * sin(angle);
... ahol az angle lesz a „valamilyen lassan növekvő érték.”
A módosított program:
Attól még, hogy nem hivatkozunk rá, az nem jelenti azt, hogy a rezgésidő kimaradt. Végül is minél nagyobb a szögsebesség, annál gyorsabban rezeg a körünk (és ennek következtében alacsonyabb a rezgésidő). Valójában a rezgésidő megegyezik azzal, ahányszor a szögsebességet össze kell adni, hogy TWO_PI-t kapjunk, azaz:
rezgésidő = TWO_PI / szögsebesség
Bővítsük egy kicsit a példát úgy, hogy készítünk egy Oscillator (rezegtető) objektumot. Tegyük fel, hogy a rezgést kiterjesztjük mind az x- (hasonlóan az előző példához), mind az y-tengely mentén. Ehhez két szögre, két szögsebességre és két amplitúdóra lesz szükségünk (egy-egy mindkét tengelyhez). Egy újabb tökéletes alkalom PVectort használni!
Tanulmányozd az alábbi programkódot!

Ez a „Természetes szimulációk" tananyag a Daniel Shiffman által készített „The Nature of Code” alapján készült, a Creative Commons Attribution-NonCommercial 3.0 Unported License szerint.

Szeretnél részt venni a beszélgetésben?

Még nincs hozzászólás.
Tudsz angolul? Kattints ide, ha meg szeretnéd nézni, milyen beszélgetések folynak a Khan Academy angol nyelvű oldalán.