判断点及线段是否在多边形内

昨天小学了一点计算几何学的内容,想把它记下来,以便以后翻阅。

1.判断点是否在多边形中

先说一下思路:

判断点(P)是否在多边形中,可以先以点p向左引一条射线(L),我们知道,从射线L左端的无穷远处开始一直到点P的过程中,当遇到多边形的第一个交点时L进入了多边形,当遇到第二个交点时,L穿出了多边形。。。。。。。。。可知,规律如下,当在遇到P点之前L与多边形的交点为偶数个时,说明p点不在多边形内,当在遇到p点之前L与多边形得交点为奇数个时,说明P点在多边形内。

但是,这个规律并不具有普遍性,还有几种特殊情况不满足此规律,需要额外考虑:

(1)当点P在多边形的某条边上时,可以直接判断其在多边形中。

(2)对于多边形的水平边不作考虑。

(3)对于多边形的顶点与L相交,则需要判断该顶点是否为顶点所在的边的那个纵坐标较大的顶点,如果是较大的那个顶点与L相交则计数,否则忽略。

伪代码如下:

?
........fun()
{
      int count=0;
      //以P为端点从右向左引一条射线L 
      for (多边形的每一条边S) //遍历多边形的每一条边 
      {
           if (P在边S上)
           {
                return ture; 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值