Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance 确定点是否在O(对数n)时间内位于凸包中_Performance_Algorithm_Computational Geometry_Point_Convex Hull - Fatal编程技术网

Performance 确定点是否在O(对数n)时间内位于凸包中

Performance 确定点是否在O(对数n)时间内位于凸包中,performance,algorithm,computational-geometry,point,convex-hull,Performance,Algorithm,Computational Geometry,Point,Convex Hull,我研究了几种确定点是否位于凸包中的算法,但我似乎找不到任何算法可以在O(logn)时间内完成这一任务,我自己也无法想出一种算法。假设a[]是一个包含凸包顶点的数组,我可以预处理这个数组吗,使检查新点是否在O(logn)时间内位于凸包内成为可能。看起来您可以 在a[]中按相对于其中一个顶点的极轴角度对顶点进行排序(称为a)。O(N logn),类似于凸包计算 读取点,确定其极角。O(1) 找到两个相邻顶点,其中一个顶点的极角应小于步骤2中的点,另一个顶点的角度应大于(B和C)。O(logn),二进

我研究了几种确定点是否位于凸包中的算法,但我似乎找不到任何算法可以在O(logn)时间内完成这一任务,我自己也无法想出一种算法。假设a[]是一个包含凸包顶点的数组,我可以预处理这个数组吗,使检查新点是否在O(logn)时间内位于凸包内成为可能。

看起来您可以

  • a[]
    中按相对于其中一个顶点的极轴角度对顶点进行排序(称为a)。O(N logn),类似于凸包计算
  • 读取点,确定其极角。O(1)
  • 找到两个相邻顶点,其中一个顶点的极角应小于步骤2中的点,另一个顶点的角度应大于(B和C)。O(logn),二进制搜索
  • 然后是简单的几何图形:在A、B、C的点之间绘制三角形,并检查步骤2中的点是否位于内部。O(1)

  • 你也可以在数学网站上问这个问题。听起来你更感兴趣的是算法本身而不是实现。在这种情况下,1、2和3为pt。1被测点和pt。第2步和第3步是满足第3步条件的nrighbouring点吗?你能解释一下第3步是如何在O(logn)时间内完成的吗,但是一个点仍然有可能不在连接相邻点的线上,仍然在凸壳中,就像我误解了你的问题一样。你的意思是说点可以位于凸包内吗?