PHP 语言作为当今最热门的网站程序开发语言,它具有成本低、速度快、可移植性好、 内置丰富的函数库等优点,因此被越来越多的企业应用于网站开发中。但随着互联网的不断更新换代,PHP语言也出现了不少问题。
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的特性包括:
1、PHP独特的语法混合了 C、Java、Perl 以及 PHP 自创新的语法。
2、PHP可以比CGI或者Perl更快速的执行动态网页——动态页面方面,与其他的编程语言相比,PHP是将程序嵌入到HTML文档中去执行,执行效率比完全生成htmL标记的CGI要高许多;PHP具有非常强大的功能,所有的CGI的功能PHP都能实现。
3、PHP支持几乎所有流行的数据库以及操作系统。
4、PHP可以用C、C++进行程序的扩展。
以上就是PHP判断点在不在多边形区域内外的方法的详细内容,更多请关注亿速云其它相关文章!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。