在图像中找到迷宫走廊的大小

时间:2018-07-04 01:22:18

标签: java

因此,我正在构建一个用于解决迷宫的应用程序,其中一种选择是上传图片并将其解决。但是,解决了迷宫问题后,输出将如下所示。

maze

我想弄清楚如何使我的程序找到合适的走廊尺寸,并使路径完全填满,使解决方案看起来像这样

enter image description here

我的数据被放入一个数组,其中1代表壁,0代表空格,例如this。到目前为止,我已经考虑过尝试找到1之间的最小距离,但这会遇到圆形迷宫和在迷宫上书写的问题。我曾考虑过要填充墙之间的距离,但是在交叉路口会遇到问题。

我正在使用

绘制图像
image.setRGB(x, y, Color.RED.getRGB());

,图像为BufferedImage。

我真的是个主意,不知道如何解决这个问题,将不胜感激。

1 个答案:

答案 0 :(得分:1)

网格中的每个正方形都有一定的大小。用`int iRow = cRMService_FuncLibrary.verifyValueExistsInADFTable("{{obj.CRMFunc_Service_OR.ADFTableMassUpdateMRU}}", sFieldValue, 0, "AssignedTo MRU ADF Table");` * wsq来表示“正方形的宽度乘以正方形的高度”。

考虑到更细粒度的hsq,您可以通过将(x, y)除以xwsq除以y来找到它在哪个正方形中:

wsh

涂成红色的区域将是int xsq = x / wsq; int ysq = y / ysq; ,宽度/高度为(xsq * wsq, ysq * hsq)。您可以将其涂成红色,但这意味着您要在墙壁上涂漆。因此,您必须根据墙壁的大小来调整要用红色填充的区域。如果墙壁都是两个像素厚,则需要在正方形的x和y坐标上加上1,然后从宽度和高度减去2。

现在您每次呼叫(wsq, hsq)时,都可以用Graphics2D再次填充它,也可以记住已经填充的正方形。

注意:由于您使用的是常规尺寸的正方形,因此您还可以优化迷宫求解算法,以在大小为image.setRGB的正方形网格中工作,而不是图像中的单个像素。