일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- shader
- 셰이더프로그래밍
- 베지에 곡선
- 윈도우프로그래밍
- 컴퓨터 구조
- modeling
- Graphics
- Mesh Processing
- c4d
- 윈도우 프로그래밍
- 오픈지엘
- bezier curve
- 윈도우
- 운영체제
- Win32 API
- 윈도우 구조
- win32
- denoising
- 그래픽스
- 그래픽스기초
- 컴퓨터 아키텍쳐
- 렌더링
- shader programming
- MFC 윈도우 프로그래밍
- 셰이더
- window programming
- Geometry Modeling
- OpenGL
- 핵심 API로 배우는 윈도우프로그래밍
- MFC
- Today
- Total
오다기리 박의 알고리즘 노트
폴리곤과 평면의 위치 관계 본문
폴리곤이 평면에 대하여 어느 쪽에 위치하는지 알아보려면 각 점을 모두 평면의 방정식에 대입해보아야 한다. 다시 말해 평면에 대한 점의 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.
'컴퓨터 그래픽스 > 메쉬 기하학' 카테고리의 다른 글
메쉬 위의 발산(Divergence) (0) | 2023.03.14 |
---|---|
메쉬 위의 그래디언트(Gradient) (0) | 2023.02.01 |
평면 기반 폴리곤 표현법 (plane-based polygon) (2) | 2022.12.06 |
평면으로 폴리곤 자르기 (split polygon against plane) (0) | 2022.12.06 |
이진 공간 분할 트리 (BSP Tree) (0) | 2022.10.13 |