2014년 1월 22일 수요일

박스(AABB, OBB)의 반지름 구하기 (Radius of AABB and OBB)

벡터 n에 투영한 박스(AABB, OBB)의 반지름 구하기

먼저 박스의 각 축을 다음과 표시한다.


각 축의 길이는 다음과 같이 표시한다.























그래서 박스의 포함된 점R은 다음식으로 나타낼 수 있다.






c: center of a box

따라서 박스의 외곽을 구성하는 8개의 점은 아래와 같이 된다.






박스의 반지름을 구하기 위해서는 반지름을 만들어낼 벡터n을 선택한 후
벡터n에 투영하여 구하면 된다.







이렇게 박스의 8개 점을 모두 투영하고 하나를 선택하여 사용한다.
투영된 길이 중에서 최대 값을 사용하여야 박스의 모든 점을 포함하는
최대 반지름값을 얻을 수 있게 된다.

그럼 위 식에서 최대 반지름을 만족 시키기 위해서
먼저 각 축의 길이는 모두 양의 값을 가지게 된다.
그래서 위 식을 아래와 같이 정리할 수 있다.








만약 벡터n이 단위 벡터가 아닌 경우 n의 크기로 나누어 주면 된다.





참고자료
Essential Mathematics For Games And Interactive Applications
3D 게임 프로그래밍 & 컴퓨터 그래픽을 위한 수학 제2판
Real-Time Rendering 2판

댓글 없음:

댓글 쓰기