我想解构以下多边形的蓝色显示,删除所有的点从多边形,造成凹。

目前,我试图做的是:
这在大多数情况下是可行的,但在前一种情况下,(2,3)和(2,4)的点都不会被移除。在这两种情况下,其中一个点将被移除,但另一个点将不取决于传递数组的顺序。
我想知道的是:
谢谢。
发布于 2010-11-13 19:18:56
我想也许你是在找凸壳
想到的第一个算法是QuickHull。一开始,取最左和最右边的点,l和r,它们必须在船体上。
在船体上先猜一猜,这是两个向外的面,一个是从l到r,另一个是从r到l,所以你有一个体积为零的多边形。
将所有剩余的点划分为lr前面的和rl前面的。
从那时起,任何一张脸前面都有点:
最后你会有凸起的外壳。
发布于 2010-11-13 19:16:28
为什么不简单地计算点的凸包呢?
这是一个研究得很好的问题,许多算法在书和网上。“扫角”的方法特别常见,例如。
http://courses.csail.mit.edu/6.854/06/scribe/s25-rasmu-sweepline.pdf
https://stackoverflow.com/questions/4174209
复制相似问题