以最小间距随机均匀分布点

Compizfox

我正在尝试在二维空间中生成一组点的坐标,这些点随机均匀地间隔开,但彼此之间的距离不太近。

我开始使用np.random.uniform,生成nx 2个值(x和y坐标),然后在所有坐标上使用两个嵌套的for循环筛选坐标列表,以删除太近的点并将它们随机放置在其他位置:

# Generate xy coordinates for the grafting points
rng = np.random.RandomState(seed=self.rng_seed)
    coordinates = rng.uniform(high=(self.box_size[0], self.box_size[1]), size=(n_chains, 2))

for count in range(0, self.max_overlap_iter):
    moved_bead = False
    # Search for overlapping beads by looping over the list doubly
    for id_i, coord_i in enumerate(coordinates):
        for id_j, coord_j in enumerate(coordinates):
            if not id_i == id_j and np.sqrt(sum((coord_i - coord_j)**2)) < self.bead_size:
                # Move the second point
                coordinates[id_j] = rng.uniform(high=(self.box_size[0], self.box_size[1]), size=2)
                moved_bead = True
    if not moved_bead:
        break

将点移到新的随机位置后,它必须再次通过外循环,因为它可能仍然重叠。

问题在于,当点的密度足够高时,这实际上变得很慢,因为某些点“重叠”的飞速上升的可能性。因此,我必须建立最大数量的迭代,但这显然不能解决我的问题。

有没有更快,更有效的方法来做到这一点?

Compizfox

我最终写了一个Poisson磁盘点集生成器算法,该算法可以使用从其他算法中得到的一些想法生成非最大点集并在线性时间内运行。

当然,感谢@Kamil给我提供了Google的“泊松磁盘点集”一词;)

可以在这里找到:https : //github.com/Compizfox/MDBrushGenerators/blob/master/PoissonDiskGenerator.py

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

随机均匀分布

来自分类Dev

随机均匀分布

来自分类Dev

如何以圆形均匀分布点

来自分类Dev

在空心方形薄片内生成随机均匀分布点的Python方法

来自分类Dev

如何在矩形周围均匀分布点

来自分类Dev

如何在matplotlib中的圆上均匀分布点?

来自分类Dev

如何在矩形周围均匀分布点

来自分类Dev

给定比例的随机非均匀分布

来自分类Dev

证明随机产生的数是均匀分布的

来自分类Dev

verilog中均匀分布的随机实数

来自分类Dev

平面上的均匀分布点正在用Java聚类,为什么?

来自分类Dev

均匀分布按钮

来自分类Dev

C ++线程安全的均匀分布随机数生成

来自分类Dev

从均匀分布生成伪随机数

来自分类Dev

用Matlab创建均匀分布的随机变量

来自分类Dev

在圆角矩形内生成均匀分布的随机位置

来自分类Dev

快速均匀分布随机数生成器

来自分类Dev

生成强连通的,均匀分布的随机有向图

来自分类Dev

在C中生成随机,均匀分布的实数

来自分类Dev

具有R中均匀分布元素的随机向量a

来自分类Dev

生成具有非均匀分布的随机整数

来自分类Dev

C#中的随机数不是均匀分布的

来自分类Dev

衰变的块状均匀分布

来自分类Dev

Python适合均匀分布

来自分类Dev

箱线图均匀分布

来自分类Dev

使用C ++中使用均匀实数分布生成的随机数不是真正均匀分布的

来自分类Dev

从均匀分布的混合物中抽取随机数

来自分类Dev

如何有效地在bash中生成大的,均匀分布的随机整数?

来自分类Dev

是否将随机整数强制转换为短整数给出均匀分布?