Vektör Kavramı (Vector)

Programlamada hareket oluşturmak istediğinizde, "bir nesne nasıl hareket eder?" sorusunu cevaplamamız gerekir. Cevap: konum değişir. Peki konum nasıl değişir? İşte burada vektörler devreye girer.

Vektör gösterimi - A noktasından B noktasına çizilmiş ok
Şekil 1.1: A noktasından B noktasına çizilmiş bir ok olarak vektör gösterimi. Okun uzunluğu vektörün büyüklüğünü (magnitude), okun yönü ise vektörün yönünü gösterir. Matematikte vektörler genellikle v⃗ veya v şeklinde gösterilir.

💡 Euclidean Vector

Matematikçiler buna "Euclidean vector" veya "geometric vector" der. Programlamada genellikle sadece "vector" diyoruz.

Skaler vs Vektör (Scalar vs Vector)

İki tür değer vardır: skaler ve vektör.

Skaler
Sadece büyüklük. Tek bir sayı ile ifade edilir.
Örnekler: sıcaklık (25°C), kütle (70 kg), hız değeri (100 km/s)
Vektör
Büyüklük + Yön. Birden fazla bileşenle ifade edilir (x, y, z...).
Örnekler: hız (kuzeye 100 km/s), kuvvet (sağa 50 N), konum (3, 4)
Yürüme talimatları olarak vektörler
Şekil 1.2: Üç örnek vektör, yürüme talimatları olarak gösterilmiş. Her ok, belirli bir yönde (kuzey, güney, doğu, batı) ve belirli bir mesafede yürümeyi temsil eder. Örneğin: "3 adım kuzeye, sonra 4 adım doğuya" - bu bir vektörel talimat!
Özellik Skaler Vektör
Büyüklük✅ Var✅ Var
Yön❌ Yok✅ Var
GösterimTek sayı: 5Çoklu sayı: (3, 4)
ÖrnekSıcaklık, kütleKonum, hız, kuvvet

Neden Vektör Kullanmalıyız? (Why Vectors?)

Vektör kullanmadan da hareket programlayabilirsiniz. Ama kod çabucak karmaşıklaşır:

// ❌ VEKTÖRSÜZ (eski yöntem)
let x = 100;
let y = 100;
let xSpeed = 2;
let ySpeed = 3;

function draw() {
  x += xSpeed;  // x konumunu güncelle
  y += ySpeed;  // y konumunu güncelle
  circle(x, y, 20);
}

// Birden fazla nesne için? 😱
let x1, y1, xSpeed1, ySpeed1;
let x2, y2, xSpeed2, ySpeed2;
let x3, y3, xSpeed3, ySpeed3;
// ... korkunç!
// ✅ VEKTÖRLE (modern yöntem)
let position;
let velocity;

function setup() {
  position = createVector(100, 100);
  velocity = createVector(2, 3);
}

function draw() {
  position.add(velocity);  // Tek satır!
  circle(position.x, position.y, 20);
}

// Birden fazla nesne için? 😊
let mover1 = { pos: createVector(...), vel: createVector(...) };
let mover2 = { pos: createVector(...), vel: createVector(...) };
// ... temiz!

🎮 Avantajlar

  • Daha az değişken: x ve y yerine tek position vektörü
  • Daha okunur: position.add(velocity) ne yaptığı açık
  • Daha güçlü: Vektör matematiği (toplama, çıkarma, döndürme...)
  • 3D'ye geçiş kolay: (x, y) → (x, y, z)

Vektörler Nerelerde Kullanılır?

Konum (Position)
Bir nesnenin ekrandaki yeri: (x, y)
Hız (Velocity)
Konumun her frame'de ne kadar değişeceği: (vx, vy)
İvme (Acceleration)
Hızın her frame'de ne kadar değişeceği: (ax, ay)
Kuvvet (Force)
Nesneye uygulanan itme/çekme: (fx, fy)
Vektör bileşenleri - yatay ve dikey adımlar
Şekil 1.3: Bir pozisyondan yeni pozisyona gitmek için gereken yatay ve dikey adım sayısını gösteren vektör. Vektörün x bileşeni yatay hareketi, y bileşeni dikey hareketi gösterir. Bu şekilde (3, 4) vektörü "3 birim sağa, 4 birim aşağı" anlamına gelir.
Bilgisayar grafiği koordinat sistemi
Şekil 1.4: Bilgisayar grafiği penceresinde (0, 0) sol üst köşededir - matematiğin aksine! Görselde konum vektörü (position) orijinden nesneye, hız vektörü (velocity) ise nesnenin hareket yönünü gösterir. Y ekseni aşağı doğru artar, bu önemli bir fark!

İlk Örnek: Zıplayan Top

Henüz p5.Vector kullanmadan, klasik x/y değişkenleriyle bir top zıplatalım. Sonraki bölümde bunu vektörlerle yeniden yazacağız.

Satır Satır Açıklama:

Satır 1-4
Konum (x, y) ve hız (xSpeed, ySpeed) için ayrı ayrı değişkenler. İki boyut = dört değişken. Vektörle sadece iki olacak!
Satır 13-14
Her frame'de konumu hız kadar değiştiriyoruz. Bu iki satır vektörle tek satır olacak: position.add(velocity)
Satır 17-24
Kenar kontrolü - top duvara çarpınca hızı tersine çevir.

📝 Bu Bölümün Özeti