所以,为了工作,我正在研究一个探索任意区域的机器人控制器。该区域由一系列顶点(它是多边形)定义。这是一个例子:
机器人从中间开始,尝试到达最外边界,然后一直跟着它。但是,由于地形的性质,它可能无法到达某些区域,只能探索特定区域:
我想要做的是计算尚未探索的所有单个区域,并返回定义其边界的顶点,如下所示:
计算完毕后,我应该有一个新的多边形数组,包含A,B和C的几何。
不幸的是,我无法想出一个好的,快速的算法来做到这一点。计算这个的最佳方法是什么?
答案 0 :(得分:2)
ISTM,你想要外部边界多边形的布尔差异减去内部粉红色(探索过的)多边形。但是没有简单的算法,所以我建议您查看并选择各种多边形裁剪库。
以下是一些剪辑库的最新比较 - http://rogue-modron.blogspot.com.au/2011/04/polygon-clipping-wrapper-benchmark.html
还有我自己的开源免费软件多面片剪辑的无耻插件 - http://angusj.com/delphi/clipper.php
答案 1 :(得分:2)
一种方法是将点 p 的谓词定义为“触摸”封闭区域的边界,可能根据某些容差ε> 0,例如,T
当且仅当 p 在边界的ε的距离内时。然后遍历探索区域的边界,注意每个顶点的这个谓词:..,T, T, T, F, F, F, F, F, T, T,...
然后你的区域由F
s的最大字符串分隔,两个T
视图绑定那些F
s,和边界区域之间的边界。我刚刚用作示例的字符串概述了您的区域 B :五个F
s。