[C++] Is the Point Inside the Polygon?Language/C++2022. 9. 23. 22:19
Table of Contents
반응형
point-in-polygon (PIP)
“In computational geometry, the point-in-polygon (PIP) problem asks whether a given point in the plane lies inside, outside, or on the boundary of a polygon.” Wikipedia.
점이 다각형(Polygon) 내부에 있는지 확인하는 코드입니다.
struct Point
{
int x;
int y;
};
bool InsidePolygon(int nvert, Point polygon[], int pointx, int pointy)
{
int i, j = 0;
bool inside = false;
for (i = 0, j = nvert - 1; i < nvert; j = i++)
{
if (((polygon[i].y > pointy) != (polygon[j].y > pointy)) &&
(pointx < (polygon[j].x - polygon[i].x) * (pointy - polygon[i].y) / (polygon[j].y - polygon[i].y) + polygon[i].x)) {
inside = !inside;
}
}
return inside;
}
인수
- nvert : 다각형의 정점 수
- polygon[] : 다각형을 형성하는 점의 배열
- pointx : 점의 X 좌표
- pointy : 점의 Y 좌표
테스트
int main()
{
Point polygon[] = {{0, 0}, {50, 0}, {50, 50}, {0, 50}};
int n = sizeof(polygon) / sizeof(polygon[0]);
bool result = InsidePolygon(n, polygon, 0, 5);
result ? std::cout << "YES \n" : std::cout << "NO \n";
result = InsidePolygon(n, polygon, 60, 20);
result ? std::cout << "YES \n" : std::cout << "NO \n";
return 0;
}
결과
YES
NO
반응형
'Language > C++' 카테고리의 다른 글
[C++] 평균, 표준편차 구하기 (1) | 2022.09.23 |
---|---|
[C++] DLL 동적 로딩 (0) | 2022.09.14 |
[C++] string을 이용한 File Path 분리 방법 (0) | 2022.09.05 |
@고지니어스 :: 규니의 개발 블로그
IT 기술과 개발 내용을 포스팅하는 블로그
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!