본문 바로가기
프로그래머의 길/C & C++

점이 도형 안에 있는가 없는가?

by 하늘아래. 2016. 1. 22.
반응형

 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 직선을 그어 도형과의 접점수를 파악하고

점을 기준으로 왼쪽 또는 오른쪽 한쪽만 접점을 카운트하여

홀수이면 도형안에 점이 있는것으로 파악

반응형