我可以使用什么算法来区分闭合和开放的栅格多边形?

时间:2015-10-09 20:28:41

标签: algorithm graphics raster raster-graphics

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

Image 1

X是黑点和点('。') - 白点。

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

Image 2

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

调用的算法是什么,它允许我区分两种类型的多边形?

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

洪水填充错误,是指我将洪水填充应用于像

这样的开放多边形
.....
..XXX
.X..X
X...X

并以完全填充的网格结束:

XXXXX
XXXXX
XXXXX
XXXXX

我最初的想法是

  1. 取多边形,
  2. 检查,是否打开或关闭
  3. 如果关闭,请应用洪水填充。
  4. 现在,我可以采用不同的方式:

    1. 洪水填充多边形。
    2. 如果整个网格已填满,那么它是一个开放的网格,否则(填充洪水后网格中至少有一个点是白色的),它是一个封闭的网格。
    3. 如果有办法避免进行洪水填充以确定,无论多边形是打开还是关闭,请告诉我。

1 个答案:

答案 0 :(得分:0)

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

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

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

  • X-intersection数组算法
  • 边缘列表算法
  • Pineda的算法