직선과 원기둥
-
[RT] Ray 와 Cylinder 의 충돌판정과제/miniRT 2021. 1. 13. 22:23
P2 -> Ray 의 충돌지점 따라서 P2 = O + td 가 된다. 여기서 O는 ray가 출발한 위치, d 는 unit_vector 로, ray의 방향이 된다. 이때 실린더 내부 중앙선에 존재하는 임의의 점 P1을 잡고, 실린더 아래 disk 의 센터 지점을 C라 놓으면, P1 = C + hn 이 된다. 이때 n은 실린더 위 disk 의 법선벡터 이다. 이러면 미지수가 2개가 되는데, h 와 t 이다. 우리가 구하고 싶은 것은 t 이므로 (P2 - C) · n = h 이므로 이를 이용하여 t를 h에 대해서 정리 할 수 있다. 또한 | P2 - P1 |^2 = R^2 이므로, 이를 이용하여 t를 구할 수 있다. 결국 2차원 방정식 ax^2 + bx + c = 0 이라는 식에 a,b,c 값을 구하는 것으로..