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, with, vector, on top vektörünün uzunluğu veya “büyüklüğü”  genelde: vertical bar, vertical bar, v, with, vector, on top, vertical bar, vertical bar ş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, with, vector, on top'nün büyüklüğünü aşağıdaki gibi hesaplayabiliriz:
vertical bar, vertical bar, v, with, vector, on top, vertical bar, vertical bar, equals, square root of, v, start subscript, x, end subscript, times, v, start subscript, x, end subscript, plus, v, start subscript, y, end subscript, times, v, start subscript, y, end subscript, end square root
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, with, vector, on top vektörü için, birim vektör (u, with, hat, on top olarak yazılır) aşağıdaki gibi hesaplanır:
u, with, hat, on top, equals, start fraction, u, with, vector, on top, divided by, vertical bar, vertical bar, u, with, vector, on top, vertical bar, vertical bar, end fraction
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.