p5.Vector Sınıfı (The p5.Vector Class)

p5.js, vektörlerle çalışmayı kolaylaştıran bir p5.Vector sınıfı sunar. Bu sınıf x ve y değerlerini bir arada tutar ve üzerinde matematiksel işlemler yapmamızı sağlar.

💡 Sınıf (Class) Nedir?

Sınıf, bir "şablon" gibidir. p5.Vector sınıfı, x ve y değerlerini tutan ve toplama, çıkarma gibi işlemler yapabilen nesneler oluşturur.

createVector() ile Vektör Oluşturma

Yeni bir vektör oluşturmak için createVector(x, y) fonksiyonunu kullanırız:

// Vektör oluşturma
let position = createVector(100, 50);

// x ve y değerlerine erişim
console.log(position.x);  // 100
console.log(position.y);  // 50

// Değerleri değiştirme
position.x = 200;
position.y = 150;

// Veya set() ile
position.set(200, 150);
createVector(x, y)
Yeni bir p5.Vector nesnesi oluşturur. x ve y başlangıç değerleridir.
.x ve .y
Vektörün x ve y bileşenlerine erişmek için kullanılır.
.set(x, y)
Her iki bileşeni aynı anda değiştirmek için.

İlk Vektörlü Örnek: Zıplayan Top

Önceki bölümdeki zıplayan topu şimdi vektörlerle yazalım:

Vektörsüz vs Vektörlü Karşılaştırma:

Önceki
let x, y, xSpeed, ySpeed; - 4 ayrı değişken
Şimdi
let position, velocity; - 2 vektör nesnesi

⚠️ Henüz add() Kullanmadık!

Bu örnekte hala position.x += velocity.x yazıyoruz. Sonraki bölümde position.add(velocity) öğreneceğiz - çok daha temiz!

Vektör Kullanmanın Avantajları

Konum ve hız vektörleri bilgisayar grafiğinde
Şekil 1.4: Bilgisayar grafiği penceresinde konum ve hız vektörleri. Konum vektörü (position) nesnenin nerede olduğunu, hız vektörü (velocity) ise nesnenin her frame'de ne kadar ve hangi yönde hareket edeceğini gösterir. Her frame'de: position = position + velocity

Şimdilik kod çok farklı görünmüyor. Asıl güç, vektör işlemlerini (toplama, çıkarma, çarpma) öğrendiğimizde ortaya çıkacak.

İşlem Vektörsüz Vektörlü
Hareket x += vx; y += vy; pos.add(vel);
Mesafe sqrt((x2-x1)² + (y2-y1)²) p5.Vector.dist(a, b)
Yön atan2(y, x) v.heading()
Normalize Karmaşık formüller v.normalize()

Mover Sınıfı Tanıtımı (The Mover Class)

Hareket eden nesneler için bir Mover sınıfı oluşturalım. Bu sınıf, position ve velocity vektörlerini içerecek:

Mover Sınıfı Yapısı:

constructor()
Yeni Mover oluşturulduğunda çalışır. Rastgele konum ve hız atar.
update()
Her frame'de çağrılır. Konumu hız kadar değiştirir.
show()
Nesneyi ekrana çizer.
checkEdges()
Kenar kontrolü - ekrandan çıkınca karşı taraftan girer.

📝 Bu Bölümün Özeti