OBB-OBB 충돌검사 과정 시각화
OBB-OBB 충돌검사 과정 시각화 소스코드
OBB-OBB 충돌검사 소스코드
*Separating Axis Theorem (SAT)*
두 OBB의 4꼭짓점 계산
<aside>
필요한 값들
axisX = $(cosθ, sinθ)$, axisY = $(-sinθ, cosθ)$
이렇게 구한 회전축을 기저벡터로 하는 좌표계상에서의 꼭짓점의 좌표를 구하면 됨
좌상단 꼭짓점 좌표
$(axisX×halfWidth), (axisY×halfHeight)$
우상단, 좌하단, 우하단도 이런식으로 구하면 된다. (소스코드 참고)
이렇게 구한 꼭짓점의 좌표는 원점은 OBB의 중심좌표, 월드좌표계의 기저벡터를 가지는 OBB의 로컬좌표계 상에서의 좌표
따라서 OBB의 중심좌표값을 더해서 월드좌표계상에서의 꼭짓점좌표를 구하면 됨
좌상단 꼭짓점 좌표 (월드좌표계)
$corner_0=center+(axisX×halfWidth)+(axisY×halfHeight)$
우상단, 좌하단, 우하단도 이런식으로 구하면 된다. (소스코드 참고)
두 OBB의 회전축의 기저벡터 구하기 (총 4개의 축)
두 OBB의 회전축의 기저벡터에 대해 모든 꼭짓점들을 사영(Proejction)