Yay Kuvveti (Spring Force)

Yaylar, doğadaki en temel elastik sistemlerden biridir. Bir yayı gerdiğinizde veya sıkıştırdığınızda, yay sizi orijinal uzunluğuna doğru geri iter. Bu davranış Hooke Yasası ile tanımlanır.

Yay sistemi
Şekil 3.14: Bir çiviye (anchor) ve bir ağırlığa (bob) sahip yay sistemi.

💡 Yaylar Nerede Kullanılır?

Oyunlarda karakterlerin zıplaması, araçların süspansiyonu, kumaş simülasyonları, yumuşak cisimler (soft body physics) ve hatta ses dalgaları yay fiziğine dayanır!

Hooke Yasası (Hooke's Law)

17. yüzyılda Robert Hooke tarafından keşfedilen bu yasa, yay kuvvetini tanımlar:

F⃗ = -k × x⃗
Yay Kuvveti = -(yay sabiti) × (uzama miktarı)
Yay uzaması
Şekil 3.15: Yayın uzaması (x), şu anki uzunluk ile doğal uzunluk arasındaki farktır.
Yay kuvveti yönü
Şekil 3.16: Yay kuvveti, yer değiştirme vektörüne zıt yöndedir.
F⃗ (Force)
Yay kuvveti - Yayın uyguladığı geri çekme/itme kuvveti (vektör).
k (Spring Constant)
Yay sabiti - Yayın ne kadar sert olduğu. Büyük k = sert yay, küçük k = yumuşak yay.
x⃗ (Displacement)
Uzama/sıkışma miktarı - Yayın orijinal uzunluğundan ne kadar uzadığı/sıkıştığı.
- (Negatif)
Geri getirici - Kuvvet her zaman uzamaya ZIT yönde. Yay gerilirse çeker, sıkışırsa iter.

🎮 Simülasyonda

x = (şu anki uzunluk) - (doğal uzunluk). Pozitif x = yay gerilmiş, negatif x = yay sıkışmış. Kuvvet her zaman dengeye doğru!

Basit Yay Örneği (Simple Spring)

Bir noktaya bağlı, dikey salınan bir yay:

Satır Satır Açıklama:

Satır 2-3
restLength yayın doğal uzunluğu (gerilmeden). k yay sabiti (sertlik).
Satır 19-20
Yayın şu anki uzunluğunu hesaplıyoruz. sub() ile anchor'dan bob'a vektör, mag() ile uzunluk.
Satır 23
x = uzama miktarı. Pozitif ise yay gerilmiş, negatif ise sıkışmış.
Satır 26-29
Hooke Yasası! Kuvvetin yönü = bob'dan anchor'a (normalize). Büyüklüğü = k × x. Negatif işaret geri getirici kuvvet için.

🔬 Deneyin:

  1. Satır 3: k = 0.2 yapın. Beklenti: Daha sert yay, hızlı salınım
  2. Satır 3: k = 0.01 yapın. Beklenti: Çok yumuşak yay, yavaş salınım
  3. Satır 4: damping = 1.0 yapın. Beklenti: Sürtünme yok, sonsuza kadar salınır

Etkileşimli Yay (Interactive Spring)

Fare ile sürüklenebilen bir bob ekleyelim:

Etkileşim Özellikleri:

clicked()
Fare tıklandığında bob'a yeterince yakınsa sürüklemeye başla.
drag()
Sürükleme sırasında bob'u fare pozisyonuna taşı.
stopDragging()
Fare bırakıldığında sürüklemeyi durdur, yay fiziği devreye girsin.

Çok Noktalı Yay (Zincir) (Multi-Point Spring / Chain)

Birden fazla noktayı yaylarla birbirine bağlayarak zincir veya halat simülasyonu oluşturabiliriz:

💡 Bu Teknik Nerelerde Kullanılır?

  • Kumaş simülasyonu: 2D yay ağı
  • Halat/ip: Tek boyutlu zincir
  • Yumuşak cisimler: Jöle, balık gibi
  • Saç/tüy: Animasyonlarda

📝 Bu Bölümün Özeti