Loops 发现填充的网格有一个圆;填空 嗨,我现在正处于一个项目中,在这个过程中,每一个时间步都会在网格上添加一个新的网格块。我怎样才能检测到网格中已经形成了一个圆?假设我只有坐标x,y和每个单元格的颜色。我所说的圆圈是指封闭的区域,如图所示

Loops 发现填充的网格有一个圆;填空 嗨,我现在正处于一个项目中,在这个过程中,每一个时间步都会在网格上添加一个新的网格块。我怎样才能检测到网格中已经形成了一个圆?假设我只有坐标x,y和每个单元格的颜色。我所说的圆圈是指封闭的区域,如图所示,loops,colors,grid,geometry,detect,Loops,Colors,Grid,Geometry,Detect,提前谢谢!顺便说一下,我不是在问如何单击单元格并应用泛洪填充算法 算法的结果应产生以下结果: 您需要将所有未填充的白色正方形拆分为彼此相邻的正方形集。从任何白色方块开始,将其所有未填充的相邻方块添加到集合中,并继续执行,直到包含所有方块 一旦有了这些集合,如果存在不包含任何边界正方形的非空集合,则将有一个命名为的圆。然后,要填充这些集合,只需将每个成员的颜色更改为蓝色 如果你有前一步的集合,当你添加另一个块时,你只需要考虑包含受影响的方块的集合,看看它是否被分成两个集合,这些新集合中的任何一个是

提前谢谢!顺便说一下,我不是在问如何单击单元格并应用泛洪填充算法

算法的结果应产生以下结果:


您需要将所有未填充的白色正方形拆分为彼此相邻的正方形集。从任何白色方块开始,将其所有未填充的相邻方块添加到集合中,并继续执行,直到包含所有方块

一旦有了这些集合,如果存在不包含任何边界正方形的非空集合,则将有一个命名为的圆。然后,要填充这些集合,只需将每个成员的颜色更改为蓝色


如果你有前一步的集合,当你添加另一个块时,你只需要考虑包含受影响的方块的集合,看看它是否被分成两个集合,这些新集合中的任何一个是否可以是一个圆。我在想,你怎么知道哪一组白细胞是你换成蓝色的?以下是我认为你的指导方针所说的:1创建一个集合。2向集合中添加一个白色单元格及其相邻的白色单元格,依此类推。但是现在,一旦我有了多组白色方块,我怎么知道哪个是封闭的呢?有一个X×Y的数字数组,表示每个方块所属的集合的数量。您甚至可能不需要以这种方式拥有实际的集合结构。然后,如果你改变x,y的平方,只需在数组中查找设置的数字。好的,我想我现在明白了。如果有多组白色方块,则填充的集合中没有任何边框方块。例如,在第一张图片中,圆圈外的所有白色方块都有数字1,圆圈内的所有白色方块都有数字2。因为没有一个边框正方形有数字2,所以集合2是一个圆。如果向属于集合1的点添加另一个蓝色正方形,则需要查看集合1是否已拆分为两个集合,以及集合1或两个新集合中的任何一个是否为圆。如果没有分裂,只有当新的蓝色正方形是边界正方形时,第1组才能变成一个圆。多谢了,我最终让它工作了。我有它,这样它就可以在外部集合中找到细胞,然后填充所有不在外部集合中的白细胞。然而,每当我创建一个新的外部集时,当网格超过50x50时,这是非常费力的,所以我的下一个问题将是找到一种有效创建外部集的方法。