집 >데이터 베이스 >MySQL 튜토리얼 >PHP를 사용하여 점이 다각형 내에 있는지 어떻게 확인할 수 있나요?
다각형 내의 점 찾기를 위한 PHP 구현
질문:
다음의 배열이 주어졌습니다. 다각형과 유사한 좌표를 가진 점을 나타내는 위도 및 경도 좌표, 점이 다각형 내에 있는지 어떻게 확인할 수 있습니까?
해결책:
<br>$vertices_x = 배열(37.628134, 37.629867, 37.62324, 37.622424); // 다각형 정점의 x 좌표<br>$vertices_y = array(-77.458334,-77.449021,-77.445416,-77.457819); // 다각형 정점의 y 좌표<br>$points_polygon = count($vertices_x) - 1; // 다각형 꼭지점 수<br>$longitude_x = $_GET["longitude"]; // 테스트 포인트의 x 좌표<br>$latitude_y = $_GET["latitude"]; // 테스트 포인트의 y 좌표</p> <p>if (is_in_polygon($points_polygon, $vertices_x, $vertices_y, $longitude_x, $latitude_y)){<br> echo "포인트가 폴리곤 내에 있습니다!";<br> }<br>else echo "점이 다각형 내에 없습니다";</p> <p>function is_in_polygon($points_polygon, $vertices_x, $vertices_y, $longitude_x, $latitude_y)<br>{<br> $i = $j = $c = 0;<br> for ($i = 0, $j = $points_polygon ; $i < $points_polygon; $j = $i ) {</p><pre class="brush:php;toolbar:false">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;
}
반환 $c;
}
이 PHP 코드에서 is_in_polygon 함수는 다각형의 각 가장자리를 반복하여 점이 다각형의 "측면"에 있는지 확인합니다. 여기서 한 꼭지점의 y 좌표는 테스트 포인트의 y 좌표보다 크고 다른 꼭지점의 y 좌표는 테스트 포인트의 y 좌표보다 작습니다. 이 두 조건이 모두 참인 경우 함수는 테스트 점의 x 좌표가 두 꼭지점 사이의 선분보다 작은지 확인합니다. 그렇다면 이는 다각형 경계의 교차를 의미하며 카운터에 1을 더하거나 뺍니다. 마지막으로 해당 카운터가 0이 아닌 경우 테스트 포인트가 다각형 내에 있음을 나타냅니다.
추가 리소스:
추가 지원을 받으려면 Polygon.php 사용을 고려하세요. 점이 다각형 내에 있는지 확인하기 위한 추가 기능인 isInside를 제공하는 클래스입니다.
위 내용은 PHP를 사용하여 점이 다각형 내에 있는지 어떻게 확인할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!