我們如何使用 PHP 決定一個點是否位於多邊形內?

DDD
發布: 2024-10-25 03:38:02
原創
695 人瀏覽過

How can we determine if a point lies within a polygon using PHP?

在多邊形內定位點的PHP 實現

問題:

問題:

給定一個數組經緯度座標代表一個多邊形和一個座標相似的點,如何判斷該點是否在多邊形內?


解決方案:


; <br>$vertices_x = array(37.628134, 37.629867, 37.62324x37.6232, 4x3); 🎜>$vertices_y = array(-77.458334,-77.449021,-77.445416,-77.457819); // 多邊形頂點的y 座標$points_poly​​ngon = count($11%s //x; longitude_x = $_GET["longitude"]; // 測試點的x座標<p>$latitude_y = $_GET["latitude"]; // 測試點的y座標<br><br>if (is_in_polygon($points_polygon , $vertices_x, $vertices_y, $longitude_x, $latitude_y)){<br> echo "點在多邊形內!";</p> }<p>else echo "點不在多邊形內";<br><br>function is_in_polygon($points_polygon, $vertices_x, $vertices_y, $longitude_x, $latitude_y)<br>{</p> $i = $j = $c = 0;<pre class="brush:php;toolbar:false">if ( (($vertices_y[$i]  >  $latitude_y != ($vertices_y[$j] > $latitude_y)) &amp;&amp;
 ($longitude_x < ($vertices_x[$j] - $vertices_x[$i]) * ($latitude_y - $vertices_y[$i]) / ($vertices_y[$j] - $vertices_y[$i]) + $vertices_x[$i]) ) )
   $c = !$c;
登入後複製
for ($i = 0, $j = $points_obgon ; $i

}
回傳$c;}

在此PHP 程式碼中,is_in_polygon 函數迭代多邊形的每個邊,檢查該點是否位於多邊形的「一側」其中一個頂點的y 座標大於測試點的y 座標,而另一個頂點的y 座標小於測試點的y 座標。如果這兩個條件都為真,則函數將檢查測試點的 x 座標是否小於兩個頂點之間的線段。如果是,則表示跨越了多邊形邊界,並在計數器中加或減 1。最後,如果該計數器非零,則表示測試點位於多邊形內。

其他資源:

如需進一步支持,請考慮使用Polygon.php類,它提供了一個附加函數isInside,用於確定點是否在多邊形內。

以上是我們如何使用 PHP 決定一個點是否位於多邊形內?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!