[英]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.