2014-03-27 43 views
0

比方說,我有一個div,我用隨機生成的位置值(頂部,左側)插入其他div。不使隨機放置的對象重疊的算法?

我想要一個算法不使元素重疊。我可以將位置設置爲相對位置,但元素會溢出容器。

Here's an example fiddle

for (var i = 0 ; i < 20 ; i++) 
{ 
    var elem = $(document.createElement('div')); 
    elem.attr('class', 'child'). 
    css 
    ({ 
     'top': Math.floor(Math.random()*((height-50)-30+1)+30), 
     'left': Math.floor(Math.random()*((width-50)-30+1)+30), 
     'width' : 30, 
     'height': 30 
    }); 
    $('#wrapper').append(elem); 
} 

回答

0

如果你不把很多物體相對於你的總面積,你可以發現路口和如果你得到一個路口重新取樣。順便說一下,如果您想要從區域中分配k個非重疊對象的方式獲得均勻的隨機樣本,那麼選擇全局均勻隨機的第一個對象並保持固定不是正確的方法,因爲對象位置可能是有偏見以避免重疊。在某些初始不重疊的任務中,您最好將對象放在一起並保持一致,然後繼續選擇其中一個對象並略微擺動它的位置,當您與另一個對象發生碰撞時更改方向。如果你這樣做了足夠多的時間,你基本上會從你真正想要從中抽取樣本的隨機樣本。