图像Java将曲面分割成小正方形
我想知道是否有这样的算法:
给定一个特定的表面,它将其划分为大小相同的较小矩形
类似于此示例图:
灰色区域是曲面,红色正方形是分区本身
我在想,是否有一个优化的方法来做到这一点
一种非常糟糕的方法是在所有像素中使用for循环,并检查该特定点是否有矩形,如果没有,将创建一个矩形,依此类推
也许有人知道一个已经完成的算法?还是更好的解决方案
提前多谢;)
你可以在下面搜索框中键入要查询的问题!
我想知道是否有这样的算法:
给定一个特定的表面,它将其划分为大小相同的较小矩形
类似于此示例图:
灰色区域是曲面,红色正方形是分区本身
我在想,是否有一个优化的方法来做到这一点
一种非常糟糕的方法是在所有像素中使用for循环,并检查该特定点是否有矩形,如果没有,将创建一个矩形,依此类推
也许有人知道一个已经完成的算法?还是更好的解决方案
提前多谢;)
# 1 楼答案
这里有一个方法
创建图像的遮罩。(我刚用过Photoshop)
窃取AndrewThompson的Creating an Area from an Image代码,并使用它创建图像的
Area
为整个图像创建网格
Rectangle2D
对象一旦你有了网格,你就可以遍历
Rectangle2D
对象,检查Area.contains
是否是网格中的每个Rectangle2D
,然后你就可以把它添加到一个List<Rectangle2D>
。只会添加区域中包含的矩形,从而为您绘制最终的矩形网格。在下面的例子中,我只是把画成矩形作为视觉效果完整示例
为了清晰起见,这里是另一个视图
# 2 楼答案
你只是想用正方形填充它,还是想用最佳的正方形数填充它
第二种算法更难
对于第一步,只需一次通过一个正方形大小的图像。如果该点的像素已填充,则扫描整个正方形,如果全部填充,则绘制正方形。如果没有,请转到下一点
即,如果正方形为10*10像素: