多边形区域计算

时间:2012-06-25 15:20:56

标签: geometry artificial-intelligence polygon vertex

所以,为了工作,我正在研究一个探索任意区域的机器人控制器。该区域由一系列顶点(它是多边形)定义。这是一个例子:

An example region.

机器人从中间开始,尝试到达最外边界,然后一直跟着它。但是,由于地形的性质,它可能无法到达某些区域,只能探索特定区域:

Full exploration is blocked.

我想要做的是计算尚未探索的所有单个区域,并返回定义其边界的顶点,如下所示:

The calculated regions

计算完毕后,我应该有一个新的多边形数组,包含A,B和C的几何。

不幸的是,我无法想出一个好的,快速的算法来做到这一点。计算这个的最佳方法是什么?

2 个答案:

答案 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。