Salınımın Temeli: Açılar (Angles)
Salınım hareketlerini anlamak için önce açıları ve trigonometriyi anlamamız gerekiyor. Bu kavramlar, dönen nesnelerden dalgalara kadar her yerde karşımıza çıkacak.
💡 Neden Trigonometri?
Doğada birçok hareket dairesel veya periyodiktir: gezegenlerin yörüngeleri, kalp atışları, ses dalgaları, sarkaç hareketi... Trigonometri bu hareketleri matematiksel olarak tanımlamamızı sağlar.
🎮 Oyun ve Fizik Programlamada Trigonometri
Trigonometri olmadan modern oyunlar ve simülasyonlar yapmak neredeyse imkansız! İşte bazı kullanım alanları:
atan2() ile açı hesapla,
rotate() ile döndür.
vx = speed × cos(angle),
vy = speed × sin(angle)
🎯 Somut Örnekler
- Angry Birds: Mermi fiziği (parabolik yörünge)
- Asteroids: Uzay gemisi rotasyonu ve hareket yönü
- Mario: Platform kenarlarından düşme açısı
- Flappy Bird: Kuşun eğimi (velocity.y'den açı)
- Racing Games: Araç dönüşleri ve drift açıları
Radyan vs Derece (Radians vs Degrees)
Açıları ölçmek için iki farklı birim kullanabiliriz:
p5.js'te Dönüşüm
// Derece → Radyan
let radyan = radians(90); // 90° → π/2 ≈ 1.5708
// Radyan → Derece
let derece = degrees(PI); // π → 180°
// p5.js sabitleri
PI // ≈ 3.14159 (yarım daire)
TWO_PI // ≈ 6.28318 (tam daire)
HALF_PI // ≈ 1.5708 (çeyrek daire)
QUARTER_PI // ≈ 0.7854 (sekizde bir)
⚠️ Dikkat: p5.js Varsayılanı
p5.js'te rotate(), sin(), cos() gibi
fonksiyonlar varsayılan olarak RADYAN kullanır!
// ❌ YANLIŞ - 45 radyan döndürür (çok fazla!)
rotate(45);
// ✅ DOĞRU - 45 derece döndürür
rotate(radians(45));
// ✅ VEYA angleMode değiştir
angleMode(DEGREES);
rotate(45); // Artık derece olarak çalışır
🎮 İnteraktif: Radyan ve Derece Karşılaştırma
Fareyi hareket ettirerek açının hem derece hem radyan değerini görün:
Birim Çember (Unit Circle)
Birim çember, yarıçapı tam olarak 1 olan ve merkezi orijinde (0, 0) bulunan bir çemberdir. Trigonometriyi anlamanın anahtarı bu çemberdir!
Birim Çemberde Koordinatlar
Birim çember üzerinde herhangi bir nokta seçtiğinizde, o noktanın koordinatları doğrudan cos ve sin değerlerini verir:
- x koordinatı = cos(θ) → Yatay uzaklık
- y koordinatı = sin(θ) → Dikey uzaklık
💡 Neden "Birim"?
Yarıçap 1 olduğu için hesaplamalar çok basitleşir. Başka yarıçaplar için
sadece çarpmak yeterli: x = r × cos(θ), y = r × sin(θ)
🎮 İnteraktif: Birim Çember Keşfi
Fareyi çemberin etrafında hareket ettirin ve sin/cos değerlerinin nasıl değiştiğini gözlemleyin:
Birim Çemberde Önemli Noktalar:
Sinüs ve Kosinüs (Sine & Cosine)
Trigonometrinin en önemli iki fonksiyonu: sin() ve cos(). Bu fonksiyonlar bir açıyı alır ve -1 ile 1 arasında bir değer döndürür.
Birim Çemberde Sin ve Cos
Yarıçapı 1 olan bir çember düşünün (birim çember). Merkezi (0,0) noktasında. Çember üzerinde bir nokta seçin ve merkeze bir çizgi çekin. Bu çizginin x ekseniyle yaptığı açı θ (teta) olsun:
- cos(θ) = noktanın x koordinatı
- sin(θ) = noktanın y koordinatı
💡 Hatırlatma Yöntemi
"cos = x, sin = y" - Alfabetik sıra! c(os) harfi s(in)'den önce gelir, x de y'den önce gelir.
Değerler Nasıl Değişir?
| Açı (°) | Açı (rad) | cos(θ) | sin(θ) |
|---|---|---|---|
| 0° | 0 | 1 | 0 |
| 90° | π/2 | 0 | 1 |
| 180° | π | -1 | 0 |
| 270° | 3π/2 | 0 | -1 |
| 360° | 2π | 1 | 0 |
🎮 İnteraktif: Sinüs Dalgası
Birim çember dönüşü ile sinüs dalgasının nasıl oluştuğunu görün:
🎮 İnteraktif: Kosinüs Dalgası
Kosinüs, sinüsten 90° (π/2) faz kayması ile başlar:
🎮 İnteraktif: Tanjant Fonksiyonu
tan(θ) = sin(θ) / cos(θ). 90° ve 270°'de sonsuza gider:
Dik Üçgende Trigonometri
Orijinal tanım aslında dik üçgenden gelir. Bir dik üçgende:
cos(θ) = komşu kenar / hipotenüs
tan(θ) = karşı kenar / komşu kenar
💡 SOH-CAH-TOA
Sin = Opposite / Hypotenuse (Karşı/Hipotenüs)
Cos = Adjacent / Hypotenuse (Komşu/Hipotenüs)
Tan = Opposite / Adjacent (Karşı/Komşu)
Tanjant (tan) ve Diğer Fonksiyonlar
tan(θ) = sin(θ) / cos(θ) formülüyle hesaplanır. Birim çemberde,
tanjant değeri noktadan x eksenine çizilen teğet çizginin uzunluğunu verir.
Örnek: Fareyi Takip Eden Ok (Pointing Towards Mouse)
Trigonometrinin en yaygın kullanımlarından biri: bir nesnenin başka bir
noktaya bakmasını sağlamak. Bunun için atan2()
fonksiyonunu kullanacağız.
Satır Satır Açıklama:
translate() koordinat sisteminin merkezini canvas ortasına taşır.
Artık (0,0) noktası canvas'ın ortasında!
rotate(angle) tüm çizimleri bu açı kadar döndürür.
Okumuz artık fareye doğru bakıyor!
🔬 Deneyin:
-
Satır 14:
atan2(dy, dx)yerineatan2(dx, dy)yapın. Beklenti: Ok yanlış yöne bakar (90° kayık) -
Satır 17:
rotate(angle + PI)yapın. Beklenti: Ok ters yöne bakar (180° döner)
📝 Bu Bölümün Özeti
- Radyan: Matematiksel açı birimi, 2π = tam daire
- Derece: Günlük kullanım, 360° = tam daire
- sin(θ): Açının y bileşeni (-1 ile 1 arası)
- cos(θ): Açının x bileşeni (-1 ile 1 arası)
- atan2(y, x): İki noktadan açı hesaplar
- radians(): Derece → radyan dönüşümü
- degrees(): Radyan → derece dönüşümü