2011-06-21 21 views
5
bazı grafik düzeni çizim yapmak gerekir ve here uygulanmış ve ancak here

Yay Grafik algoritması Düğüm boyutu

zaman düğümleri bir genişliğe ve yüksekliğe sahiptir tüm tartışıldığı gibi Yay düzeni algoritması gibi bir şey kullanarak bakarak edilmiştir

(w varlık diyagramı). Bunu denklemin içine nasıl dahil edebileceğimi bilen var mı?

cevap

0

Graph JavaScript Framework'un başlangıç ​​noktası olarak, aşağıdakileri yapabilirsiniz. Node sınıfının width ve height öznitelikleri tarafından genişletildiğini varsayalım. ,

var dx = Math.max(0, Math.abs(node2.layoutPosX - node1.layoutPosX) - 0.5*(node2.width+node1.width)); 
var dy = Math.max(0, Math.abs(node2.layoutPosY - node1.layoutPosY) - 0.5*(node2.height+node1.height)); 

ölçüm fonksiyonu mesafe için mümkün olan en düşük değeri olarak 0 zorlar bile sınırlayıcı kutuları: Daha sonra, fonksiyon layoutRepulsive düğümlerin mesafeleri hesaplamak için sentezleme boyutların saygı değiştirilmelidir üst üste gelmek. (Bu bir fizik kanunudur) itici potansiyelini temsil

var repulsiveForce = this.k * this.k/d; 

:

0

sen procided ilk linke içine bakarak, çizgi 240 vardır. Bu sayı ne kadar büyük olursa, geometrik durum o kadar az olur. d iki düğüm arasındaki mesafedir ve this.k yay sertliğidir. Bu potansiyel d = 0 mesafesi için sonsuz hale gelir.

Belirli bir uzunluğa (sizin kutularının boyutu) tarafından bu potansiyeli çevirmek, böylece d - length tarafından d değiştirmek istiyor. Bu, itme kuvvetinin length no'lu mesafeden sonsuz hale geldiği anlamına gelir. Hala sorun itici güçler sonra bazı koşullu tarafından, daha küçük length sonra, mesafeler için örtülü gereken azalttığını vardır kalır:

if (d + 0.0001 < length) repulsiveForce = bigbigNumber; 

Ben kadar itici kuvvet asla olur sonsuz, ama sadece büyük 0.0001 eklendi, çünkü bilgisayarlar sınırsızlığı çok iyi idare etmiyorlar.