无重叠的矩形的随机放置
我正在寻找一种声音算法,该算法会将给定数量的相同大小的矩形随机放置到更大的矩形(画布)中。
我看到两种方法:
创建一个空数组,其中将包含已放置在画布上的矩形。从空的画布开始。循环选择一个位置,随机放置一个新矩形。检查数组是否具有与新矩形重叠的矩形。如果没有,则将新的矩形放入数组中并重复循环。否则,请选择一个新职位,然后再次运行支票。等等。我认为,这可能永远不会终止(理论上)。我不喜欢它。
使用网格并将矩形随机放置到单元格中。这看起来仍然像是网格放置。我也不喜欢它。
还有更好的方法吗?“更好”意味着比网格方法更有效,或者在视觉上更“随机”。在任何方面都更好。
回答:
这是一个简单的启发式方法。这将是非重叠和随机的。
随机放置一个矩形。然后,计算第一个矩形的两个平行边缘的扩展与画布的边缘的交点。您将获得四个凸空区域。将其他矩形分别一个一个地放置在这些空白区域中,并计算出相似的划分比例。并尝试将剩余的矩形放在空白区域。
您可以尝试不同的策略。您可以尝试将矩形放置在靠近拐角处。或者,您可以将它们放置在区域中心周围。我们不能讨论最优性,因为您引入了随机性。
以上是 无重叠的矩形的随机放置 的全部内容, 来源链接: utcz.com/qa/402505.html