繁体   English   中英

查找点是否在由一组点生成的凸包中

[英]Finding Whether A Point Is In The Convex Hull Generated By A Set Of Points

我需要从一组点计算凸包。

点的尺寸通常为10〜30D

套装的尺寸很小,通常为2〜10

我需要的任务是判断一个点是否在根据该点集构造的凸包内。

有什么算法可以执行该操作,或者我可以使用任何现有的库?

注意:此原始算法草图需要修改,可能输出错误结果(请参见下面的注释)

以下是针对您的问题的多种可能解决方案之一。

令D-您的空间尺寸,N-您的点数。 您可以使用以下算法:

您应该为空间的每个坐标平面计算投影凸包。 您将获得D个凸包。 此步骤的复杂度为D * N * log N

然后,应该测试点的每个投影是否位于每个适当的凸包内。 此步骤的复杂度为D * N(使用本机算法)

总体执行复杂度= D * N * LogN。

注意:该算法的基本思想是通过对点的位置进行测试,将计算出的凸包分解为平面。

PS当然,您可能会得到一些退化的情况,其中凸包可以是线段或仅是点。 但是这些情况可以缓和

PPS此算法仅允许检查点是否位于凸包内或其边界上

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM