在O(n)时间内计算星形多边形的凸包

时间:2013-11-12 17:33:19

标签: algorithm computational-geometry convex-hull

  

如果阴影中的P内部存在点p,则多边形P星形P的边界上的每个点的em>。所有这些点p的集合称为P内核

例如,在五角星形中,如果光源被认为是无穷大,则可以从位于P边界上的所有点的阴影到达中心点。星形多边形不一定是星形。

给定由其顶点以逆时针顺序指定的n-顶点,星形多边形P,如何在线性时间内计算该多边形的凸包。

我对这个问题一无所知。我能想到的算法是O(n * log(n))。我无法理解如何使用这些额外的信息。

1 个答案:

答案 0 :(得分:1)

我假设这是某种类型的家庭作业,无论是分配给一个班级还是为了你自己的学习,所以我只是给你一个提示:

这里的关键是逆时针顺序,或者更确切地说,顶点是一致顺序。

给定三个连续顶点p 1 ,p 2 和p 3 ,考虑由下式定义的两个向量:

V 1 =(p 1 - p 2 )和
V 2 =(p 3 - p 2 )。

我们对交叉积V 1 x V 2 了解多少?如果p 2 在多边形的边界上而不是在中心,那么该值将如何不同?对此的正确答案应该将我们的顶点分为两类。这些类对顺时针而不是逆时针顺序有何不同?