Evrensel Çekim Yasası (Gravitational Attraction)

Newton, elmanın düşmesini izlerken (efsaneye göre) büyük bir şey keşfetti: Her kütle, diğer her kütleyi çeker!

Bu kuvvet sadece dünyada değil, evrenin her yerinde geçerli. Gezegenler güneşin etrafında döner, ay dünya etrafında döner - hepsi bu kuvvet sayesinde.

Kütlesel çekim
Şekil 2.5: İki kütle arasındaki çekim kuvveti - kuvvet her iki cisme de eşit büyüklükte ama zıt yönde etki eder

Newton'un Evrensel Çekim Yasası (Universal Gravitation)

F⃗ = G × (m₁ × m₂) / r² × r̂
Çekim Kuvveti (Gravitational Force) = G × (kütle₁ × kütle₂) / (mesafe)² × (yön birim vektörü)

Formülün Parçaları

G
Evrensel çekim sabiti. Gerçekte çok küçük bir sayı (6.674 × 10⁻¹¹). Simülasyonda istediğimiz değeri kullanabiliriz.
m₁ × m₂
Kütlelerin çarpımı. İki cisim de büyükse, çekim kuvveti çok büyük olur.
Mesafenin karesi. Cisimler uzaklaştıkça çekim hızla azalır. Mesafe 2x → Kuvvet 4x azalır!

💡 Ters Kare Yasası

r² (mesafe karesi) birçok fizik yasasında görülür: ışık, ses, elektrik... Buna "ters kare yasası" denir. Uzaklaştıkça etki hızla zayıflar.

Kütlesel Çekimi Kodla Uygulama

Bir "çekici" (attractor) nesne oluşturalım. Bu nesne tüm diğer nesneleri kendine çeker.

class Attractor {
  constructor(x, y, mass) {
    this.position = createVector(x, y);
    this.mass = mass;
  }

  // Mover'a çekim kuvveti uygula
  attract(mover) {
    // 1. Yön vektörü: mover'dan attractor'a
    let force = p5.Vector.sub(this.position, mover.position);

    // 2. Mesafe hesapla
    let distance = force.mag();

    // 3. Mesafeyi sınırla (çok yakın = patlama önleme)
    distance = constrain(distance, 5, 25);

    // 4. Kuvvet büyüklüğü: G × m1 × m2 / r²
    let G = 1;  // Simülasyon için
    let strength = (G * this.mass * mover.mass) / (distance * distance);

    // 5. Birim vektör yap ve büyüklük uygula
    force.normalize();
    force.mult(strength);

    return force;
  }
}

Adım Adım Açıklama

p5.Vector.sub()
İki konum arasındaki farkı hesaplar. Sonuç, mover'dan attractor'a işaret eden bir vektördür.
force.mag()
Vektörün büyüklüğünü (uzunluğunu) verir. Bu bizim "mesafe"miz.
constrain()
Çok önemli! Mesafe çok küçükse (cisimler çok yakınsa), r² çok küçük olur ve kuvvet patlar. Bunu önlemek için sınırlıyoruz.

⚠️ constrain() Neden Gerekli?

Mesafe 1 piksel olsa: r² = 1, kuvvet devasa olur!
Mesafe 0.1 piksel olsa: r² = 0.01, kuvvet FELAKETTİR!

constrain(distance, 5, 25) mesafeyi 5-25 arasında tutar. Hem patlamayı önler hem de çok uzakta etkisiz kalmasını engeller.

Örnek: Tek Çekici

Ortada büyük bir çekici, etrafında dönen toplar. Gezegen sistemi gibi!

🔬 Deneyin:

  1. Topların yörüngelerini izleyin. Elips mi, daire mi?
  2. attractor.js Satır 17: G değerini 2 yapın. Daha güçlü çekim, toplar merkeze çekilir
  3. sketch.js: Daha fazla mover ekleyin.
  4. Mouse ile: Attractor'ı mouse konumuna taşıyın.

Örnek: Mouse ile Çekici

Çekiciyi mouse ile kontrol edelim. Mouse'a tıklayınca çekici aktif olsun!

🔬 Deneyin:

  1. Canvas'ta farklı yerlere tıklayarak topları çekin.
  2. Basılı tutun ve hareket edin - toplar sizi takip eder!
  3. Topları birbirine yaklaştırmaya çalışın.

Örnek: İki Cisim Birbirini Çeker

Newton'un 3. yasasını hatırlayın: "Her etkiye eşit ve zıt tepki vardır." İki cisim birbirini eşit kuvvetle çeker!

Dikkat Edilecekler:

İki yönlü çekim
Her cisim diğerini çeker. Ama büyük cisim az hareket eder (a = F/m, büyük kütle = küçük ivme).
Yörünge
Başlangıç hızları doğru ayarlanırsa, cisimler birbirinin etrafında döner!

İleri Seviye: N-Body Simülasyonu

Birden fazla cisim birbirini çekerse ne olur? Bu "N-body problemi" olarak bilinir ve çok karmaşık yörüngeler oluşur.

🎮 Oyun Fikirleri

  • Gravity Wars: Gezegen sisteminde uzay gemisi yönlendirme
  • Solar System: Güneş sistemi simülasyonu
  • Black Hole: Kara delik etrafında hayatta kalma

📝 Bu Bölümün Özeti

🎉 Tebrikler!

Kuvvetler bölümünü tamamladınız! Artık şunları biliyorsunuz:

Bu bilgilerle gerçekçi fizik simülasyonları, oyunlar ve interaktif sanat eserleri oluşturabilirsiniz!

📚 Sonraki Adımlar

Nature of Code'un devamında Oscillation (Salınım), Particle Systems ve daha fazlası var. Öğrenmeye devam edin!