查找图像中迷宫走廊的大小

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

http://img1.mukewang.com/609b37000001d61403230323.jpg

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

http://img4.mukewang.com/609b370e0001d4e603230326.jpg

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

我正在使用图像绘制

image.setRGB(x, y, Color.RED.getRGB());

图像是BufferedImage。

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


哔哔one
浏览 143回答 1
1回答

当年话下

网格中的每个正方形都有一定的大小。用wsq*hsq表示“正方形的宽度乘以正方形的高度”。鉴于你更细粒度的(x, y),你可以找到在这方是通过将x通过wsq并y通过wsh:int xsq = x / wsq; int ysq = y / ysq;涂成红色的区域将来自(xsq * wsq, ysq * hsq)并且具有width / height (wsq, hsq)。并可以将其涂成红色,但这意味着您要在墙壁上涂漆。因此,您必须根据墙壁的大小来调整要用红色填充的区域。如果墙壁都是两个像素厚,则需要在正方形的x和y坐标上加上1,然后从宽度和高度中减去2。您可以Graphics2D在每次调用时再次用()填充它,image.setRGB或者可以记住已经填充的正方形。注意:由于您使用的是常规尺寸的正方形,因此您还可以优化迷宫求解算法,使其在正方形的网格中工作,(wsq, hsq)而不是图像中的单个像素。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java