캡슐과 캡슐의 충돌 검사 알고리즘을 제대로 표현하면 다음과 같이 설명할 수 있다.
1. 캡슐의 정의
캡슐은 두 구를 직선으로 연결한 형태의 3D 기하학적 객체이다. 이를 수학적으로 표현하면: - 각 캡슐은 두 점 P_1과 P_2로 정의된 선분과, 그 선분의 각 끝점에 위치한 반지름 r을 가진 구로 구성된다. - 선분 P_1P_2는 캡슐의 중심 축 역할을 하며, 반지름 r을 가진 구는 캡슐의 표면을 형성한다.
즉, 각 캡슐은 다음과 같이 표현된다: - 캡슐 A는 점 A_1과 A_2로 정의된 선분과 반지름 r_A. - 캡슐 B는 점 B_1과 B_2로 정의된 선분과 반지름 r_B.
2. 두 선분 사이의 최소 거리 계산
두 캡슐의 축(선분) A_1A_2와 B_1B_2 사이의 가장 가까운 점을 계산해야 한다. 이를 통해 두 선분 간의 최소 거리를 구하고, 그 거리가 각 캡슐의 반지름의 합보다 작은지를 판단하여 충돌 여부를 결정한다.
선분 간의 최소 거리 공식
두 선분의 각 점을 매개변수로 나타낼 수 있다: - 선분 A_1A_2에서 한 점은 A(s) = A_1 + s(A_2 - A_1), 여기서 0 \leq s \leq 1. - 선분 B_1B_2에서 한 점은 B(t) = B_1 + t(B_2 - B_1), 여기서 0 \leq t \leq 1.
이때, 두 선분 사이의 거리 함수는 다음과 같다:
이를 최소화하는 s와 t 값을 찾으면 두 선분 사이의 최소 거리를 구할 수 있다. 이를 위해 미분을 이용한 최적화 기법을 사용할 수 있으며, 두 선분 간의 최단 거리 공식으로 바로 구할 수도 있다.
3. 충돌 여부 판정
최소 거리를 계산한 후, 그 거리가 두 캡슐의 반지름의 합보다 작거나 같다면 충돌이 발생한 것이다:
이 조건이 성립하면 두 캡슐이 충돌한 것으로 판정된다.
4. 충돌 검사 최적화
두 캡슐 간의 충돌 검사는 각 선분 간의 거리 계산이므로, 반복적으로 여러 충돌 검사를 수행해야 하는 상황에서는 성능 최적화를 고려해야 한다. 이때, AABB(축 정렬 경계 상자, Axis-Aligned Bounding Box) 나 바운딩 볼륨 계층(BVH) 과 같은 방법을 사용하여 충돌 검사의 범위를 좁히면 효율성을 높일 수 있다.
- 두 캡슐의 중심 축을 각각 선분으로 정의한다.
- 두 선분 사이의 최단 거리를 계산한다.
- 그 거리가 두 캡슐의 반지름의 합보다 작으면 충돌로 판정한다.
이 과정은 충돌 검사에서 매우 효율적인 방식으로, 물리 시뮬레이션이나 게임 개발에서 자주 사용된다.