Grafik aralık algoritması

1 Cevap php

Ben bir dizi için xy koordinatlarının belirlenmesi için yararlı olacak bir algoritma için arıyorum ekranda görüntülemek için nesneleri. Her nesne başka bir nesne ile ilgili olabilir ve ilişkilerin herhangi bir sayı olabilir ve bu nesnelerin herhangi bir sayı olabilir.

Bu nesneyi görüntülemek için alanın genel boyutuna ilişkin herhangi bir kısıtlama yoktur.

Ben php yazıyorum ve bir dizi koordinatları depolamak isteyen olurdu.

1 Cevap

Bunu yapmanın tek yolu sahte bir fizik modeli kullanmaktır. Bağlandıkları eğer nesneler bir itici kuvvet ve bir çekme kuvveti vardır.

Onlara uygulanan kuvvetlerin toplamı göre nesneleri taşımak: her aşamada bir nesneye uygulanan kuvvetlerin toplamı hesaplamak ve gücün yönünde hareket ettirin.

Sahte kod, bir yineleme olacaktır:

for each object o1
   force[o1] = 0
   for each object o2
      if o1 and o2 are linked
         force[o1] += attraction_force(o1, o2)
      else
         force[o1] += repulsion_force(o1, o2)

for each object o1
   move(o1, force[o1])

Nesneleri istikrarlı devlet eriştiyseniz ve tekrarlamalar durdurun.

Muhtemelen farklı kuvvet yasalarına deneme gerekir. Özellikle, hızlı bir dengeye ulaşmak için bitişik nesnelerin istiyorum. Ben bir kuvvet yoğunluğu (yay gibi) mesafeye doğrusal veya kuadratik (gravition / elektrik cazibe) ile deneme olur

Ayrıca muhtemelen kalan gelen grafiğin kısımlarını engellemek için rastgele nesneleri taşımak gerekir stucked. Rasgele hareket miktarı ilk tekrarlamalar için büyük olabilir ve zaman içinde azalma gerekir.