Rumah >pangkalan data >tutorial mysql >Bagaimanakah saya boleh menentukan sama ada titik berada di dalam poligon dalam PHP?

Bagaimanakah saya boleh menentukan sama ada titik berada di dalam poligon dalam PHP?

Barbara Streisand
Barbara Streisandasal
2024-10-31 03:58:30187semak imbas

How can I determine if a point is inside a polygon in PHP?

Algoritma Titik-dalam-Polygon dalam PHP

Masalah:

Diberi tatasusunan koordinat latitud dan longitud yang mentakrifkan poligon dan titik dengan koordinat yang serupa, tentukan sama ada titik itu terletak dalam sempadan poligon.

Pelaksanaan:

PHP menyediakan fungsi untuk menyelesaikan masalah ini, menggunakan klasik algoritma titik dalam poligon. Fungsinya ialah:

<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)) &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;
}</code>

Penggunaan:

Untuk menggunakan fungsi, sediakan dengan parameter berikut:

  • $points_polygon: Bilangan bucu dalam poligon (tatasusunan berasaskan sifar).
  • $vertices_x: Tatasusunan koordinat-x untuk bucu poligon.
  • $vertices_y: Tatasusunan koordinat-y untuk bucu poligon.
  • $longitude_x: Koordinat-x bagi titik yang hendak diuji.
  • $latitud_y: Koordinat y bagi titik yang hendak diuji.

Fungsi mengembalikan benar jika titik itu terletak dalam poligon dan false sebaliknya.

Nota Tambahan:

PHP juga menyediakan kelas polygon.php yang mengandungi beberapa fungsi berkaitan poligon, termasuk isInside, yang boleh digunakan untuk menentukan sama ada titik berada dalam poligon.

Atas ialah kandungan terperinci Bagaimanakah saya boleh menentukan sama ada titik berada di dalam poligon dalam 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