AABB( Axis Aligned Bounding Box)는 축에 정렬된 상태이기 때문에
박스가 회전하지 않고 축 방향으로 이동만 하여 위치를 잡게 된다.
그러므로 AABB의 두가지 요소 Min, Max값을 이용하여 각각의 축에 대하여 1차원적인 비교만 하면 된다.
bool AABBToAABB(AABB* pAABB1, AABB* pAABB2)
{
//x축에 대하여
if( pAABB1->Max.x < pAABB2->Min.x ||
pAABB1->Min.x < pAABB2->Max.x )
return false;
//y축에 대하여
if( pAABB1->Max.y < pAABB2->Min.y ||
pAABB1->Min.y < pAABB2->Max.y )
return false;
//z축에 대하여
if( pAABB1->Max.z < pAABB2->Min.z ||
pAABB1->Min.z < pAABB2->Max.z )
return false;
return true;
}
참고 문헌:
3D 게임 프로그래밍 & 컴퓨터 그래픽을 위한 수학(2판)
(Eric Lengyel저, 류광 역, 정보문화사)
3D 게임 프로그래밍 & 컴퓨터 그래픽을 위한 수학(2판)
(Eric Lengyel저, 류광 역, 정보문화사)
REAL-TIME RENDERING 2판
(Tomas;Eric 공저, 신병석;오경수 공역, 정보문화사)
REAL-TIME COLLISION DETECTION
(Christer Ericson저, Morgan Kaufmann Publishers)
(Christer Ericson저, Morgan Kaufmann Publishers)
댓글 없음:
댓글 쓰기