Heim  >  Artikel  >  Datenbank  >  Wie kann man mit PHP feststellen, ob ein Punkt innerhalb eines Polygons liegt?

Wie kann man mit PHP feststellen, ob ein Punkt innerhalb eines Polygons liegt?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-25 01:07:02291Durchsuche

How to Determine if a Point Lies Inside a Polygon Using PHP?

Punkte innerhalb eines Polygons mit PHP finden

Bestimmen, ob ein Punkt innerhalb eines Polygons liegt, kann eine häufige Aufgabe bei geometrischen Berechnungen sein. So erreichen Sie dies in PHP:

Wir beginnen mit einem Polygon, das als Array von Eckpunkten mit Breiten- und Längengradkoordinaten dargestellt wird. Zusätzlich haben wir einen Punkt mit ähnlichen Koordinaten, den wir prüfen möchten, ob er innerhalb des Polygons liegt.

Um diese Prüfung durchzuführen, verwenden wir eine Funktion, die ursprünglich in einer anderen Sprache geschrieben und in PHP konvertiert wurde:

<code class="php">$isInside = is_in_polygon(
    count($vertices_x) - 1,
    $vertices_x,
    $vertices_y,
    $longitude_x,
    $latitude_y
);</code>

Die Funktion is_in_polygon implementiert den folgenden Algorithmus:

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

Wenn die Variable $isInside auf true gesetzt ist, liegt der Punkt innerhalb des Polygons; andernfalls liegt es außerhalb.

Zusätzliche Ressourcen:

Für weitere Polygon-bezogene Funktionen sollten Sie die Verwendung der Klasse polygon.php in Betracht ziehen. Initialisieren Sie es mit Ihren Polygonscheitelpunkten und rufen Sie die Funktion isInside mit Ihrem Testpunkt auf, um eine andere Lösung für das Problem zu erhalten.

Das obige ist der detaillierte Inhalt vonWie kann man mit PHP feststellen, ob ein Punkt innerhalb eines Polygons liegt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn