Python - 具有一些允许内部点的凸壳

时间:2011-04-06 01:35:38

标签: python algorithm geometry convex-hull

我想制作一组2D点(在python中)的凸包。我发现了几个有帮助的例子,但我有一个额外的功能,我想我无法实现。我想要做的是创建凸包,但如果它们足够“靠近”边界,则允许它拾取内部点。见下图 - >如果theta< x度,然后该内部点被添加到船体。

enter image description here

显而易见,这可以使事情变得更复杂,正如我从我的想法和测试中发现的那样。例如,如果添加了内部点,则可能允许添加另一个内部点。

速度并不是真正的问题,因为我将要使用的点数相对较少。我宁愿拥有更强大的算法,也需要快速算法。

我想知道是否有人知道任何这样的例子,或者可以指出我在哪里开始正确的方向。感谢。

3 个答案:

答案 0 :(得分:2)

Concave hull可能是你正在寻找的东西,尽管据我所知它没有使用角度。 the LOCAL project使用的算法似乎使用k个最近邻居。

答案 1 :(得分:0)

你可以首先计算凸包,然后在看到任何边缘被破坏以包括内部点的情况下围绕该边缘破坏。

答案 2 :(得分:0)

您正在寻找的概念可能是字母形状。调整alpha,你承认你的凹形船体中有更多或更少的点。 Look at Edelsbrunner algorithm用于搜索alpha形状。