2014-03-27 80 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个非重叠对象的方式获得均匀的随机样本,那么选择全局均匀随机的第一个对象并保持固定不是正确的方法,因为对象位置可能是有偏见以避免重叠。在某些初始不重叠的任务中,您最好将对象放在一起并保持一致,然后继续选择其中一个对象并略微摆动它的位置,当您与另一个对象发生碰撞时更改方向。如果你这样做了足够多的时间,你基本上会从你真正想要从中抽取样本的随机样本。