C 언어 로 이 루어 진 PNPoly 알고리즘 코드 예
1875 단어 C 언어PNPoly 알고리즘
int pnpoly(int nvert, float *vertx, float *verty, float testx, float testy)
{
int i, j, c = 0;
for (i = 0, j = nvert-1; i < nvert; j = i++) {
if ( ((verty[i]>testy) != (verty[j]>testy)) &&
(testx < (vertx[j]-vertx[i]) * (testy-verty[i]) /
(verty[j]-verty[i]) + vertx[i]) )
c = !c;
}
return c;
}
그 중에서 nvert 는 다각형 정점 의 개수 이 고 vertx 와 verty 는 각각 다각형 정점 횡,세로 좌표 의 배열 이 며 textx 와 testy 는 측정 점 의 좌표 이다.이 알고리즘 은 W.Randolph Franklin 이 제기 한 것 이다.Jordan curve theorem 에 따 르 면 다각형 은 평면 을 내외 두 구역 으로 나 누고 측정 점 이 다각형 내부 에 있다 고 가정 하면 측정 점 에서 하나의 방사선 을 끌 어 내 면 반드시 다각형 과 적어도 하나의 교점 이 있 을 것 이다.이 방사선 은 다각형 과 처음 교차 할 때 다각형 을 뛰 쳐 나 가 고 두 번 째 교차 할 때 다각형 에 들 어 갈 것 이다.이런 유추 에 따 르 면 방사선 과 다각형 에 홀수 교점 이 있 으 면 이 점 은 다각형 내부 에 있 고 그렇지 않 으 면 외부 에 있다.PNPoly 알고리즘 은 바로 측정 대기 점 에서 수평 에서 오른쪽으로 방사선 을 끌 어 내 고 다각형 과 의 교점 개 수 를 계산한다.이 코드 설명:for(i=0,j=nvert-1;i < nvert; j=i++)순환 의 의 미 는 j=i C 1 을 처음부터 끝까지 i=0 이면 j=nvert C 1 로 다각형 의 각 변 을 차례대로 검사 하 는 것 이다.다음 포 인 트 는 조건문,(verty[i]>testy)!=(verty[j]>testy)는 이해 하기 쉽다.바로 한 변 의 두 정점 이 각각 측정 대기 점 의 위 와 아래 에 있다 는 것 이다.이 문 구 를 통 해 측정 대기 점 에서 오른쪽으로 끌 어 내 는 방사선 이 이 변 과 교차 할 수 있다 는 것 을 알 수 있다.
구체 적 인 판단 은 해석 기하학 에 맡 겨 야 합 니 다.건 계 는 이 변 이 있 는 직선 방정식 을 쓴다.
변형:
측정 대기 점 좌 표를 대 입 하여 도형 관계 에 따라 이 부등식 을 얻 을 수 있 습 니 다.
즉,testx
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
C 언어 구현 천둥 제거 게임 상세 정보먼저 작은 메뉴를 표시하고 게임을 할지 여부를 선택하십시오.사용자가 종료를 선택하면 프로그램 실행이 끝나고, 사용자가 게임을 선택하면 지뢰 제거 위치 좌표를 입력하라는 메시지가 표시됩니다.사용자가 입력한 좌표가 바둑...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.