Hepsini Bir Araya Getirme (Bringing It All Together)

Şimdiye kadar öğrendiklerimizi kullanarak gerçekçi bir hareket simülasyonu oluşturacağız. Üç temel kavram:

velocity += acceleration
position += velocity
Hareketin temel algoritması

Konum, Hız, İvme (Position, Velocity, Acceleration)

Konum (Position)
Nesnenin şu anki yeri. Her frame'de hız kadar değişir.
Hız (Velocity)
Konumun değişim hızı. Her frame'de ivme kadar değişir.
İvme (Acceleration)
Hızın değişim hızı. Dış etkenler (kuvvetler) tarafından belirlenir.
Kavram Ne Değiştirir Neyin Etkisi
İvme Hızı Kuvvetler (yerçekimi, rüzgar...)
Hız Konumu İvme
Konum Çizim yerini Hız

Gelişmiş Mover Sınıfı

İvme ekleyerek Mover sınıfını geliştirelim:

Mover Sınıfı Detayları:

constructor()
Konum, hız ve ivme vektörlerini başlatır. İvme başlangıçta (0, 0).
update()
Kritik! Önce ivme hızı değiştirir, sonra hız konumu değiştirir. Son olarak ivme sıfırlanır (bir sonraki frame için).
applyForce()
Kuvvet uygulama - şimdilik ivmeye doğrudan ekliyor. Forces bölümünde kütle ile böleceğiz.

İvme Stratejileri (Acceleration Strategies)

İvmeyi farklı şekillerde hesaplayabiliriz:

1. Sabit İvme

acceleration = createVector(0, 0.1);  // Yerçekimi gibi

2. Rastgele İvme

acceleration = p5.Vector.random2D();  // Rastgele yön
acceleration.mult(0.5);  // Büyüklük ayarla

3. Hedefe Doğru İvme

let direction = p5.Vector.sub(target, position);
direction.normalize();
direction.mult(0.5);
acceleration = direction;

Örnek: Rastgele Walker (Random Walker)

Her frame'de rastgele ivme uygulayarak organik bir hareket oluşturabiliriz:

🎮 Perlin Noise ile Daha Organik

random() yerine noise() kullanarak daha yumuşak, doğal görünümlü hareket elde edebiliriz. Noise değerleri birbirine bağlıdır.

Örnek: Fareyi Takip Eden Nesne

Hedefe (fareye) doğru ivme uygulayarak takip hareketi:

Nesneden fareye yön vektörü
Şekil 1.15: Bir nesneden (mover) fare pozisyonuna uzanan yön vektörü. Bu vektör, nesnenin fareye doğru gitmesi gereken yönü gösterir. Vektörün uzunluğu nesne ile fare arasındaki mesafeye eşittir.
İvme vektörü hesaplama adımları
Şekil 1.16: Fare ve konum vektörlerinin farkını alarak ivme vektörünü hesaplama. direction = mouse - position formülü ile yön bulunur, ardından normalize edilerek birim vektöre dönüştürülür ve istenen ivme büyüklüğü ile çarpılır.

Fareye Yönelme Algoritması:

1. Yön bul
p5.Vector.sub(mouse, position) - Fareye doğru vektör
2. Normalize et
direction.normalize() - Sadece yön, uzunluk 1
3. Ölçekle
direction.mult(0.5) - İstediğin ivme büyüklüğü
4. İvme olarak ata
acceleration = direction

📝 Bu Bölümün Özeti

🚀 Sonraki Adım: Kuvvetler

Bu bölümde vektörlerin temellerini öğrendik. Sonraki bölümde (Forces - Kuvvetler) Newton'un hareket yasalarını uygulayacağız:

F⃗ = m × a⃗ → a⃗ = F⃗ / m
Kuvvet kütle ile bölününce ivme olur

Yerçekimi, sürtünme, rüzgar gibi kuvvetleri simüle edeceğiz!

🌿 Ekosistem Projesi (The Ecosystem Project)

Bu bölümde öğrendiklerinizi kullanarak kendi ekosisteminizi oluşturabilirsiniz! Her bölümün sonunda bu projeye yeni özellikler ekleyeceğiz.

Ekosistem projesi örneği
Ekosistem Projesi: Farklı hareket davranışlarına sahip canlılardan oluşan bir simülasyon. Bazıları rastgele hareket eder (random walker), bazıları belirli hedeflere yönelir, bazıları ise diğerlerini takip eder veya onlardan kaçar. Bu projeyi her bölümün sonunda geliştireceğiz - yerçekimi, sürtünme, parçacık sistemleri ve daha fazlası!

🎯 Proje Fikirleri

  • Balık Sürüsü: Rastgele hareket eden, birbirlerini takip eden balıklar
  • Yıldız Sistemi: Merkezdeki bir güneşe doğru çekilen gezegenler
  • Böcek Kolonisi: Yiyeceğe doğru hareket eden, engelleri aşan böcekler
  • Hava Durumu: Rüzgarla sürüklenen parçacıklar ve yağmur damlaları