用PHP 找出多邊形內的點
問題:
問題:給定一個由下式定義的多邊形一個經緯度座標數組和一個已知座標的點(頂點),判斷該頂點是否位於多邊形內。
解:<code class="php">function is_in_polygon($points_polygon, $vertices_x, $vertices_y, $longitude_x, $latitude_y) { $i = $j = $c = 0; for ($i = 0, $j = $points_polygon ; $i < $points_polygon; $j = $i++) { if ( (($vertices_y[$i] > $latitude_y != ($vertices_y[$j] > $latitude_y)) && ($longitude_x < ($vertices_x[$j] - $vertices_x[$i]) * ($latitude_y - $vertices_y[$i]) / ($vertices_y[$j] - $vertices_y[$i]) + $vertices_x[$i]) ) ) $c = !$c; } return $c; }</code>
該函數迭代多邊形的頂點,計算由該頂點和後續頂點形成的線與穿過多邊形的水平線的交點點進行測試。如果所有線的交點都位於頂點的左側,則該點位於多邊形外部;
<code class="php">$vertices_x = array(37.628134, 37.629867, 37.62324, 37.622424); $vertices_y = array(-77.458334,-77.449021,-77.445416,-77.457819); $points_polygon = count($vertices_x) - 1; $longitude_x = $_GET["longitude"]; $latitude_y = $_GET["latitude"]; if (is_in_polygon($points_polygon, $vertices_x, $vertices_y, $longitude_x, $latitude_y)){ echo "Is in polygon!"; } else echo "Is not in polygon";</code>
示例:
附加說明:涉及多邊形的更複雜操作,考慮使用線上提供的Polygon.php 類別。以上是如何使用 PHP 決定點是否位於多邊形內?的詳細內容。更多資訊請關注PHP中文網其他相關文章!