判断点是否在多边形内(多边形问题:一)cocos2d-x lua

写在前面:最近在做控制人物在地图上行走寻路时遇到了这样的问题,延伸出:1判断点在多边形内 ,2多边形内随机产生一点 ,3多边形外一点到该多边形最近点的坐标。参考网上,慢慢整理一下。都是实测过,用在自己项目里的代码。不定时更新。

下面是:判断点是否在多边形内

方法一:射线法

思路:
1,以测试点向右或左向无穷点左射线,若射线与多边形交点个数是奇数个,则点在内部;若交点个数是偶数个,则点在外部;(这里使用左无穷点)
2,若是凸多边形,条件1完全正确,若是凹多边形,则需要多考虑几种特殊情况
代码如下:(凹凸多边形都可以

function UIUtil:bPointInPolygen(posList, posTarget) -- posList:多边形顶点坐标(按照顺时针或逆时针排序), posTarget:要判断点的坐标 
    local polygenSides = #posList -- 多边形边数
    local flag = 0 -- 与多边形交点个数
    for i = 1, polygenSides do 
        local Xa, Ya = posList[i].x, posList[i].y -- 首坐标
        local Xb, Yb = posList[i].x, posList[i].y -- 尾坐标
        local Xp, Yp = posTarget.x, posTarget.y -- 目标坐标
        if posList[i + 1] then 
            Xb
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值