在矩形中布置圆圈

时间:2013-04-12 14:36:08

标签: algorithm

我正在努力研究如何有效地计算动态/随机视图的布局。

该视图将包含多个圈子。每个圆圈具有预定的尺寸。这些尺寸都在给定的最大尺寸和最小尺寸之间。

我正在尝试找到一种有效的方法,可以在一个矩形中布置圆圈,但有几个条件。

圆圈不得与矩形边缘重叠,圆圈之间必须至少有“间距”。

我想出的第一种方法是随机生成坐标对并放置最大的圆。然后随机生成更多坐标对,直到为下一个圆生成合适的坐标对。接下来,等等,直到所有人都被画出来。

问题在于它可能需要很长时间才能完成。每个后续圈子都需要更长时间才能放置,因为它可以去的地方更少。

另一个问题是布局视图是不可能的。

我确信必须有更有效的方法来做到这一点,但我不知道从哪里开始。

1 个答案:

答案 0 :(得分:0)

公式必须在它们需要的最小可能方格之间或从另一个视点处理,在边缘点之间具有尽可能小的密度的排列。但你的问题可以通过按大小排序圆圈来解决,然后从最大的方向开始,逐步将它们排列到最小的位置,因为较大的体积较大,较小的角落更适合小角落。

构建圆形三角形,其中3个圆圈具有它们一起使用的描述空间。这个三角形有3个角吗? :)所以混乱/计算角落的角度和最近的90度角的角应该放在一个方角,更好的说三个圆应该是镜像的地方,以便 适合的圆圈90度角落 落后于角落。如果第四个圆圈适合这个三角形的其余部分,那么很棒,如果没有,你可以将这个圆圈精确地放在其中,这个圆圈取三角形的最小空间。因为它没有说下一个较小的圆圈是那个完美的圆圈,这也意味着你有一堆没有放置的圆圈,直到找到一个更合适的圆圈。在找到一个之后,再次向上移动圆形堆叠,并尝试将其中一个放入其中一个角落,或者尝试构建下一个三角形。在这里你看到这是多么复杂,该死的! http://en.wikipedia.org/wiki/Malfatti_circles 但无论如何,这个三角形角落中的一个角度是90°,其中3个圆圈所需的空间越小。

另一个概念可能是考虑像空格这样的较大圆圈,它在一个角落中相对于矩形剩下一个三角形。该三角形具有可用于较小圆圈的最大空间。如果没有完美贴合的圆圈,你所拍摄的方形空间就会长大。因此,我想用想象的三角形来处理这个问题,与其中的拟合圆相比较,或者从正方形中取三角形范围是解决方案的基础。