您的位置:首页 > 其它

判断点是否在一个任意多边形内几种方法

2015-12-11 18:46 423 查看
1.多边形面积算法(非凹多边形,凹多边形需要切割为凸多边形):
     设要检测的点为P点。用P点连接多边形各顶点,假如P点在多边形以内,则顶点与P组成的三角形正好填充此多边形。反之,则不能。此时使用多边形面积计算公式,使P点作为参考点(a,b,c,.......,n为多边形定点)则有:

   S = 0.5 * ( (a.x-p.x)*(a.y-p.y)-(b.x-p.x)*(b.y-p.y) +(b.x-p.x)*(b.y-p.y)-(c.x-p.x)*(c.y-p.y) +......... +
(n.x-p.x)*(n.y-p.y)-(a.x-p.x)*(a.y-p.y) )

   如果P点不在多边形以内,则每个三角形的相对面积符号不会一致。由于0.5并不会影响我们的运算结果   所以只需要取每个三角形面积的符号(a.x-p.x)*(a.y-p.y)-(b.x-p.x)*(b.y-p.y)  如果一致则在多边形以内,反之则不在多边形以内。



2.水平/垂直交叉点数

    如下左图,适用于所有多边形,增加一个通过测量点的横线(或任意直线),此直线与多边形边缘的交点,当测量点左右的交点都为奇数时,点在多边形以内。反之则不在。

但是如果测量点处于多边形边缘或顶点或下右3图的情况下时,结果将不准确,不过我们可以根据不同的情况作特殊处理来保证结果的正确性。


   


3.角度计算方式(非凹多边形,凹多边形需要切割为凸多边形)

    设测量点为P,对于凸多边形,P到连续两点形成的夹角的角度和正好是360度(如下图),则可以得出结论,当角度和为360度的时候,点在多边形以内。



附 :  凹多边形判别

     在几何学中,对凸边形的定义是对于任意一边,不在这个边上的顶点都在边的一侧。



附 :  凹多边形分割为多个凸多边形
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  算法