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

Parçacık sistemi sistemleri

Nerede kaldığımızı hatırlayalım. Bir tek Parçacık nesnesinden bahsetmeyi biliyoruz. Particle nesnelerinden oluşan bir sistem hakkında konuşmayı biliyoruz, ve bunu bir “parçacık sistemi” olarak adlandırıyoruz. Parçacık sistemini bağımsız bir nesneler topluluğu olarak tanımladık. Ancak, parçacık sisteminin kendisi de bir nesne değil midir? Eğer durum böyleyse (ki böyle), parçacık sistemlerinin topluluğu olmaması için bir neden yoktur, yani sistemin sistemi.
Bu tarz düşünceler bizi daha ileri götürebilir, ve kendinizi bodruma günlerce kilitleyip sistemin sisteminin sisteminin sisteminin sisteminin sisteminin şemasını çizebilirsiniz. Sisteminin. Ne de olsa, işler böyle yürür. Organ, hücrelerin oluşturduğu bir sistemdir, insan vücudu organların oluşturduğu bir sistemdir, bir şehir mahallelerin oluşturduğu bir sistemdir, vesaire. Bu gitmek için ilginç bir yol olsa da, şimdi olmak istediğimiz yerden biraz uzaktır. Yine de, her biri birçok parçacığı takip eden birçok parçacık sistemini takip eden bir program yazmayı bilmek faydalıdır. Aşağıdaki senaryoya bakalım:
  • Boş bir ekranla başlıyorsunuz.
  • Fareye tıklıyorsunuz ve farenin konumunda bir parçacık sistemi oluşturuyorsunuz.
  • Fareye her tıkladığınızda, yeni bir parçacık sistemi farenin konumunda oluşturulur.
Kendiniz deneyin:
Bunu kodla nasıl gerçekleştiririz? Önceki makalede, bir ParticleSystem nesnesine tek referansı ps değişkeninde saklamıştık.
var ps = new ParticleSystem(new PVector(width/2, 50));

draw = function() {
  background(50, 50, 50);
  ps.addParticle();
  ps.run();
};
Artık birden çok sistem olduğuna göre, potansiyel olarak gittikçe artan bir sayı, bunları ayrı ayrı isimlendirilmiş değişkenlerde saklamak istemiyoruz. Bunun yerine, tüm sistemleri izlemek için bir dizi kullanacağız. Program başladığında bunu boş başlatırız:
var systems = [];
Fare basılı olduğunda, yeni bir ParticleSystem nesnesi oluşturulur ve diziye itilir:
mousePressed = function() {
  systems.push(new ParticleSystem(new PVector(mouseX, mouseY)));
};
draw()'da, bir ParticleSystem nesnesine başvurmak yerine, dizideki tüm sistemlere bakarız ve her birinde run()'ı çağırırız.
draw = function() {
  background(50, 50, 50);
  for(var i = 0; i < systems.length; i++){
    systems[i].addParticle();
    systems[i].run();
  }
};
Şimdi, yazmış olduğumuz kodla kendiniz tekrar deneyin: