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

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.
Fare ivme vektörünün şeması
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.
dx, dy şeması
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:
  1. Nesneden hedef konuma (fare) uzanan bir vektörü ölçün
  2. Bu vektörü normalize edin (uzunluğunu 1'e indirin)
  3. (bir değerle çarparak) bu vektörü uygun bir değere ölçekleyin
  4. İ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.
İngilizce biliyor musunuz? Khan Academy'nin İngilizce sitesinde neler olduğunu görmek için buraya tıklayın.