栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > PHP

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

PHP 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力
PHP判断点是否在多边形区域内外;

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

偶数在外部;

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判断点是否在多边形区域内外的详细内容,更多请关注考高分网其它相关文章!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/263465.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号