您好,登錄后才能下訂單哦!
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進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。