我有一组在笛卡尔网格上绘制的任意旋转填充矩形(二维整数数组,每个单元格为0-空白或1-矩形像素),我想测试一个特定的矩形周围是否有障碍物,前提是矩形的中心及其四条边的坐标已知。
例如,假设我们想测试矩形的任意一条边上是否有5个单位的无障碍物。
用绿点标记的矩形是可以的,而未标记的矩形则明显地发生碰撞。
对于非旋转矩形来说,这似乎很简单,但是,我很难想出能够处理旋转矩形的算法。
简单地从中心开始循环,直到我们撞到空的地方,然后检查空的地方是否有障碍物,如果长方形互相接触,似乎不起作用。
最佳答案
因为你似乎是以图像为导向的思维方式操作,所以你可以使用图像处理。
对图像应用radius-2.5膨胀过滤器。
如果两个像素的红色值都高于某个阈值,则将图像视为两个像素之间有一条边的图形。
任何在它们之间有一条路径的矩形最多相距5(不过,请注意,这会给“太亲密”关系带来传递性的结束。)
关于algorithm - 测试多边形周围的区域是否无障碍,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34068585/