C# 求一组点的凹壳,使每个点都在边界上

C# 求一组点的凹壳,使每个点都在边界上,c#,polygon,monogame,concave,concave-hull,C#,Polygon,Monogame,Concave,Concave Hull,所以我试图从一组随机生成的2D顶点中生成复杂的多边形。我希望允许凹面多边形存在,并确保集合中的每个顶点都包含在边界中(因此算法必须能够处理凸面和凹面外壳),同时确保边界创建的线永不相交。凹面外壳生成算法的每一个版本都假设凹面程度不同是可以接受的,并且某些点可能不是边界的一部分 我觉得这可能是一个比我想象的简单得多的问题,但我不知道如何确保我可以以这样的方式排列顶点,即在列表中具有相邻索引的顶点之间绘制一条线,使多边形符合这些标准。对于凸面外壳,很容易找到多边形的质心,并根据其各自的极角对顶点进行

所以我试图从一组随机生成的2D顶点中生成复杂的多边形。我希望允许凹面多边形存在,并确保集合中的每个顶点都包含在边界中(因此算法必须能够处理凸面和凹面外壳),同时确保边界创建的线永不相交。凹面外壳生成算法的每一个版本都假设凹面程度不同是可以接受的,并且某些点可能不是边界的一部分


我觉得这可能是一个比我想象的简单得多的问题,但我不知道如何确保我可以以这样的方式排列顶点,即在列表中具有相邻索引的顶点之间绘制一条线,使多边形符合这些标准。对于凸面外壳,很容易找到多边形的质心,并根据其各自的极角对顶点进行排序,但我目前还不知道凹面外壳的等效概念。

凹面外壳到底是什么意思?根据我的理解,有限集
S
的“凹壳”将是
S
本身(也许除非
S
本身是凸的)。根据我的经验,这实际上是一个比看起来复杂得多的问题。我认为围绕你为什么要这样做来重新构建你的问题会更有用?这里的最终目标是什么?也许你可以从另一个角度(双关语)来解决这个问题,比如随机生成边,或者角度,而不是顶点。请重新阅读并编辑这个问题以保持一致!事实并非如此,依我看:对于凸壳来说,很容易-,但我目前还不知道凸壳有一个等价的概念。问题是,在一般情况下,可能没有最小的凹壳,而最小的凸壳总是存在的。所以找到凹面船体是一个很奇怪的问题。。。