> 데이터 베이스 > MySQL 튜토리얼 > PHP를 사용하여 점이 다각형 내에 있는지 어떻게 확인할 수 있나요?

PHP를 사용하여 점이 다각형 내에 있는지 어떻게 확인할 수 있나요?

DDD
풀어 주다: 2024-10-25 03:38:02
원래의
785명이 탐색했습니다.

How can we determine if a point lies within a polygon using 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><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">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;
로그인 후 복사

}
반환 $c;
}

이 PHP 코드에서 is_in_polygon 함수는 다각형의 각 가장자리를 반복하여 점이 다각형의 "측면"에 있는지 확인합니다. 여기서 한 꼭지점의 y 좌표는 테스트 포인트의 y 좌표보다 크고 다른 꼭지점의 y 좌표는 테스트 포인트의 y 좌표보다 작습니다. 이 두 조건이 모두 참인 경우 함수는 테스트 점의 x 좌표가 두 꼭지점 사이의 선분보다 작은지 확인합니다. 그렇다면 이는 다각형 경계의 교차를 의미하며 카운터에 1을 더하거나 뺍니다. 마지막으로 해당 카운터가 0이 아닌 경우 테스트 포인트가 다각형 내에 있음을 나타냅니다.

추가 리소스:

추가 지원을 받으려면 Polygon.php 사용을 고려하세요. 점이 다각형 내에 있는지 확인하기 위한 추가 기능인 isInside를 제공하는 클래스입니다.

위 내용은 PHP를 사용하여 점이 다각형 내에 있는지 어떻게 확인할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 추천
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿