0

想象一下我有两个点数组。其中之一是一个开放的多边形,看起来像这样。

图 1

Xes 是黑点和点 ('.') - 白色点。

第二个点数组包含一个封闭的多边形:

图 2

我需要一个算法的名称,它允许我确定给定的点数组是封闭多边形还是开放多边形。我需要这些信息来确定我是否可以填充它(我不能填充第一个示例,但我可以填充第二个示例)。

算法叫什么,它可以让我区分这两种类型的多边形?

更新 1(10.10.2015 10:05 MSK):我需要区分封闭多边形和开放多边形以防止洪水填充错误。

洪水填充错误,是当我将洪水填充应用于开放多边形时

.....
..XXX
.X..X
X...X

最后得到一个完全填充的网格:

XXXXX
XXXXX
XXXXX
XXXXX

我最初的想法是

  1. 取多边形,
  2. 检查它是打开还是关闭
  3. 如果它已关闭,请应用洪水填充。

现在,我可以做不同的事情:

  1. 洪水填充多边形。
  2. 如果整个网格被填充,那么它是一个开放的,否则(在填充后网格中至少有一个点是白色的),它是一个封闭的。

如果有办法避免进行填充以确定多边形是打开还是关闭,请告诉我。

4

1 回答 1

0

我对此没有任何经验,但是在研究其他内容时,我发现了这一点,并认为它可能对您有所帮助:

http://www.cs.tufts.edu/~sarasu/courses/comp175-2009fa/pdf/comp175-05-region-filling.pdf

幻灯片提到了 3 种不同的算法:

  • X 交点数组算法
  • 边列表算法
  • Pineda 算法
于 2015-10-09T20:38:33.407 回答