반응형
for (int i=0; i<(m_pSHP_PolyShapeZ[nRecord].nNumPoints - 1); i++)
{
double x1 = m_pSHP_PolyShapeZ[nRecord].pPoints[i].x;
double y1 = m_pSHP_PolyShapeZ[nRecord].pPoints[i].y;
double x2 = m_pSHP_PolyShapeZ[nRecord].pPoints[i+1].x;
double y2 = m_pSHP_PolyShapeZ[nRecord].pPoints[i+1].y;
if ( (y1 <= lat && lat <= y2) || (y2 <= lat && lat <= y1) )
{
if (x1 + (lat - y1) / (y2 - y1) * (x2 - x1) < lon )
{
bRes = !bRes;
}
}
}
return bRes;
설명 : 점(a, b)을 기준으로 y=b 직선을 그어 도형과의 접점수를 파악하고
점을 기준으로 왼쪽 또는 오른쪽 한쪽만 접점을 카운트하여
홀수이면 도형안에 점이 있는것으로 파악
반응형
'프로그래머의 길 > C & C++' 카테고리의 다른 글
직선의 방정식 및 제3의 점과의 거리 (0) | 2016.01.22 |
---|---|
edit 엔터 받아서 처리(상속 안받고 처리) (0) | 2015.10.01 |
라인 선택 함수 (0) | 2015.05.27 |
[VC++ / MFC] DTED 데이터를 이용한 OpenGL 3D 지형 엔진 (0) | 2013.07.27 |
위경도 두점 사이의 거리 각도 계산 (0) | 2012.12.06 |