Rumah  >  Artikel  >  pangkalan data  >  Bagaimanakah kita boleh menentukan sama ada titik terletak dalam poligon menggunakan PHP?

Bagaimanakah kita boleh menentukan sama ada titik terletak dalam poligon menggunakan PHP?

DDD
DDDasal
2024-10-25 03:38:02696semak imbas

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

Pelaksanaan PHP untuk Mencari Titik Dalam Poligon

Soalan:

Diberikan pelbagai koordinat latitud dan longitud yang mewakili poligon dan titik dengan koordinat yang serupa, bagaimana kita boleh menentukan sama ada titik itu terletak dalam poligon?

Penyelesaian:


$vertices_x = tatasusunan(37.628134, 37.629867, 37.62324, 37.622424); // koordinat x bagi bucu poligon
$vertices_y = tatasusunan(-77.458334,-77.449021,-77.445416,-77.457819); // koordinat y bucu poligon
$polygon_titik = kiraan($pucuk_x) - 1; // bilangan bucu poligon
$longitude_x = $_GET["longitud"]; // koordinat x bagi titik ujian
$latitud_y = $_GET["latitud"]; // koordinat y bagi titik ujian

if (is_in_polygon($points_polygon, $vertices_x, $vertices_y, $longitude_x, $latitud_y)){
echo "Titik berada dalam poligon!";
}
yang lain gema "Titik bukan dalam poligon";

fungsi ialah_dalam_poligon($polygon_titik, $vertices_x, $vertices_y, $longitud_x, $latitud_y)
{
$i = $j = $c = 0;
untuk ($i = 0, $j = $points_polygon ; $i < $points_polygon; $j = $i ) {

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;

}
return $c;
}

Dalam kod PHP ini, fungsi is_in_polygon berulang melalui setiap tepi poligon, menyemak sama ada titik itu berada di "sisi" poligon di mana koordinat-y bagi satu bucu adalah lebih besar daripada koordinat-y titik ujian dan koordinat y bucu yang satu lagi adalah kurang daripada koordinat y titik ujian. Jika kedua-dua keadaan ini adalah benar, fungsi menyemak sama ada koordinat-x bagi titik ujian adalah kurang daripada segmen garisan antara dua bucu. Jika ya, ia menandakan persilangan sempadan poligon dan menambah atau menolak 1 daripada pembilang. Akhir sekali, jika pembilang itu bukan sifar, ini menunjukkan bahawa titik ujian berada dalam poligon.

Sumber Tambahan:

Untuk sokongan lanjut, pertimbangkan untuk menggunakan polygon.php kelas, yang menyediakan fungsi tambahan, isInside, untuk menentukan sama ada titik berada dalam poligon.

Atas ialah kandungan terperinci Bagaimanakah kita boleh menentukan sama ada titik terletak dalam poligon menggunakan PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn