태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

다각형 내/외부 판정 소스

2010/06/04 10:48

폴리곤과 한 점이 있을때 그 점이 폴리곤 내부에 포함 되는지 포함되지 않는지 체크.
첫점과 끝점이 같을 필요는 없음.

bool InsidePolyCheck(GPoint pt,GPoint* poly, int polycnt)
{
	int i, j;
	bool c = false;

	GPoint Ixy;
	GPoint Jxy;

	for (i = 0, j = (polycnt - 1); i < polycnt; j = i++) 
	{
		Ixy.x = poly[i].x;
		Ixy.y = poly[i].y;
		Jxy.x = poly[j].x;
		Jxy.y = poly[j].y;

		if ((((Ixy.y <= pt.y) && (pt.y < Jxy.y)) || ((Jxy.y <= pt.y) && ( pt.y < Ixy.y))) &&
			(pt.x < (Jxy.x - Ixy.x) * (pt.y - Ixy.y) / (Jxy.y - Ixy.y) + Ixy.x))
			c = !c;
	}
	return c;
}
크리에이티브 커먼즈 라이선스
Creative Commons License

유리한 코드창고