给定点位于多边形内部或外部

时间:2013-12-03 11:09:01

标签: algorithm geometry

我正在尝试这个问题并找到了解决方案:

在每个点的右侧绘制一条水平线并将其延伸到无穷大

  

1)计算线与多边形边相交的次数   2)如果交叉点的数量是奇数或者,则点在多边形内部      点位于多边形的边缘。如果没有条件成立,那么      点在外面。   polygon

但我认为有一个简单的解决方案:

  

(所有方面的顺序相同)
      找到3个点的矢量积(每边的给定点和终点)

if all products are > or < 0 : point lies inside polygon or on boundary
else outside

我的解决方案不是更好更有效吗? 有没有比这更简单的算法?

2 个答案:

答案 0 :(得分:2)

使用叉积检查的算法仅适用于凸多边形。对于非凸多边形,很容易找到一个不起作用的例子。在给定的多边形中尝试任意点cde

答案 1 :(得分:0)

您建议的算法仅适用于凸多边形和&amp;事实上,用于计算凸包,但凹陷会失败,这再次通过凸包算法的正确性得到证实。

使用此算法的另一种方法是将多边形划分为凸多边形,然后将算法应用于分割的部分,以查看该点是否在其中任何一个内部

Polygon triangulation