If you're seeing this message, it means we're having trouble loading external resources on our website.

Bağlandığınız bilgisayar bir web filtresi kullanıyorsa, *.kastatic.org ve *.kasandbox.org adreslerinin engellerini kaldırmayı unutmayın.

Ana içerik

Vektör büyüklüğü & normalizasyonu

Biraz önce gördüğümüz üzere, çarpma ve bölme, yönünü etkilemeden vektörün uzunluğunu değiştirme yoludur. Belki de merak ediyorsunuz: “Tamam, bir vektörün uzunluğunu nasıl bulurum? Bileşenleri (x ve y) biliyorum, ama okun kendisi ne kadar (piksel) uzunlukta?” Bir vektörün uzunluğunu (aynı zamanda büyüklük de denir) hesaplamayı anlamak, inanılmaz derecede yararlı ve önemlidir.
Şekil 1,10: Bir v vektörünün uzunluğu veya “büyüklüğü”  genelde: ||v|| şeklinde ifade edilir
Üstteki şemada, ok ile gösterilen vektör ve iki bileşenin (x ve y), nasıl bir dik üçgen oluşturduğuna dikkat edin. Kenarlar bileşenlerdir ve hipotenüs okun kendisidir. Bu dik üçgen bizim için bir şanstır; çünkü, evvel zaman içinde, Pisagor adında Yunanlı bir matematikçi, bir dik üçgenin kenarları ve hipotenüsü arasındaki ilişkiyi tanımlamak için şahane bir formül geliştirmiştir.
Pisagor teoremine göre, a kare artı b kare eşittir c karedir.
Bu formül sayesinde, v'nün büyüklüğünü aşağıdaki gibi hesaplayabiliriz:
||v||=vxvx+vyvy
PVector nesnesini uygulama kodu, şöyle olur:
PVector.prototype.mag = function() {
    return sqrt(this.x*this.x + this.y*this.y);
};
Aşağıdaki örnek, bir vektörün büyüklüğünü üstte bir çizgiyle görselleştirir:
Bir vektörün büyüklüğünü hesaplama, sadece bir başlangıçtır. Büyüklük fonksiyonu, birçok olasılığın kapısını açmaktadır; bunların birincisi normalizasyondur. Normalize etmek, bir şeyi “standart” yani “normal” yapma sürecini ifade eder. Vektörler bağlamında, bir anlığına standart bir vektörün uzunluğunun 1 olduğunu varsayalım. Bir vektörü normalize etmek, herhangi bir uzunluktaki vektörü almak ve yönünü aynı tutarken, uzunluğunu 1'e çevirmektir, böylece vektörü birim vektör yapmaktır.
Vektörün yönünü uzunluğa bakmaksızın tanımladığından, birim vektörün kolaylıkla erişilebilir olması yararlıdır. Bir sonraki bölümde kuvvet üzerinde çalışmaya başladığımızda, bunun ne kadar kullanışlı olduğunu göreceğiz.
Verilen herhangi bir u vektörü için, birim vektör (u^ olarak yazılır) aşağıdaki gibi hesaplanır:
u^=u||u||
Başka bir deyişle, bir vektörü normalize etmek için, sadece her bileşeni büyüklüğüne bölün. Bu, oldukça mantıklı. Diyelim ki, bir vektörün uzunluğu 5. 5 bölü 5, 1'dir. O zaman, dik üçgenimize baktığımızda, hipotenüsü 5'e bölerek ölçeklememiz gerekiyor. Bu süreçte, kenarlar da 5'e bölündüğünden, çeker.
PVector nesnesinde, böylece, normalizasyon fonksiyonunu şöyle yazarız:
PVector.prototype.normalize = function() {
  var m = this.mag();
  this.div(m);
};
Elbette, küçük bir sorun olabilir. Ya vektörün büyüklüğü 0 ise? Onu 0'a bölemeyiz! Hızlı bir hata kontrolü bunu düzeltir:
PVector.prototype.normalize = function() {
  var m = this.mag();
  eğer (m > 0) {
    this.div(m);
  }
};
Burada, merkezden farenin konumunu gösteren vektörü normalize ettiğimiz (ve 1 piksel minicik olduğundan görebilmemiz için çarptığımız!) bir program bulabilirsiniz:

Bu "Doğal Simülasyonlar" dersi, Daniel Shiffman'ın"Kodun Doğası"'nın bir türevidir ve Creative Commons Yüklemesi-Ticari Olmayan 3,0 Dağıtıma Açık Lisansla kullanılmaktadır.

Tartışmaya katılmak ister misiniz?

Henüz gönderi yok.
İngilizce biliyor musunuz? Khan Academy'nin İngilizce sitesinde neler olduğunu görmek için buraya tıklayın.