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

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度的时候,点在多边形以内。




附 :  凹多边形判别

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



附 :  凹多边形分割为多个凸多边形


  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值