다각형 안에 점의 존재여부 판단하기

  터의 외적을 이용하면 3개의 점(A, B, C)이 이루는 삼각형 안에 또다른 점 D가 포함되어 있는지의 여부를 손쉽게 판단할 수 있다. 바로 곱하여지는 두 벡터의 위치에 따라 법선 벡터의 방향이 달라진다는 성질을 이용한 것이다. 여기선 오른손 좌표계를 이용한다고 정하자.(머 왼손 좌표계라도 상관은 없다.)


  정리하자면 A X BB X A 의 방향이 서로 반대가 된다. ( A X B = - B X A )
외적 값이 양수가 나오면 첫 번째 벡터의 왼쪽(counterclockwise)에 두 번째 벡터가 위치한다는 걸 의미한다. 음수라면 그 반대가 된다.
 

  위 삼각형 그림에서 삼각형이 XY 2차원 평면상에 있다고 한다면, 외적값의 방향은 z좌표가 음수쪽에 있는지, 양수쪽에 있는지에 따라 결정된다. 따라서 전체 외적을 계산할 필요없이 z좌표만 계산하여 3개의 z좌표중 부호가 다른 값이 나온다면(좀 더 정확히 말해서 음의 부호값이 하나라도 있다면...) 해당 점은 삼각형 바깥쪽에 위치한다고 판단할 수 있다. 왼쪽 삼각형 경우를 보면 CA벡터의 오른쪽(colckwise)에 CD벡터가 위치하므로 방향이 음수가 나온다.

  결국 위 내용을 일반화 하면 삼각형 뿐만 아니라 어떠한 다각형(Convex polygons) 안에 점이 존재하는지 여부를 쉽게 판단할 수 있다. 단, Concave polygons에는 사용할 수 없다.



Convex polygon이든 Concave polygon이든 모든 다각형에 대한 판단 방법은 아래 링크를 참고.

http://www.alienryderflex.com/polygon/
http://www.ecse.rpi.edu/Homepages/wrf/Research/Short_Notes/pnpoly.html

by 빛의탑 | 2007/01/24 00:42 | CS - 알고리즘 | 트랙백(1) | 덧글(7)

트랙백 주소 : http://lsujang.egloos.com/tb/845586
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Tracked from maddog3182님의.. at 2007/04/13 02:52

제목 : 다각형 안에 점의 존재여부 판단하기
다각형 안에 점의 존재여부 판단하기 벡터의 외적을 이용하면 3개의 점(A, B, C)이 이루는 삼각형 안에 또다른 점 D가 포함되어 있는지의 여부를 손쉽게 판단할 수 있다. 바로 곱하여지는 두 벡터의 위치에 따라 법선 벡터의 방향이 달라진다는 성질을 이용한 것이다. 여기선 오른손 좌표계를 이용한다고 정하자.(머 왼손 좌표계라도 상관은 없다.) 정리하자면 A X B 와 B X A 의 방향이 서로 반대......more

Commented by 김수연 at 2007/02/10 00:41
무슨소린지 잘 모르겠고..알고싶지도 않은 느낌-_-;;;;

쭉 둘러봤는데...어딜봐도..컴퓨터학도의 느낌이 확.~ㅋㅋㅋㅋ
Commented by 빛의탑 at 2007/02/10 12:34
ㅋㅋㅋ 나도 머 OpenGL 때문에.. 정석펴 놓고 공부중....
Commented by 김기홍 at 2007/04/13 02:53
좋은 예제 퍼갑니다. ^^
Commented by minkp at 2008/03/17 10:42
퍼가요~^^
Commented by 인수봉 at 2009/07/17 15:15
가령 ㄷ 자 모양의 다각형에서 ㄷ 자 모양의 안쪽에 위치한 점이지만 ㄷ 자 다각형 안에는 포함되지 않는 점의 위치도 파악할 수 있나요?
Commented by 인수봉 at 2009/07/17 15:23
ㄷ 자 모양의 좌표(10,10 | 40,10 | 40,20 | 20,20 | 20,40 | 40,40 | 40,50 | 10,50 ) 이고 ㄷ 자 안의 점의 좌표는 (30,30) 인 경우 다각형 내 포함여부....
Commented by 빛의탑 at 2009/07/17 20:13
좋은 질문이십니다. 제가 조건을 하나 언급을 안했는데 위의 방법은 Convex polygons에 해당하는 도형에만 적용이 됩니다.
질문하신 concave polygon에는 적용할 수 없습니다.

ㄷ 자 형태든 아니든 모든 도형에 대한 점의 위치 파악방법은 아래 링크를 참고하시면 도움이 되실거라 생각됩니다.

http://www.alienryderflex.com/polygon/
http://www.ecse.rpi.edu/Homepages/wrf/Research/Short_Notes/pnpoly.html

:         :

:

비공개 덧글

◀ 이전 페이지          다음 페이지 ▶