我想制作一组2D点(在python中)的凸包。我发现了几个有帮助的例子,但我有一个额外的功能,我想我无法实现。我想要做的是创建凸包,但如果它们足够“靠近”边界,则允许它拾取内部点。见下图 - >如果theta< x度,然后该内部点被添加到船体。
显而易见,这可以使事情变得更复杂,正如我从我的想法和测试中发现的那样。例如,如果添加了内部点,则可能允许添加另一个内部点。
速度并不是真正的问题,因为我将要使用的点数相对较少。我宁愿拥有更强大的算法,也需要快速算法。
我想知道是否有人知道任何这样的例子,或者可以指出我在哪里开始正确的方向。感谢。
答案 0 :(得分:2)
Concave hull可能是你正在寻找的东西,尽管据我所知它没有使用角度。 the LOCAL project使用的算法似乎使用k个最近邻居。
答案 1 :(得分:0)
你可以首先计算凸包,然后在看到任何边缘被破坏以包括内部点的情况下围绕该边缘破坏。
答案 2 :(得分:0)
您正在寻找的概念可能是字母形状。调整alpha,你承认你的凹形船体中有更多或更少的点。 Look at Edelsbrunner algorithm用于搜索alpha形状。