Erlo

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

时间:2020-10-17   阅读:14次   来源:jQuery中文网
页面报错
点赞

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

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

偶数在外部;

#zs#*  * Created by PhpStorm.  * function: inArea  * Description: 判断点是否在多边形区域内  * User: Xiaoxie  * @param $x   * @param $y  * @param $arr 几何订单坐标  * @return int  *  #fzs# 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判断点是否在多边形区域内外的详细内容,更多请关注jquery中文网其它相关文章!

  • 本文转载于:csdn,如有侵犯,请联系jquerycn@qq.com删除
  • 您可能感兴趣的文章:

    评论留言

    还没有评论留言,赶紧来抢楼吧~~

    吐槽小黑屋()

    * 这里是“吐槽小黑屋”,所有人可看,只保留当天信息。

  • Erlo吐槽

    Erlo.vip2020-10-22 00:33:24Hello、欢迎使用吐槽小黑屋,这就是个吐槽的地方。
  • 返回顶部