PDA

查看完整版本 : 如何用孔表示多边形?


poster
2019-12-10, 16:49
通常使用在向量(2 * 1或1 * 2矩阵)中将其顶点按CW或CCW排序的多边形。但是,如何在向量中声明带孔的多边形?

我将在这些多边形上应用各种处理,因此我想要一种可以轻松或高效地工作的表示方式(即,如何在程序中声明这种多边形以简化算法?)

多边形是2D的,我正在用MATLAB编程。

编辑1:我要计算这些多边形(有孔或无孔)的可见度图 (http://en.wikipedia.org/wiki/Visibility_graph) 。


回答:
正如其他人提到的那样,带孔的多边形可以表示为外部边界,再加上零个或多个内部边界,所有这些边界相互不重叠*。如果使用非零绕组数 (http://en.wikipedia.org/wiki/Winding_number)确定内部/外部,请确保在与外部边界相反的方向上指定内部边界(外部为逆时针,内部为顺时针,反之亦然),以使轮廓积分在内部为零孔。

仅供参考,这种定义/表示形式已经在OpenGIS简单功能规范( PDF (http://portal.opengeospatial.org/files/829) )中进行了形式化。

就表示形式而言:

我可能会有一个K Nx2矩阵的单元格数组,其中单元格数组中的第一个元素是外部边界,而单元格数组中的其余元素(如果有)是内部边界。我将使用单元格数组,因为每个边界上的点数可能不同。

*非重叠=除非个别点,例如正方形内的菱形:

https://farm4.static.flickr.com/3615/3672548588_3e692bbe81_o.pnghttps://farm4.static.flickr.com/3581/3671787239_e329081253.jpg?v=0



更多&回答... (https://stackoverflow.com/questions/1046542)