您的位置 首页 技术

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

PHP判断点是否在多边形区域内外; 根据数学知识的射线法,射线与几何多边形相交的点的个数为奇数则是在几何内部; 偶数在外部; /** * Created by PhpStorm. …

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; //在内

29d36d286d4e908f40eb121030c365b.png

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

以上就是PHP判断点是否在多边形区域内外的详细内容,更多请关注24课堂在线网其它相关文章!

本文来自网络,不代表24小时课堂在线立场,转载请注明出处:https://www.24ketang.cn/16240.html

为您推荐

返回顶部