2. CastRay
1. Ray의 수학적 정의

- O(Origin): 레이의 시작점
- D(Direction): 방향 벡터(단위 벡터)
- t(Parameter): 시작점으로 부터의 거리
- t < 0: 시작점 뒤쪽
- t == 0: 시작점 위치
- 0 < t < RayLength: 레이 선상에 있음
Jolt의 Fraction = t / RayLength
2. Sphere와의 충돌: 2차 방정식의 해
- 구 방정식

- 레이 방정식 대입

- t 가 허근: 충돌x
- t 가 중근: 한점에서 만남
- t 가 두개의 근: 두점에서 만남.
3. 평면 및 삼각형과 충돌: 내적
-
평면 방정식

-
레이 방정식 대입


이 경우, 레이와 평면이 평행 -
내부 판정: 무게 중심 좌표 시스템을 사용해 판정
4. AABB/OBB와의 충돌: Slap Test
박스를 X, Y, Z축 방향으로 무한히 늘린 3쌍의 평면(Slab)으로 생각
- 레이가 X축 평면 두 장 사이를 지나는 구간 [t_XMin, t_XMax]를 구한다
- Y축, Z축에 대해서도 구간을 구한다.
- 이 세 구간의 교집합이 존재한다면 레이가 박스를 관통한 것
AABB: 월드 축이 고정되어 있어서 계산이 매우 빠름
OBB: 레이를 박스의 로컬 좌표계로 변환(Inverse Transform)한 뒤 AABB처럼 계산
5. Convex와의 충돌: GJK 알고리즘
- 민코프스키 차(Minkowski Difference): 물체 A의 모든 점에서 물체 B의 모든 점을 뺍니다. 두 물체가 충돌 중이라면 이 결과물인 새로운 도형은 반드시 원점(Origin) 을 포함하게 됩니다.
- 심플렉스(Simplex): 도형 내부에서 점, 선, 면, 사면체를 차례로 만들어가며 원점을 가두는지 테스트합니다.
- 레이캐스트 응용: 레이를
에서 까지 움직이는 점(또는 아주 얇은 캡슐)으로 보고 원점에 가장 빨리 근접하는 를 찾아냅니다.
https://gall.dcinside.com/mgallery/board/view/?id=game_dev&no=160927