MATLAB爱好者论坛-LabFans.com

MATLAB爱好者论坛-LabFans.com (https://www.labfans.com/bbs/index.php)
-   资料存档 (https://www.labfans.com/bbs/forumdisplay.php?f=72)
-   -   如何用孔表示多边形? (https://www.labfans.com/bbs/showthread.php?t=22710)

poster 2019-12-10 16:49

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

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

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

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


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

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

就表示形式而言:

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

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

[IMG]https://farm4.static.flickr.com/3615/3672548588_3e692bbe81_o.png[/IMG][IMG]https://farm4.static.flickr.com/3581/3671787239_e329081253.jpg?v=0[/IMG]



[url=https://stackoverflow.com/questions/1046542]更多&回答...[/url]


所有时间均为北京时间。现在的时间是 23:20

Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.