有幾個問題非常接近這個主題,但沒有一個真正幫助我。將一系列值分隔開,以便它們不重疊
我一直在編程一個圖形庫,我需要一個算法來垂直放置標籤而不重疊。我已經堅持了幾天,並設法將其提取到最基本的功能:
如果沿着Y軸給出一系列標籤位置,比如說1 1 2 3 5 6 9
,以及一個上部和一個下限10
和0
分別我需要一種方法來空間出來的值,以輸出1 2 3 4 5 6 9
333467
應234567
加權以接近原始座標。
這也應該向後工作,如果值在規模的上端揉成,就應該我不是在尋找一個明確的答案蔓延儘可能(溢出之前)
,但我想就如何解決這個問題提供一些幫助。我完全卡住了。
最後一種思路是掃描所有可能發生碰撞的標籤,並將它們定位爲一個大塊,並對齊到所有Y座標的中心。但是如果有多組衝突,這將不起作用。
編輯:爲了把這個算法在更大的背景下,看看這兩款谷歌圖表API餅圖:
標籤幾乎彈性,他們通過連接在一起並將整個質量移動到質量中心來避免碰撞。
如果有人想看看實際的代碼,該項目被稱爲mSVG和它的github – 2011-05-01 22:14:24