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

DDD
Lepaskan: 2024-10-25 03:38:02
asal
695 orang telah melayarinya

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;
Salin selepas log masuk

}
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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!