我想生成随机的矩形,这是一个相当简单的任务。问题在于我需要确保它们不会与任何这些黑点重叠:
现在,我只需告诉它,在生成任何矩形时忽略与任何黑点重叠的部分,但是随着点密度的增加,它会变得像 bogosort 一样低效。是否有更有效的方法来做到这一点?
x1
和y1
。x >= x1
。y <= y1
。
x1 == x or y1 == y: go to step 2
注意:我们不能扩展以创建矩形。x2
。y2
。(x1, y1)
和(x2, y2)
保存为矩形的左上角和右下角。O(n * log n)
,准备阶段的空间复杂度为O(n)
,其中n
是给定点的数量。每个矩形创建都需要进行一次O(log n)
的二分查找。我假设矩形左上角与点之间发生碰撞的概率非常低,因此我们可以忽略它。随机选择一个白点。
找到最近的黑点。这将成为圆的半径。
创建以随机点为中心的圆。
在圆上选择两个点。找到它们的对称点,通过圆心画出4个点的矩形。
P.S. 确保这两个点不是圆的直径...