使用指定的属性确定多边形

时间:2011-12-02 15:52:17

标签: c++ algorithm polygon

我正在创建一个图形项目,我必须在某个时间点找到如果在多边形内部存在点x,如果我将此点连接到此多边形的所有顶点,那么所有连接顶点的线段,此点x完全位于Polygon内。

我想知道是否有一些着名的算法可以这样做,或者你们中的任何一个人都可以描述一种算法。

我正在寻找线性时间算法。

1 个答案:

答案 0 :(得分:1)

您正在询问如何计算星形多边形的内核。 Lee和Preparata在1979年题为An Optimal Algorithm for Finding the Kernel of a Polygon的论文中解决了这个问题。从他们的摘要:

  

具有K(P)个顶点的简单多边形P的内核n是   P的内部点,P的所有顶点都可见   同样,K(P)是适当半平面的交集   由多边形的边确定。虽然知道要找到   n通用半平面的交集需要时间O(n log n),我们   表明人们可以利用半平面的排序   对应于多边形边缘的序列来获得a   内核查找算法,它在时间O(n)运行,因此   最佳的。