我有以下问题。
我有一个由不同大小的随机圆形组成的大区域。如果在随机位置插入一个新的半径随机的圆形,我想找到一个附近的位置,使它不会与其他任何圆形重叠。最好是圆形保持接近。
圆的数量和大小是有限的,但是随机的。该区域将非常大(可能是2500x2500),因此像这里提出的像素数组是行不通的。回答同一问题的人提出了一个网格,其中单元格的大小为圆的大小。使用最大可能的圆的大小作为单元格可以解决我的问题,但我希望圆尽可能靠近,所以这并不能完全满足我的需求。
一种非常基本的方法是在放置新圆时检测碰撞,并将其移开与之相碰的圆。之后再次检查碰撞并重复该过程。显然,这不太优雅,容易出现无限循环(比你想象的更频繁)。
目标是找到最接近的位置插入新圆,使其不与任何其他圆重叠。
P.D. 一个非常好的事情,但是与我的主要目标不同的是,而且不是我的主要目标,将重新安排尽可能多的圆,而不是仅重新定位一个圆,就好像它们在“推”彼此一样。我更喜欢距离而不是移动圆的数量。也就是说,我宁愿许多圆形移动一点,而不是一个圆形远离其原始位置。
我有一个由不同大小的随机圆形组成的大区域。如果在随机位置插入一个新的半径随机的圆形,我想找到一个附近的位置,使它不会与其他任何圆形重叠。最好是圆形保持接近。
圆的数量和大小是有限的,但是随机的。该区域将非常大(可能是2500x2500),因此像这里提出的像素数组是行不通的。回答同一问题的人提出了一个网格,其中单元格的大小为圆的大小。使用最大可能的圆的大小作为单元格可以解决我的问题,但我希望圆尽可能靠近,所以这并不能完全满足我的需求。
一种非常基本的方法是在放置新圆时检测碰撞,并将其移开与之相碰的圆。之后再次检查碰撞并重复该过程。显然,这不太优雅,容易出现无限循环(比你想象的更频繁)。
目标是找到最接近的位置插入新圆,使其不与任何其他圆重叠。
P.D. 一个非常好的事情,但是与我的主要目标不同的是,而且不是我的主要目标,将重新安排尽可能多的圆,而不是仅重新定位一个圆,就好像它们在“推”彼此一样。我更喜欢距离而不是移动圆的数量。也就是说,我宁愿许多圆形移动一点,而不是一个圆形远离其原始位置。