Ana içerik
Bilgisayar Programlama
Konu: Bilgisayar Programlama > Ünite 5
Ders 7: SalınımAçısal hız ile salınım
Gerçek hayattaki davranışları simüle ederken, salınım, genlik, ve frekans/periyot kavramlarını anlamak çoğu zaman gereklidir. Ancak, üstteki örneği aynı sonuçla yeniden yazmanın biraz daha kolay bir yolu vardır. Salınım formülümüze bir daha bakalım:
var x = amplitude * sin(TWO_PI * frameCount / period);
Bunu biraz farklı bir şekilde yazalım:
var x = genlik * sin(yavaş artan bir değer);
Salınım periyodunu animasyon kareleri cinsinden tam olarak tanımlamak istiyorsak, formülün ilk yazdığımız haline ihtiyacımız olabilir; ancak örneğimizi, Açısal Hareket dersinden açısal sürat (ve ivme) kavramını kullanarak da kolaylıkla tekrar yazabiliriz. Varsayıyoruz:
var angle = 0;
var aVelocity = 0,03;
...
draw()
'da , şöyle diyebiliriz:angle += aVelocity;
var x = amplitude * sin(angle);
...burada
açı
yavaşça artan değerimizdir.”Değiştirilmiş programımız şöyledir:
Doğrudan gönderim yapmamamız, periyot kavramını elediğimiz anlamına gelmez. Ne de olsa, açısal hız ne kadar büyükse, çember o kadar hızlı salınır (böylece periyodu azalır). Aslında, açısal hızı TWO_PI elde etmek için kaç kere topladığınız, periyottur veya:
periyot = TWO_PI / açısal hız
Bu örneği biraz daha genişletelim ve bir
Oscillator
nesnesi oluşturalım. Şimdi, salınımın (üstteki gibi) hem x-ekseni, hem de y-ekseni boyunca meydana gelmesini istediğimizi varsayalım. Bunu yapmak için, iki açıya, iki açısal hıza, ve iki genliğe (her eksen için bir tane) ihtiyacımız olur. PVector
için mükemmel bir fırsat daha!Aşağıdaki programdaki kodu okuyun:
Bu "Doğal Simülasyonlar" dersi, Daniel Shiffman'ın"Kodun Doğası"'nın bir türevidir ve Creative Commons Yüklemesi-Ticari Olmayan 3,0 Dağıtıma Açık Lisansla kullanılmaktadır.
Tartışmaya katılmak ister misiniz?
Henüz gönderi yok.