• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

PHP判断点是否在多边形区域内外

php 搞代码 3年前 (2022-01-21) 14次浏览 已收录 0个评论

PHP判断点是否在多边形区域内外;

根据数学知识的射线法,射线与几何多边形相交的点的个数为奇数则是在几何内部;

偶数在外部;

/** * Created by PhpStorm. * function: inArea * Description: 判断点是否在多边形区域内 * User: Xiaoxie * @param $x  * @param $y * @param $arr 几何订单坐标 * @return int * */public function inArea($x,$y,$arr){    //点的数量    $count = count($arr);    $n = 0; //点与线相交的个数    $bool = 0;//外    for ($i = 0, $j = $count - 1; $i < $count; $j = $i, $i++) {        //两个点一条线 取出两个连接点的定点        $px1 = $arr[$i][0];        $py1 = $arr[$i][1];        $px2 = $arr[$j][0];        $py2 = $arr[$j][1];        //$x的水平位置画射线        if($x>=$px1 || $x>= $px2)        {            //判断$y 是否在线的区域            if(($y>=$py1 && $y<=$py2) || ($y>=$py2 && $y<= $py1)){                      if (($y == $py1 && $x == $px1) || ($y == $py2 && $x == $px2)) {                        #如果$x的值和点的坐标相同                        $bool = 2;//在点上                        return $bool;                     }else{                        $px = $px1+($y-$py1)/($py2-$py1)*($px2-$px1) ;                        if($px ==$x)                        {                            $bool = 3;//在线上                        }elseif($px< $x){                            $n++;                        }                     }            }        }     }    if (<a style="color:transparent">来@源gao*daima.com搞@代#码网</a><strong>搞gaodaima代码</strong>$n%2 != 0) {        $bool = 1;    }    return $bool;}

测试数组

$arr = [    ['9.4','12.04'],    ['6.68','8.61'],    ['9.05','6.06'],    ['6.24','3.87'],    ['10.02','2.55'],     ['14.06','4.13'],     ['16.35','7.56'],     ['11.69','8.35'],]; $x =15.73;$y = 5.62;//在外$x = 9.97;$y = 4.96; //在内

 

更多PHP相关知识,请访问PHP教程!

以上就是PHP判断点是否在多边形区域内外的详细内容,更多请关注搞代码gaodaima其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:PHP判断点是否在多边形区域内外
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址