【问题标题】:Polygon region computation多边形区域计算
【发布时间】:2012-06-25 15:20:55
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: geometry artificial-intelligence polygon vertex


    【解决方案1】:

    一种方法是为点 p 定义一个谓词,使其“接触”封闭区域的边界,可能根据某个容差 ε > 0,例如,T 当且仅如果 p 在边界的 ε 距离内。然后遍历已探索区域的边界,注意每个顶点的此谓词:..,T, T, T, F, F, F, F, F, T, T,... 然后您的区域由Fs 的最大字符串、两个T 顶点分隔那些Fs 和边界区域的之间的界限。我刚刚用作示例的字符串概述了您的区域B:五个Fs。

    【讨论】:

      【解决方案2】:

      您想要外部边界多边形减去内部粉红色(已探索)多边形的布尔差值的 ISTM。但是,没有简单的算法可以解决这个问题,所以我建议您查看并从各种多边形裁剪库中进行选择。

      这是最近对一些剪辑库的比较 - http://rogue-modron.blogspot.com.au/2011/04/polygon-clipping-wrapper-benchmark.html

      也是我自己的开源免费多边形裁剪器的无耻插件 - http://angusj.com/delphi/clipper.php

      【讨论】:

      • 这是一个与多边形裁剪类似的问题,但我希望返回一系列多边形,而不仅仅是一个。我也想有一个“容忍度”——如果探索区域的点“靠近”外边界,就好像我已经到达了它。
      • 任何像样的裁剪器都会返回多个多边形。如您的示例所示,如果只返回一个多边形,则解决方案将不正确。至于“公差”,也许您可​​以通过该公差偏移(膨胀/缩小)内部多边形或外部边界多边形。
      猜你喜欢
      • 2015-09-06
      • 2020-11-12
      • 2012-11-01
      • 2012-03-02
      • 1970-01-01
      • 1970-01-01
      • 2015-05-31
      • 2012-08-29
      • 1970-01-01
      相关资源
      最近更新 更多