삼각형 안에 점이 있는지 확인하는 방법
삼각메쉬 안에 버텍스가 포함되어 있는지는 외적과 내적을 이용하면 확인 할 수 있습니다.
다음 삼각 메쉬에 파란색 점이 밖에 있습니다.
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 |