Ana içerik
Bilgisayar Programlama
Konu: Bilgisayar Programlama > Ünite 5
Ders 4: Vektörler- Vektörlere giriş
- Zor görev: Vektör yürüyüşçüsü
- Daha fazla vektör matematiği
- Zor görev: Işın kılıcı
- Vektör büyüklüğü & normalizasyonu
- Zor Görev: Büyüklük görselleştirme
- Vektör hareketi
- Zor görev: Fren yapan araba
- Statik işlevler ve anlık yöntemler
- Zor görev: Statik fonksiyonlar
- Etkileşimli vektör hareketi
- Zor Görev Fare takipçisi
© 2023 Khan AcademyKullanım ŞartlarıGizlilik PolitikasıÇerez Politikası
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.Ü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, kare artı kare eşittir karedir.
Bu formül sayesinde, 'nün büyüklüğünü aşağıdaki gibi hesaplayabiliriz:
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 vektörü için, birim vektör ( olarak yazılır) aşağıdaki gibi hesaplanır:
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.