2 min read

원과 원 충돌 체크하는 방법

원과 원의 출돌 체크는 매우 깔끔하게 처리할수 있다.

두개의 원이 있고 반지름이 각각 R1 ,R2가 있다.

여기서 충돌했을때의 그림을 보자

직관적으로 두개의 중심의 거리보다 반지름의 합보다 작은걸 알수있다.

좀더 자세히 보기위해 태그를 추가했다.

두 거리는 아래의 공식으로 쉽게 구할수 있다.

거기에 두개의 반지름의 합보다 거리의 값이 작으면 충돌이 발생했다는 것이다.

하지만 이와같은식 을 컴퓨터로 구현할려면 Sqrt라는 써야하는데 이 함수는 컴퓨팅 파워를 많이써야하고 근사치이기 때문에 전체를 제곱하여 루트를 없애주자

컴퓨터 공학에서는 아래와 같은 코드를 작성할수 있다.

Vector2 diff = a.GetCenter() - b.GetCenter();
float centerLength = diff.LengthSq();
float radiiSq = a.GetRadius() + b.GetRadius();
radiiSq *= radiiSq;
return centerLength <= radiiSq;