【发布时间】:2017-03-31 21:44:46
【问题描述】:
您好,我目前正在进行一个项目,其中每个时间步都会将一个新网格添加到网格上的一系列块中。我如何能够检测到网格中已经形成了一个圆圈?鉴于我所拥有的只是坐标 (x,y) 和每个单元格的颜色。 “圆圈”是指一个被封闭的区域,如图所示。
提前致谢!顺便说一句,我不是在问如何点击一个单元格并应用洪水填充算法。
算法的后果应该是这样的:
【问题讨论】:
标签: loops colors grid geometry detect
您好,我目前正在进行一个项目,其中每个时间步都会将一个新网格添加到网格上的一系列块中。我如何能够检测到网格中已经形成了一个圆圈?鉴于我所拥有的只是坐标 (x,y) 和每个单元格的颜色。 “圆圈”是指一个被封闭的区域,如图所示。
提前致谢!顺便说一句,我不是在问如何点击一个单元格并应用洪水填充算法。
算法的后果应该是这样的:
【问题讨论】:
标签: loops colors grid geometry detect
您需要将所有白色(未填充)方格拆分为彼此相邻的方格组。从任何白色方块开始,将其所有未填充的相邻方块添加到集合中,并继续这样做,直到包含所有方块。
一旦你有了这些集合,如果有不包含任何边界方块的非空集合,你就会有一个“圆”(正如你命名的那样)。然后要填充这些集合,您只需将每个成员的颜色更改为蓝色。
如果你有上一步的集合,当你添加另一个砖块时,你只需要考虑包含受影响方块的集合,看看它是否被分成了两个集合,以及这些新集合中的任何一个是否可能是“圆圈”。
【讨论】: