Vektörleri Ölçekleme (Vector Scaling)

Vektörleri bir skaler (tek sayı) ile çarparak veya bölerek büyütebilir veya küçültebiliriz. Bu, hız kontrolü için çok kullanışlıdır.

n × v⃗ = (n×x, n×y)
Skaler ile çarpma: her bileşeni çarp
Vektörü skaler ile çarpma
Şekil 1.9: Bir vektörü skaler ile çarpmak, vektörü ölçeklendirir. Örneğin v⃗ × 2 vektörün uzunluğunu 2 katına çıkarır, yön aynı kalır. v⃗ × 0.5 ise uzunluğu yarıya indirir. Negatif sayıyla çarpma yönü tersine çevirir!

mult() - Çarpma (Multiplication)

let v = createVector(2, 3);

v.mult(2);  // v = (4, 6) - 2 katı

v.mult(0.5);  // v = (2, 3) - yarısı

v.mult(-1);  // v = (-2, -3) - tersine çevir
mult(n) n > 1
Vektörü büyütür. Yön aynı, uzunluk artar.
mult(n) 0 < n < 1
Vektörü küçültür. Yön aynı, uzunluk azalır.
mult(n) n < 0
Yönü tersine çevirir. mult(-1) ile tam tersi.
Orijinal: v⃗ = (2, 0) × 2: v⃗ × 2 = (4, 0)

div() - Bölme (Division)

v⃗ / n = (x/n, y/n)
Skaler ile bölme: her bileşeni böl
Vektörü skaler ile bölme
Şekil 1.10: Bir vektörü skaler ile bölmek, vektörü küçültür. v⃗ / 2 vektörün uzunluğunu yarıya indirir, yön aynı kalır. Bu işlem özellikle normalize etmek için kullanılır: v⃗ / |v⃗| = birim vektör (uzunluğu 1)
let v = createVector(10, 20);

v.div(2);  // v = (5, 10) - yarısı

v.div(5);  // v = (1, 2) - beşte biri

💡 div() vs mult()

v.div(2) ve v.mult(0.5) aynı sonucu verir! Hangisini kullanacağınız tercihe bağlı.

Örnek: Hız Kontrolü

mult() ve div() hızı kontrol etmek için mükemmel:

Kontroller:

↑ Yukarı Ok
velocity.mult(1.1) - Hızı %10 artırır
↓ Aşağı Ok
velocity.mult(0.9) - Hızı %10 azaltır

Statik Metodlar (Static Methods)

Bazen orijinal vektörü değiştirmek istemeyiz. Bunun için statik metodlar kullanırız:

let v = createVector(2, 3);

// ❌ Orijinali değiştirir
v.mult(2);  // v artık (4, 6)

// ✅ Yeni vektör oluşturur, orijinal aynı kalır
let w = p5.Vector.mult(v, 2);  // w = (4, 6), v hala (2, 3)
Metod Kullanım Orijinal
v.mult(n) v'yi n ile çarp Değişir ⚠️
p5.Vector.mult(v, n) Yeni vektör döner Aynı kalır ✅
v.div(n) v'yi n'e böl Değişir ⚠️
p5.Vector.div(v, n) Yeni vektör döner Aynı kalır ✅

⚠️ Ne Zaman Statik Kullanmalı?

Kuvvetlerle çalışırken sıkça kullanacağız! Örneğin: aynı yerçekimi kuvvetini birden fazla nesneye uygularken, orijinal kuvvet vektörünü korumamız gerekir.

copy() - Vektör Kopyalama

Bazen bir vektörün kopyasını alıp üzerinde işlem yapmak isteriz:

let original = createVector(3, 4);

// ❌ YANLIŞ - aynı vektöre referans!
let copy1 = original;
copy1.mult(2);  // original da değişir!

// ✅ DOĞRU - gerçek kopya
let copy2 = original.copy();
copy2.mult(2);  // sadece copy2 değişir

📝 Bu Bölümün Özeti