查找坐标以将图像随机分布在显示器上而不重叠

时间:2018-11-07 18:33:03

标签: python python-2.7 screen

我有以下代码,它们随机生成(X,Y)元组的列表:

import random
coords = []
for i in range(10):
    x = random.randint(85,939)
    y = random.randint(75,693)
    coords.append((x,y))

在最后一个列表中,如果每个元组之间的绝对差小于85,则将其视为X值重叠;如果绝对偏差小于75,则将其视为Y值重叠。确定最终列表中的元组在两个维度中都不会重叠?

1 个答案:

答案 0 :(得分:0)

最简单的方法是仅保留采样和丢弃坐标,而坐标会产生重叠。但是,当您接近填充可用空间时,这将变得非常低效。如果那不是问题,则应采用此解决方案。

效率更高,据我所知,从统计学上讲,同等的是先对一个坐标(例如行)进行采样。然后计算该行中的占用面积,并从其余位置进行采样。

为避免与简单解决方案中的问题相同,如果一行中没有可用空间,则应从该行的可能采样结果中删除该空格(两个方向的边距均为75)。

理想情况下,您不会每次都计算占用区域,但会保留从该行到该行中占用空间的映射以及非完整行的数量,并且仅在插入新图像时更新此映射。您将需要存储 n_rows + 1 个额外的数字。

要澄清一下:从有限的空间采样时,只需减去占用的位置并获得采样结果 n 。然后沿着坐标轴 n 步走,跳过所有占用的位置,找到 n 的正确位置。