- GJK 알고리듬은 두 도형이 겹치는지 확인하는 방법
- 도형 A와 도형 B가 겹치는지 확인하려면, 두 도형의 점 중 하나라도 겹치는지 확인하면 됨
Minkowski 차집합
- 두 도형의 모든 점을 빼서 새로운 집합을 만듦.
- 이 새로운 집합에 원점이 포함되면 두 도형이 겹친다는 의미임.
- 이를 Minkowski 차집합이라 부름.
알고리듬의 기본 아이디어
- A와 B의 Minkowski 차집합이 원점을 포함하는지 확인함.
- 차집합이 원점을 포함하면 두 도형이 겹침.
알고리듬 단계
- 초기화: 임의의 방향 벡터
d를 설정하고, 첫 번째 점p를 찾음. - 점 찾기:
d와p의 내적을 계산하여 양수이면 계속 진행, 음수이면 종료. - 새 점 추가:
p에서 원점 방향으로 새로운 점을 찾음. - 단순화: 첫 번째 두 점을 기준으로 새로운 점을 추가하여 단순화함.
- 원점 포함 여부 확인: 단순화된 도형이 원점을 포함하는지 확인함.
- 반복: 원점을 포함할 때까지 또는 포함하지 않는다는 증거를 찾을 때까지 반복함.
GN⁺의 의견
- 흥미로운 점: GJK 알고리듬은 복잡한 문제를 간단한 수학적 변환으로 해결하는 좋은 예시임.
- 도움이 되는 이유: 충돌 감지와 같은 실시간 그래픽스에서 매우 유용하게 사용됨.
- 비판적 시각: 알고리듬의 구현이 복잡할 수 있으며, 정확한 이해가 필요함.
- 관련 기술: 다른 충돌 감지 알고리듬으로는 SAT(Separating Axis Theorem) 등이 있음.
- 고려 사항: GJK 알고리듬을 사용할 때는 도형의 복잡성과 계산 비용을 고려해야 함.