想象一下我有两个点数组。其中之一是一个开放的多边形,看起来像这样。
X
es 是黑点和点 ('.') - 白色点。
第二个点数组包含一个封闭的多边形:
我需要一个算法的名称,它允许我确定给定的点数组是封闭多边形还是开放多边形。我需要这些信息来确定我是否可以填充它(我不能填充第一个示例,但我可以填充第二个示例)。
算法叫什么,它可以让我区分这两种类型的多边形?
更新 1(10.10.2015 10:05 MSK):我需要区分封闭多边形和开放多边形以防止洪水填充错误。
洪水填充错误,是当我将洪水填充应用于开放多边形时
.....
..XXX
.X..X
X...X
最后得到一个完全填充的网格:
XXXXX
XXXXX
XXXXX
XXXXX
我最初的想法是
- 取多边形,
- 检查它是打开还是关闭
- 如果它已关闭,请应用洪水填充。
现在,我可以做不同的事情:
- 洪水填充多边形。
- 如果整个网格被填充,那么它是一个开放的,否则(在填充后网格中至少有一个点是白色的),它是一个封闭的。
如果有办法避免进行填充以确定多边形是打开还是关闭,请告诉我。