PHP判断点是否在多边形区域内外
PHP判断点是否在多边形区域内外
0 条 浏览次数
1
PHP判断点是否在多边形区域内外;根据数学知识的射线法,射线与几何多边形相交的点的个数为奇数则是在几何内部;偶数在外部;/** * Created by PhpStorm. * function: inArea * Description: 判断点是否在多边形区域内 * User: Xiaoxie * @param $x * @param $y * @pa
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判断点是否在多边形区域内外的详细内容,更多请关注学知网其它相关文章!
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。
2. 本站不保证所提供所有下载的资源的准确性、安全性和完整性,资源仅供下载学习之用!如有链接无法下载、失效或广告,请联系客服处理,有奖励!
3. 您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容资源!如用于商业或者非法用途,与本站无关,一切后果请用户自负!
4. 如果您也有好的资源或教程,您可以投稿发布,成功分享后有RB奖励和额外RMB收入!
磊宇堂正在使用的服务器 维护管理由磊宇云服务器提供支持
磊宇堂 » PHP判断点是否在多边形区域内外