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

PHP判断点是否在多边形区域内外,第1张

概述PHP判断点是否在多边形区域内外 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 ($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判断点是否在多边形区域内外全部内容,希望文章能够帮你解决PHP判断点是否在多边形区域内外所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1165282.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存