AABB의 점들 중에서 구의 중심과 거리가 가장 가까운 점을
찾아서 충돌 확인한다.
AABB이므로 각 축별로 구의 중심과 거리를 확인한다.
구의 중심이 v_min과 v_max 사이에 있을 경우는 서로 교차하므로
따로 검사가 필요 없다.
-->
bool CollisionSphereAABB(Sphere& s, AABB& aabb) { float dist = 0.0f; for(int i=0; i<3; i++) { if( s.center[i] < aabb.v_min[i] ) { d += ((aabb.v_min[i] - s.center[i]) * (aabb.v_min[i] - s.center[i])); } else if( s.center[i] > aabb.v_max[i] ) { d += ((s.center - aabb.v_max[i]) * (s.center - aabb.v_max[i])); } } if( dist > s.center * s.center ) return false; return true; }
참고 문헌
Real-Time Rendering 2판
Real-Time Collision Detection
댓글 없음:
댓글 쓰기