2011-06-21 47 views
5

我需要做一些圖形佈局圖,並已考慮使用像春天佈局算法實現here和討論here春圖算法W¯¯節點大小

但是我節點都有一個寬度和高度(爲一個實體圖)。任何人都可以解釋我可以如何將其納入等式?

回答

0

Graph JavaScript Framework爲出發點,您可以執行以下操作。我假設類Node已被擴展屬性widthheight。然後,在功能layoutRepulsive,用於計算節點的距離的表達式必須被改變,以尊重這些尺寸:

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)); 

最大功能強制0作爲距離可能的最低值,即使當它們的包圍盒交疊。

0

找你procided第一個環節裏面,有行240:

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

代表排斥勢(這是物理)。數字越大,幾何狀態的可能性就越小。 d是兩個節點之間的距離,而this.k是彈簧剛度。距離d = 0的距離成爲無窮大。

您想要將此潛力翻譯一定的長度(您的方框的大小),因此請將d替換爲d - length。這意味着,排斥力在距離length處變得無限。仍然存在的問題,即排斥力然後通過一些有條件的減少了距離,較小的則length,必須涵蓋:

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

我添加0.0001使得排斥力從來沒有變得無限大,但只有大,因爲電腦不能很好地處理無限。