오다기리 박의 알고리즘 노트

직선과 삼각형의 교차점 구하기 본문

컴퓨터 그래픽스/메쉬 기하학

직선과 삼각형의 교차점 구하기

오다기리 박 2022. 1. 25. 18:47

일반적으로 직선과 삼각형의 교차점을 구할 때 가장 먼저 직선과 삼각형이 포함된 평면과의 교차점을 먼저 계산한다.

그 다음에 교차점과 삼각형 정점들을 좌표 평면들(xy, yz, xz) 중 하나에 투영시킨다. 이 때 투영면은 삼각형의 면적을 최대화하도록 한다. 이렇게 2차원 문제로 축소시켜서 2차원 점이 2차원 삼각형 내부에 있는 판단하면 된다.

 

 

다음과 같이 3차원 공간에서 직선과 삼각형이 정의된다고 하자.

 

 

 

 

여기서 α, βα >= 0, β >= 0, α + β <= 1 를 만족하는 삼각형의 무게중심 좌표(barycentric coordinates) 이다. 

 

 

직선과 삼각형의 교차점을 계산하기 위해 다음 방정식을 세운다.

 

 

 

 

즉, 선형 시스템을 풀어서 무게중심 좌표 α, β 와 직선의 파라미터 t 를 구할 수 있다. 

그리고 크래머 공식에 의해 다음과 같이 구해진다.

 

 

 

 

det은 스칼라 삼중곱으로 계산하고, 외적에서 두 벡터의 순서가 바뀌면 -가 붙기 때문에 위 식을 다음과 같이 다시 쓸 수 있다.

 

 

 

 

 

 

[참고] Real-time rendering. Akenine-Moller, Tomas, Eric Haines, and Naty Hoffman.