int pnpoly(int npol, float *xp, float *yp, float x, float y)
{
int i, j, c = 0;
for (i = 0, j = npol-1; i < npol; j = i++) {
if ((((yp[i] <= y) && (y < yp[j])) ||
((yp[j] <= y) && (y < yp[i]))) &&
(x < (xp[j] - xp[i]) * (y - yp[i])/(yp[j] - yp[i]) + xp[i]))
c = !c;
}
return c;
}
이 기능은 점이 다각형 내에 있는지 확인합니다. 네거티브 인 다각형 좌표는 어떻게 처리합니까? 예를 들어,다각형 내의 체크 포인트
float x[3] = { 0.16, 1.2, -10 };
float y[3] = { 1.8, 10, -5.5 };
나는 다각형 내의 유효한 지점을 확인 시도하고 0
테스트 포인트는 무엇입니까? 이 코드와 예제는 테스트 포인트 (-8.0, -4.0)와 (0, 6)을 찾는다. – kunthet
정확하게, 부정적인 코디가 여기에서 문제가되지 않는 것처럼 보입니다. 알고리즘 작동 방식을 이해합니까? – fsw
float x [3] = {-10, 0.17, 10}; float y [3] = {-5.56, 1.85, 1.69}; 테스트 포인트 (2.5, -1.6)는 0을 반환합니다. – user3266188