给定一组点S (x, y, z)
。如何找到convex hull
那些点?
我试着从这里理解算法,但没有得到太多。
它说:
首先将所有点投影到 xy 平面上,然后通过选择 y 坐标最高的点找到肯定在船体上的边缘,然后进行一次礼品包装迭代以确定边缘的另一个端点。这是不完整船体的第一部分。然后我们迭代地构建船体。考虑这第一条边;现在找到另一个点以形成船体的第一个三角形面。我们通过选择一个点来做到这一点,使得所有其他点都位于这个三角形的右侧,当正确查看时(就像在礼品包装算法中,我们选择了一条边,使得所有其他点都位于三角形的右侧那个边缘)。现在船体中有三个边缘;继续,我们任意选择其中一个,并再次扫描所有点以找到另一个点以使用该边构建一个新三角形,并重复此操作直到没有剩余边为止。(当我们创建一个新的三角形面时,我们将两条边添加到池中;但是,我们必须首先检查它们是否已经添加到船体中,在这种情况下我们忽略它们。)有 O(n) 个面,并且每次迭代都需要 O(n) 时间,因为我们必须扫描所有剩余的点,给出 O(n2)。
谁能以更清晰的方式解释它或提出更简单的替代方法。