【发布时间】:2015-06-01 14:19:02
【问题描述】:
给定一个画布,其中包含一堆半径为 50 的圆,我如何将另一个半径为 10 的圆放置在随机位置,使其不会与任何现有的圆发生碰撞或重叠?
我知道我可以放置圆圈,然后检查是否有任何碰撞并重试,但是我需要放置很多圆圈,这可能会卡住。想知道是否有更好的方法来解决这个问题。
【问题讨论】:
-
您好,欢迎来到 Stackoverflow。您能否向我们展示一些您迄今为止尝试过的代码?
-
基本方法是定位它 - 然后检测碰撞(使用基本的圆-圆碰撞检测)。如果有碰撞,请将其放在其他地方。重复。 (如果失败次数过多;中止和/或重新启动该过程。)
-
这将用于模拟,可能会有很多碰撞,所以我只是想知道有什么比测试随机点更好,直到一个点成功。
-
@user3130915 - 如果您“预先映射”了一个潜在圆圈位置的网格,您可以将这些位置放在一个数组中,然后随机将它们拉出来并使用它们。但圆圈位置将仅限于您存储的位置。
-
如何在不尝试画布上的每个像素的情况下创建潜在位置网格。
标签: javascript 2d collision-detection game-physics