我有一個(大)水平滾動視圖,以及一堆我想定位的矩形。每個矩形都有一個所需的水平位置,但如果需要,它可以從該位置變化達一定量(常數K)。矩形不能重疊。矩形的垂直位置是任意的(當然,限制在視圖的高度)。佈置避免碰撞的矩形(算法幫助)
理想情況下,我希望矩形的大小是可變的......我想如果這是不可能的,我可以使尺寸在一個維度上變化。
現在,在這個佈局中將不可能:由於只有一定量的垂直空間,並且它們只能將K個像素水平移動離開它們的理想,可能並不是所有的矩形都能被繪製。爲了解決這個問題,每個矩形都有一個優先級(P),優先級較低的矩形應該先被省略。 (你可以認爲這是非模糊的,你可以隨時分辨出哪個矩形具有更高的優先級。)
我在概念算法的東西之後,但是如果你需要細節,這將會運行在iPad上,將會有幾千(> 1000但是< 10,000)長方形考慮。理想情況下,我希望每次用戶更改縮放級別時都能夠快速重新運行,但如果這不容易,則可以緩存位置。這些物體是時間線上的照片,我希望在事件發生時讓它們大約接近 - 我要去近似以便在那裏獲得更多。
我見過像this這樣的算法,可以做非相交的技巧,但是對於每個項目只允許移動一定的數量並不存在相同的想法。很顯然,如果沒有後一種約束,您可以顯示所有項目,所以我還需要知道什麼時候沒有更多矩形可以顯示的方式。
如果解決所描述的問題太困難了,我很樂意提出一個更實用的想法。如果一切都失敗了,我總是可以按照優先順序進行一些操作,如果可以,則將每個項目放在所需位置,如果不是,則嘗試垂直移動它,如果仍然不是,則將其水平移動到允許的限制,然後再繼續下一個。優先順序意味着可能找到次優解決方案,但它將被加權到最重要的項目上。
一個或兩個圖像可以改善這個問題。 –
已創建圖像。對不起,這是很難形容:) –