判断点是否在多边形内

本文详细介绍了如何判断一个点是否位于多边形内部的算法,通过发射X轴方向的射线并计算与多边形边的交点个数,奇数表示点在多边形内,偶数则在多边形外。文章还讨论了特殊情况的处理,如点与边的相对位置,以及简化计算的方法。
摘要由CSDN通过智能技术生成

          很常用的算法。此算法网上太多,大部分是抄来抄去的,光有代码,没什么解释;或者一堆解释,很深奥,不宜懂。

           综上,正好项目中有一个需求,便花了点时间搞定了,趁着现在有时间,总结一下。

点在多边形外

        

好了,有上面2张图就足够了。

求点是否在多边形内的算法,可以转换成,从当前点P(x',y')发射X轴方向射线(y轴中的值始终相等)与多边形的交点的个数,认真分析会找到与多边形交点个数为奇数就在多边形内,为偶数就在多边形外。

我们通过遍历多边形中的i和(i+1)中点构成的线段与 P(x',y')点的交点个数就可以了。

我们再简化一下,如图2所示,P(x',y')与P1(x1,y1),P2(x2,y2)的交点(x,y)有 θ1 = θ2,即   (y-y1)/(x-x1) = (y2-y1)/(x2-x1),这样就可以求出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值