测试多边形周围的区域是否无障碍

时间:2015-12-03 14:29:13

标签: algorithm

我在笛卡尔网格上绘制了一组任意旋转填充矩形(2D整数数组,每个单元格为0 - 空白空间或1 - 矩形像素),并且想测试特定矩形是否在其周围有任何障碍物鉴于矩形的中心与其四个边的坐标一起已知。

例如,让我们说我们想测试矩形是否距其任一边缘无障碍5个单位。 标有绿点的矩形是正常的,而未标记的矩形明显碰撞。 enter image description here

对于非旋转矩形似乎微不足道但是,我很难想出能够处理旋转矩形的算法。 如果矩形相互接触,只需从中心开始循环直到我们到达空的空间,然后检查空白空间中的障碍物似乎不起作用。

1 个答案:

答案 0 :(得分:0)

由于您似乎使用面向图像的思维模式,因此可以使用图像处理。

  1. 对图像应用radius-2.5扩张滤镜。
  2. 将图像视为两个像素之间存在边缘的图形,如果它们都具有高于某个阈值的红色值。
  3. 任何在它们之间有路径的矩形最多相隔5个。 (虽然,请注意,这将为您提供“过于亲密”关系的传递性关闭。)