在工作中,我正在开发一个探索任意区域的机器人控制器。该区域由一系列顶点定义(它是一个多边形)。这是一个例子:
机器人从中间开始,试图到达最外围的边界,然后沿着它绕一圈。然而,由于地形的性质,它可能无法到达某些区域,只能探索给定的区域:
我想做的是计算所有未被探索的独立区域,并返回定义其边界的顶点,像这样:
计算完成后,我应该会得到一个新的多边形数组,包含A、B和C的几何形状。
不幸的是,我无法想出一个好的、快速的算法来做到这一点。计算这一点的最佳方法是什么?
回答:
一种方法是为点p定义一个“触及”封闭区域边界的谓词,可能根据某个容差ε > 0,例如,如果且仅当p在距离边界ε以内时为T
。然后遍历已探索区域的边界,记录每个顶点的这个谓词:..,T, T, T, F, F, F, F, F, T, T,...
然后你的区域由最大字符串F
界定,这两个T
顶点界定了这些F
,以及边界区域之间的边界。我刚刚使用的字符串示例概述了你的区域B:五个F
。