我正在创建一个图形项目,我必须在某个时间点找到如果在多边形内部存在点x
,如果我将此点连接到此多边形的所有顶点,那么所有连接顶点的线段,此点x
完全位于Polygon内。
我想知道是否有一些着名的算法可以这样做,或者你们中的任何一个人都可以描述一种算法。
我正在寻找线性时间算法。
答案 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)
运行,因此 最佳的。