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

폴리곤과 평면의 위치 관계 본문

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

폴리곤과 평면의 위치 관계

오다기리 박 2022. 12. 6. 18:19

 

 

폴리곤이 평면에 대하여 어느 쪽에 위치하는지 알아보려면 각 점을 모두 평면의 방정식에 대입해보아야 한다. 다시 말해 평면에 대한 점의 signed distance를 계산해 봐야 한다.

 

 

만약 모든 점에서 평면까지의 signed distance가 모두 양수라면 그 폴리곤은 평면의 위쪽(+)에 위치할 것이고 양수, 음수가 섞여있다면 폴리곤은 평면에 걸쳐있는 상태일 것이다. 

 

 

signed distance가 모두 0이라면? 그 폴리곤은 평면에 완전히 포함되어 있을 것이다. 하지만 이론상으로나 그렇지 프로그래밍을 할 때에는 수치 정밀도를 정해서 판단하는 것이 좋다.

 

 

폴리곤과 평면의 위치 관계는 다음 네가지 중 하나에 해당된다.

 

 

1. 폴리곤이 평면 앞(+)에 위치한 경우

2. 폴리곤이 평면 뒤(-)에 위치한 경우

3. 폴리곤이 평면에 걸친 경우

4. 폴리곤이 평면에 완전히 포함한 경우 (=동일 평면상에 위치)

 

 

쉬워보이지만, 말했듯이 수치 계산 측면에서 어려울 수 있다. 폴리곤이 계산상 4번으로 분류되었다고 해도, 실제로는 약간 떨어진 거리에 있을 수도 있다. 폴리곤의 위치를 4가지로 확실히 분류하려면 수치 오류를 최소화 해야한다.

 

 

그래서 평면에 두께를 주는 방법이 있다. 평면에 대하여 점의 위치를 판별할 때 "점에서 평면까지의 signed distance의 절댓값 < epsilon" 와 같이 검사를 하는 것이다.

 

 

예를 들어 아래 그림같은 경우 가운데 직선은 평면을 나타내며 양쪽 점선은 두께를 표시한 것이다. 이런 상황에서 삼각형 ABC는 평면 뒤(-), DEF는 평면 앞(-), GHI는 걸친 상태, JKL은 평면에 포함(0)되게 된다.

 

 

 

 

[참고]

[1] Ericson, Christer. Real-time collision detection. Crc Press, 2004.