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

互联网 19-12-17
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判断点是否在多边形区域内外的详细内容,更多内容请关注技术你好其它相关文章!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
标签: PHP
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:php+js+ajax实现简单的回帖功能

相关资讯