벡터 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판
댓글 없음:
댓글 쓰기