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ı
Etkileşimli vektör hareketi
Bu bölümü bitirmek için, biraz daha karmaşık ve çok daha faydalı bir şey deneyelim. Algoritma #3'te verilen bir kurala göre, bir nesnenin ivmesini dinamik bir şekilde hesaplarız— nesne fareye doğru hızlanır.
Bir vektörü bir kurala veya formüle göre hesaplamak istediğimizde, iki şeyi hesaplamamız gerekir: büyüklük ve yön. Yönle başlayalım. İvme vektörünün nesnenin konumundan farenin konumuna uzanması gerektiğini biliyoruz. Diyelim ki, nesne
(x,y)
noktasında ve fare (mouseX,mouseY)
konumunda.Bu şemada, nesnenin konumunu farenin konumundan çıkararak bir
(dx,dy)
vektörünü elde edebileceğimizi görüyoruz:dx = mouseX - x
dy = mouseY - y
Üsttekini
PVector
sözdizimini kullanarak yazalım. Mover
nesne tanımında olduğumuzu ve böylece nesnenin PVector
konumuna erişimimiz olduğunu varsayarsak, şunu elde ederiz:var mouse = new PVector(mouseX, mouseY);
// Dikkat edin! statik sub() kullanıyoruz, çünkü tamamen yeni bir PVector
var dir = PVector.sub(mouse, location); istiyoruz
Şimdi, hareketlinin konumundan fareye doğru uzanan bir
PVector
'ümüz var. Nesne bu vektörü kullanarak hızlansaydı, anında fare konumunda belirirdi. Bu elbette iyi bir animasyon vermez, ama şimdi bu nesnenin fareye doğru ne kadar hızlanması gerektiğine karar vermeliyiz.PVector ivmesinin büyüklüğünü ölçmek için (ne olursa olsun), önce ivme vektörünü ___. Evet, doğru söylediniz. Normalize edin. Vektörü birim vektörüne çekersek (bir uzunlukta) o zaman bize yönü belirten ve herhangi bir değerle ölçeklenebilen bir vektör elde ederiz. Bir çarpı bir şey eşittir bir şey.
var anything = ??;
dir.normalize();
dir.mult(anything);
Özetlemek istersek, aşağıdaki adımları atarız:
- Nesneden hedef konuma (fare) uzanan bir vektörü ölçün
- Bu vektörü normalize edin (uzunluğunu 1'e indirin)
- (bir değerle çarparak) bu vektörü uygun bir değere ölçekleyin
- İvmeye bu vektörü atayın
Bu adımlar tamamen uygulandığında, program şöyle görünür:
Çemberin hedefe ulaştığında, neden durmadığını merak ediyor olabilirsiniz. Hareket eden nesnenin bir varış yerinde durmakla ilgili bir bilgisi olmadığına dikkat etmek önemlidir; sadece varış yerinin nerede olduğunu biliyordur ve buraya en kısa zamanda ulaşmaya çalışır. En kısa zamanda ulaşmak, konumu aşacağı ve dönmek zorunda kalacağı anlamına gelir, yine varış noktasına en kısa zamanda gidecek, noktayı yine aşacak, vesaire, vesaire. Bizi izlemeye devam edin; sonrak bölümlerde, bir nesneyi bir konuma varmaya programlamayı öğreneceğiz (yaklaşırken yavaşlama).
Bu örnek, yerçekimi kavramına son derece yakındır (bu kavramda nesne fare konumuna çekilir). Yerçekimi bir sonraki bölümde detaylı olarak işlenecektir. Ancak, burada eksik olan şey, yer çekiminin gücünün (ivmenin büyüklüğü) uzaklıkla ters orantılıdır. Buna göre, nesne fareye ne kadar yakınsa, o kadar hızlanır.
Bu örneğin (bir yerine) bir dizi hareketliyle nasıl görüneceğine bakalım.
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.