삼각형 안에 점이 있는지 확인하는 방법

 

 

삼각메쉬 안에 버텍스가 포함되어 있는지는 외적과 내적을 이용하면  확인 할 수 있습니다.

 

다음 삼각 메쉬에 파란색 점이 밖에 있습니다.

ab = A점에서 B점으로 가는 벡터

ac = A점에서 C점으로 가는 벡터

at = A점에서 T타겟으로 가는 벡터

cross = 외적의 결과 값


 

외적의 특성상 들어오는 벡터의 방향에 따라 외적의 위치가 변경됩니다.

이를 이용해 내외부를 판별 하는 것입니다.

한점에서 나오는 2선분을 기준으로해서 점을 외적 합니다.

 

왼쪽 외적 결과 : cross ab at

오른쪽 외적 결과 : cross at ac

구가 내부에 있다면 외적의 방향이 같은 방향을 보게 됩니다.

 

 

위와 같은 순서로 외적을 합니다.

왼쪽 외적 결과 : cross ab at

오른쪽 외적 결과 : cross at ac

구가 외부에 있을 때 외적의 결과가 반대로 나오죠.

 

 

이렇게 나온 외적을 한번 더 내적 합니다.

내적을 하는 이유는 하나의 기준 벡터에서 대상 벡터가 90도를 넘을 때 내적의 값이 음수가 나오게 됩니다.

구가 외부에 있을 때 내적의 결과가 반대로 나오게 되죠.

내적을 이용하면 간단하게 내외부를 판별 할 수 있습니다.

 

dot(cross ab at) (cross at ac)

 

한 점만을 기준으로 삼으면 예외 상황이 발생하기에 3점을 모두 검사해야 합니다.

3점의 결과가 모두 양수이면 내부에 있다 할 수 있겠죠.

 

 

 

 

'Max' 카테고리의 다른 글

은면제거(Hidden Surface Deleter)  (0) 2013.12.24
맥스안에 있는 에디터 창이 안 보일 때  (0) 2013.12.12
MaxScirpt Exception Log 남기기  (0) 2013.12.04
MaxScript로 Dll Load 하기  (0) 2013.11.29
MaxScript) SVN 접근하기  (0) 2013.11.26
Posted by Hwanggoon
,